MeVisLabToolboxReference
|
00001 // **InsertLicense** code 00002 //---------------------------------------------------------------------------------- 00007 00012 //---------------------------------------------------------------------------------- 00013 00014 00015 #ifndef __CSOEvent_H 00016 #define __CSOEvent_H 00017 00018 #include "../MLCSOIncludes.h" 00019 00020 00021 ML_START_NAMESPACE 00022 00023 //--------------------------------------------------------------------------- 00024 00025 typedef std::vector < int > IdVector; 00026 00027 //--------------------------------------------------------------------------- 00028 00038 class MLCSO_EXPORT CSOEvent : public BaseEvent 00039 { 00040 public: 00041 00042 // NOTE: if you change the enum CSOEventType, you need to accommodate the list of event names 00043 // in CSOManager.cpp :: baseEventCB 00044 00045 // NOTE: also accommodate the CSOEventWrapper 00046 00048 enum CSOEventType 00049 { 00050 NONE = 0, 00051 00052 MODULE_EVENT, 00053 00054 CSOLIST_EVENT_GROUP_OPEN, 00055 CSOLIST_EVENT_GROUP_CLOSE, 00056 00057 CSOLIST_CLEAR, 00058 CSOLIST_CLONE, 00059 CSOLIST_MERGE, 00060 CSOLIST_LOAD, 00061 00062 CSO_ADD, 00063 CSO_REMOVE, 00064 CSO_CLEAR, 00065 CSO_COPY, 00066 CSO_CLOSING, 00067 CSO_OPENING, 00068 CSO_GEOMETRY_CHANGE, 00069 CSO_DELETE_SEEDPOINT, 00070 CSO_MOUSE_OVER_CHANGE, 00071 CSO_SELECTION_CHANGE, 00072 CSO_USER_DATA_CHANGE, 00073 00074 CSO_VISUAL_ATTRIBUTE_CHANGE, 00075 CSO_LABEL, 00076 CSO_DESCRIPTION, 00077 CSO_TIMEPOINT_INDEX, 00078 CSO_SHOW_STATE, 00079 CSO_EDITABLE_STATE, 00080 CSO_VOXELIZE_STATE, 00081 CSO_VOXEL_WRITE_MODE, 00082 CSO_VOXEL_WRITE_VALUE, 00083 00084 GROUP_ADD, 00085 GROUP_REMOVE, 00086 GROUP_CLEAR, 00087 GROUP_COPY, 00088 CSO_ADD_TO_GROUP, 00089 CSO_REMOVE_FROM_GROUP, 00090 GROUP_SELECTION_CHANGE, 00091 GROUP_USER_DATA_CHANGE, 00092 00093 GROUP_VISUAL_ATTRIBUTE_CHANGE, 00094 GROUP_LABEL, 00095 GROUP_DESCRIPTION, 00096 GROUP_TIMEPOINT_INDEX, 00097 GROUP_SHOW_STATE, 00098 GROUP_EDITABLE_STATE, 00099 GROUP_VOXELIZE_STATE, 00100 GROUP_VOXEL_WRITE_MODE, 00101 GROUP_VOXEL_WRITE_VALUE, 00102 00103 CSO_INTERACTION, 00104 CSO_CREATION, 00105 00106 NUM_CSO_EVENTS 00107 }; 00108 00110 CSOEvent() 00111 { 00112 _isPostCommand = true; 00113 _eventType = NONE; 00114 _moduleEventGroupId = 0; 00115 } 00116 00118 CSOEvent(CSOEventType eventTypeArg, bool isPostCommandArg=true) 00119 { 00120 _eventType = eventTypeArg; 00121 _isPostCommand = isPostCommandArg; 00122 _moduleEventGroupId = 0; 00123 } 00124 00126 CSOEvent& operator = (const CSOEvent& event); 00127 00129 bool hasCSOIds() const { return _csoIds.size() > 0; } 00131 bool hasGroupIds() const { return _groupIds.size() > 0; } 00132 00134 void addCSOId(int id); 00136 void addGroupId(int id); 00137 00139 void addCSOIds(const std::vector<int>& csoIds); 00141 void addGroupIds(const std::vector<int>& groupIds); 00142 00144 const IdVector& csoIds() const { return _csoIds; } 00146 const IdVector& groupIds() const { return _groupIds; } 00147 00149 CSOEventType eventType() const { return _eventType; } 00151 void setEventType(CSOEventType eventTypeArg) { _eventType = eventTypeArg; } 00152 00154 bool isPostCommand() const { return _isPostCommand; } 00156 bool isPreCommand() const { return !_isPostCommand; } 00158 void setIsPostCommand(bool flag) { _isPostCommand = flag; } 00159 00161 void setSenderType(const std::string& senderTypeArg) { _senderType = senderTypeArg; } 00163 std::string senderType() const { return _senderType; } 00164 00166 void setSenderName(const std::string& senderNameArg) { _senderName = senderNameArg; } 00168 std::string senderName() const { return _senderName; } 00169 00171 void setCustomMessage(const std::string& customMessageArg) { _customMessage = customMessageArg; } 00173 std::string customMessage() const { return _customMessage; } 00174 00176 void setModuleEventGroupId(MLuint64 id) { _moduleEventGroupId = id; } 00178 MLuint64 moduleEventGroupId() const { return _moduleEventGroupId; } 00179 00180 ML_CLASS_HEADER(CSOEvent); 00181 00182 protected: 00183 00185 IdVector _csoIds; 00187 IdVector _groupIds; 00189 CSOEventType _eventType; 00191 bool _isPostCommand; 00192 00193 // type of event sender 00194 std::string _senderType; 00195 // instance name of event sender 00196 std::string _senderName; 00197 // some custom message if events are generated by scripting 00198 std::string _customMessage; 00199 // a unique id to check whether opening/closing module events match 00200 MLuint64 _moduleEventGroupId; 00201 }; 00202 00203 //--------------------------------------------------------------------------- 00204 00205 ML_END_NAMESPACE 00206 00207 00208 #endif // __CSOEvent_H