00001 00004 00005 // 00006 // Copyright (c) 1999-2004 California Institute of Technology 00007 // Copyright (c) 2004-2007 University of Southern California 00008 // Rob Peters <rjpeters at usc dot edu> 00009 // 00010 // created: Tue Nov 9 15:30:54 1999 00011 // commit: $Id: eventresponsehdlr.h 10065 2007-04-12 05:54:56Z rjpeters $ 00012 // $HeadURL: file:///lab/rjpeters/svnrepo/code/trunk/groovx/src/visx/eventresponsehdlr.h $ 00013 // 00014 // -------------------------------------------------------------------- 00015 // 00016 // This file is part of GroovX. 00017 // [http://ilab.usc.edu/rjpeters/groovx/] 00018 // 00019 // GroovX is free software; you can redistribute it and/or modify it 00020 // under the terms of the GNU General Public License as published by 00021 // the Free Software Foundation; either version 2 of the License, or 00022 // (at your option) any later version. 00023 // 00024 // GroovX is distributed in the hope that it will be useful, but 00025 // WITHOUT ANY WARRANTY; without even the implied warranty of 00026 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00027 // General Public License for more details. 00028 // 00029 // You should have received a copy of the GNU General Public License 00030 // along with GroovX; if not, write to the Free Software Foundation, 00031 // Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. 00032 // 00034 00035 #ifndef GROOVX_VISX_EVENTRESPONSEHDLR_H_UTC20050626084015_DEFINED 00036 #define GROOVX_VISX_EVENTRESPONSEHDLR_H_UTC20050626084015_DEFINED 00037 00038 #include "rutz/tracer.h" 00039 00040 #include "visx/responsehandler.h" 00041 00042 namespace rutz 00043 { 00044 class fstring; 00045 } 00046 00048 00093 00094 00095 class EventResponseHdlr : public ResponseHandler 00096 { 00097 public: 00100 static rutz::tracer tracer; 00101 00102 protected: 00104 EventResponseHdlr(); 00105 00106 public: 00108 static EventResponseHdlr* make(); 00109 00111 virtual ~EventResponseHdlr() throw(); 00112 00113 virtual io::version_id class_version_id() const; 00114 virtual void read_from(io::reader& reader); 00115 virtual void write_to(io::writer& writer) const; 00116 00118 // manipulators/accessors // 00120 00122 void setInputResponseMap(const rutz::fstring& responseMap); 00123 00125 bool getUseFeedback() const; 00126 00128 void setUseFeedback(bool val); 00129 00131 const char* getFeedbackMap() const; 00132 00134 void setFeedbackMap(const char* feedbackMap); 00135 00139 const rutz::fstring& getEventSequence() const; 00140 00144 void setEventSequence(const rutz::fstring& seq); 00145 00149 const rutz::fstring& getBindingSubstitution() const; 00150 00158 void setBindingSubstitution(const rutz::fstring& sub); 00159 00162 rutz::fstring getResponseProc() const; 00163 00167 void setResponseProc(const rutz::fstring& args, const rutz::fstring& body); 00168 00171 void abortInvalidResponses(); 00172 00175 void ignoreInvalidResponses(); 00176 00181 void setMaxResponses(unsigned int count); 00182 00184 unsigned int getMaxResponses() const; 00185 00187 // Actions // 00189 00190 virtual void rhBeginTrial(nub::soft_ref<Toglet> widget, Trial& trial) const; 00191 virtual void rhAbortTrial() const; 00192 virtual void rhEndTrial() const; 00193 virtual void rhHaltExpt() const; 00194 virtual void rhAllowResponses(nub::soft_ref<Toglet> widget, 00195 Trial& trial) const; 00196 virtual void rhDenyResponses() const; 00197 00198 private: 00199 EventResponseHdlr(const EventResponseHdlr&); 00200 EventResponseHdlr& operator=(const EventResponseHdlr&); 00201 00202 class Impl; 00203 Impl* const rep; 00204 }; 00205 00206 00207 static const char __attribute__((used)) vcid_groovx_visx_eventresponsehdlr_h_utc20050626084015[] = "$Id: eventresponsehdlr.h 10065 2007-04-12 05:54:56Z rjpeters $ $HeadURL: file: 00208 #endif // !GROOVX_VISX_EVENTRESPONSEHDLR_H_UTC20050626084015_DEFINED