00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #ifndef __GUIENVIRONMENT_H__
00013 #define __GUIENVIRONMENT_H__
00014 #include <wx/app.h>
00015 #include <wx/aui/auibook.h>
00016 #include <wx/hashmap.h>
00017 #include <wx/spinbutt.h>
00018 #include "environment.h"
00019
00020
00022 #ifndef REGISTER_PARAM_GUI_TEXTCONTROL
00023 #define REGISTER_PARAM_GUI_TEXTCONTROL(paramId, pName, value, pDescription) \
00024 { paramId.poolName=GetName();\
00025 paramId.paramName=pName;\
00026 paramId.instName=wxString::Format(wxT("%i"), GetID().GetInstanceID());\
00027 paramId.description=pDescription;\
00028 REGISTER_PARAM(paramId, value);\
00029 GUIEnvironment::GUIParamInfo guiPI(paramId, GUIEnvironment::GUIParamInfo::GUI_TYPE_TEXTCONTROL); \
00030 wxCommandEvent paramGuiEvt = Event::GET_EVT_PARAM_GUIREGISTER(guiPI, value); \
00031 PostToKernel(paramGuiEvt); }
00032 #endif // REGISTER_PARAM_GUI_TEXTCONTROL
00033
00035 #ifndef REGISTER_PARAM_GUI_CHECKBOX
00036 #define REGISTER_PARAM_GUI_CHECKBOX(paramId, pName, value, pDescription) \
00037 { paramId.poolName=GetName();\
00038 paramId.paramName=pName;\
00039 paramId.instName=wxString::Format(wxT("%i"), GetID().GetInstanceID());\
00040 paramId.description=pDescription;\
00041 REGISTER_PARAM(paramId, value); \
00042 GUIEnvironment::GUIParamInfo guiPI(paramId, GUIEnvironment::GUIParamInfo::GUI_TYPE_CHECKBOX); \
00043 wxCommandEvent paramGuiEvt = Event::GET_EVT_PARAM_GUIREGISTER(guiPI, value); \
00044 PostToKernel(paramGuiEvt); }
00045 #endif // REGISTER_PARAM_GUI_CHECKBOX
00046
00048 #ifndef REGISTER_PARAM_GUI_SLIDER
00049 #define REGISTER_PARAM_GUI_SLIDER(paramId, pName, value, minValue, maxValue, pDescription) \
00050 { paramId.poolName=GetName();\
00051 paramId.paramName=pName;\
00052 paramId.instName=wxString::Format(wxT("%i"), GetID().GetInstanceID());\
00053 paramId.description=pDescription;\
00054 REGISTER_PARAM(paramId, value); \
00055 GUIEnvironment::GUIParamInfo guiPI(paramId, GUIEnvironment::GUIParamInfo::GUI_TYPE_SLIDER); \
00056 guiPI.minval = minValue; \
00057 guiPI.maxval = maxValue; \
00058 wxCommandEvent paramGuiEvt = Event::GET_EVT_PARAM_GUIREGISTER(guiPI, value); \
00059 PostToKernel(paramGuiEvt); }
00060 #endif // REGISTER_PARAM_GUI_SLIDER
00061
00063 #ifndef REGISTER_PARAM_GUI_SPINCONTROL
00064 #define REGISTER_PARAM_GUI_SPINCONTROL(paramId, pName, value, minValue, maxValue, pDescription) \
00065 { paramId.poolName=GetName();\
00066 paramId.paramName=pName;\
00067 paramId.instName=wxString::Format(wxT("%i"), GetID().GetInstanceID());\
00068 paramId.description=pDescription;\
00069 REGISTER_PARAM(paramId, value); \
00070 GUIEnvironment::GUIParamInfo guiPI(paramId, GUIEnvironment::GUIParamInfo::GUI_TYPE_SPINCONTROL); \
00071 guiPI.minval = minValue; \
00072 guiPI.maxval = maxValue; \
00073 wxCommandEvent paramGuiEvt = Event::GET_EVT_PARAM_GUIREGISTER(guiPI, value); \
00074 PostToKernel(paramGuiEvt); }
00075 #endif // REGISTER_PARAM_GUI_SPINCONTROL
00076
00077
00078
00079
00080
00081
00082
00083
00084
00085
00086
00087
00088
00089
00090
00092 #ifndef REGISTER_PARAM_GUI_COMBOBOX
00093 #define REGISTER_PARAM_GUI_COMBOBOX(paramId, pName, value, possibilities, pDescription) \
00094 { paramId.poolName=GetName();\
00095 paramId.paramName=pName;\
00096 paramId.instName=wxString::Format(wxT("%i"), GetID().GetInstanceID());\
00097 paramId.description=pDescription;\
00098 REGISTER_PARAM(paramId, value); \
00099 GUIEnvironment::GUIParamInfo guiPI(paramId, GUIEnvironment::GUIParamInfo::GUI_TYPE_COMBOBOX); \
00100 guiPI.values = possibilities; \
00101 wxCommandEvent paramGuiEvt = Event::GET_EVT_PARAM_GUIREGISTER(guiPI, value); \
00102 PostToKernel(paramGuiEvt); }
00103 #endif // REGISTER_PARAM_GUI_COMBOBOX
00104
00106 #ifndef REGISTER_PARAM_GUI_BUTTON
00107 #define REGISTER_PARAM_GUI_BUTTON(paramId, pName, pDescription) \
00108 { paramId.poolName=GetName();\
00109 paramId.paramName=pName;\
00110 paramId.instName=wxString::Format(wxT("%i"), GetID().GetInstanceID());\
00111 paramId.description=pDescription;\
00112 REGISTER_PARAM(paramId, wxT("0")); \
00113 GUIEnvironment::GUIParamInfo guiPI(paramId, GUIEnvironment::GUIParamInfo::GUI_TYPE_BUTTON); \
00114 wxCommandEvent paramGuiEvt = Event::GET_EVT_PARAM_GUIREGISTER(guiPI, wxT("0")); \
00115 PostToKernel(paramGuiEvt); }
00116 #endif // REGISTER_PARAM_GUI_BUTTON
00117
00118 namespace VRUT
00119 {
00121 class GUIEnvironment : public wxAuiNotebook
00122 {
00123 public:
00125 struct GUIParamInfo
00126 {
00128 Parameter::ParameterIdentificator paramID;
00130 enum GUI_CONTROL_TYPE
00131 {
00132 GUI_TYPE_TEXTCONTROL,
00133 GUI_TYPE_CHECKBOX,
00134 GUI_TYPE_SLIDER,
00135 GUI_TYPE_SPINCONTROL,
00136
00137
00138 GUI_TYPE_COMBOBOX,
00139 GUI_TYPE_BUTTON
00140 } type;
00142 double minval;
00144 double maxval;
00146 double step;
00148 wxArrayString values;
00149
00151 GUIParamInfo() :
00152 paramID(), type(GUI_TYPE_TEXTCONTROL), step(1.0) {minval = 0.0; maxval = 100.0;}
00154 GUIParamInfo(const Parameter::ParameterIdentificator & _paramID, GUI_CONTROL_TYPE _type)
00155 : paramID(_paramID), type(_type), step(1) {minval = 0; maxval = 100;}
00157 GUIParamInfo(const GUIParamInfo & guiPI)
00158 : paramID(guiPI.paramID),
00159 type(guiPI.type),
00160 step(guiPI.step),
00161 values(guiPI.values) {minval = guiPI.minval, maxval = guiPI.maxval;}
00162 };
00163
00164 protected:
00166 WX_DECLARE_STRING_HASH_MAP(GUIParamInfo, GUIInfoList);
00168 GUIInfoList controlsInfo;
00169
00171 void onCommandEvent(wxCommandEvent & evt);
00172
00173 public:
00175 GUIEnvironment(wxWindow * parent);
00177 ~GUIEnvironment();
00178
00180 wxControl * GetControl(const Parameter::ParameterIdentificator & paramID);
00182 void ShowParams(const Parameter::ParameterIdentificator & paramID);
00186 void HideParams(const Parameter::ParameterIdentificator & paramID, bool unregister = false);
00191 bool RegisterGUIParam(const GUIParamInfo & paramInfo, const wxString & value);
00193 void SetParam(const Parameter::ParameterIdentificator & paramID, const wxString & value);
00194 };
00195 };
00196
00197
00198 #endif