00001
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00033
00034 #ifndef GROOVX_VISX_TCLPKG_EXPT_CC_UTC20050628171008_DEFINED
00035 #define GROOVX_VISX_TCLPKG_EXPT_CC_UTC20050628171008_DEFINED
00036
00037 #include "visx/tclpkg-expt.h"
00038
00039 #include "nub/ref.h"
00040
00041 #include "tcl/itertcl.h"
00042 #include "tcl/objpkg.h"
00043 #include "tcl/pkg.h"
00044 #include "tcl/tracertcl.h"
00045
00046 #include "tcl-gfx/toglet.h"
00047
00048 #include "rutz/fstring.h"
00049 #include "rutz/sfmt.h"
00050
00051 #include "visx/exptdriver.h"
00052
00053 #include "rutz/trace.h"
00054
00055 using rutz::fstring;
00056
00057 namespace
00058 {
00059
00060
00061
00062
00063
00064 void beginExpt(nub::ref<ExptDriver> xp)
00065 {
00066 nub::soft_ref<Toglet> w = xp->getWidget();
00067
00068
00069 w->bind("<Control-KeyPress-b>",
00070 rutz::sfmt("-> %lu takeFocus; -> %lu begin",
00071 w.id(), xp.id()));
00072
00073
00074 w->bind("<Control-KeyPress-q>",
00075 rutz::sfmt("-> %lu halt; -> %lu storeData; exit",
00076 xp.id(), xp.id()));
00077
00078
00079 w->bind("<Control-Alt-KeyPress-x>", "exit");
00080
00081
00082 w->bind("<Control-KeyPress-s>", rutz::sfmt("-> %lu storeData", xp.id()));
00083
00084
00085 w->bind("<Control-KeyPress-c>", rutz::sfmt("-> %lu stop", xp.id()));
00086
00087
00088 w->bind("<Control-KeyPress-r>", rutz::sfmt("-> %lu reset", xp.id()));
00089
00090 #if 0
00091
00092 w->bind("<KeyPress-p>", rutz::sfmt("-> %lu pause", xp.id()));
00093 #endif
00094
00095
00096 w->takeFocus();
00097
00098 xp->edBeginExpt();
00099 }
00100
00101 void waitStartKey(nub::ref<ExptDriver> xp, const char* event)
00102 {
00103 nub::soft_ref<Toglet> w = xp->getWidget();
00104
00105
00106
00107
00108
00109
00110
00111 const fstring script =
00112 rutz::sfmt("-> %lu bind %s {}; -> %lu begin",
00113 w.id(), event, xp.id());
00114
00115 w->bind(event, script);
00116 w->takeFocus();
00117 }
00118
00119 void fakePause(nub::ref<ExptDriver>) {}
00120 }
00121
00122 extern "C"
00123 int Exptdriver_Init(Tcl_Interp* interp)
00124 {
00125 GVX_TRACE("Exptdriver_Init");
00126
00127 GVX_PKG_CREATE(pkg, interp, "ExptDriver", "4.$Revision: 10065 $");
00128 pkg->inherit_pkg("ElementContainer");
00129 tcl::def_creator<ExptDriver>(pkg);
00130 tcl::def_basic_type_cmds<ExptDriver>(pkg, SRC_POS);
00131
00132 tcl::def_tracing(pkg, ExptDriver::tracer);
00133
00134 pkg->def( "begin", "expt_id", &beginExpt, SRC_POS );
00135 pkg->def( "waitStartKey", "expt_id <event>", &waitStartKey, SRC_POS );
00136
00137 pkg->def_get_set("autosaveFile",
00138 &ExptDriver::getAutosaveFile,
00139 &ExptDriver::setAutosaveFile,
00140 SRC_POS);
00141 pkg->def_get_set("autosavePeriod",
00142 &ExptDriver::getAutosavePeriod,
00143 &ExptDriver::setAutosavePeriod,
00144 SRC_POS);
00145 pkg->def_action("claimLogFile", &ExptDriver::claimLogFile, SRC_POS);
00146 pkg->def_get_set("filePrefix",
00147 &ExptDriver::getFilePrefix,
00148 &ExptDriver::setFilePrefix,
00149 SRC_POS);
00150 pkg->def_getter("infoLog", &ExptDriver::getInfoLog, SRC_POS);
00151 pkg->def("pause", "expt_id", &fakePause, SRC_POS);
00152 pkg->def_action("storeData", &ExptDriver::storeData, SRC_POS);
00153
00154 pkg->def_get_set("widget", &ExptDriver::getWidget, &ExptDriver::setWidget, SRC_POS);
00155 pkg->def_getter("doWhenComplete", &ExptDriver::getDoWhenComplete, SRC_POS);
00156 pkg->def_setter("doWhenComplete", &ExptDriver::setDoWhenComplete, SRC_POS);
00157
00158 GVX_PKG_RETURN(pkg);
00159 }
00160
00161 static const char __attribute__((used)) vcid_groovx_visx_tclpkg_expt_cc_utc20050628171008[] = "$Id: tclpkg-expt.cc 10065 2007-04-12 05:54:56Z rjpeters $ $HeadURL: file:
00162 #endif // !GROOVX_VISX_TCLPKG_EXPT_CC_UTC20050628171008_DEFINED