MeVisLabToolboxReference
MeVisLab/Standard/Sources/ML/MLCSO/CSOBase/CSOEvent.h
Go to the documentation of this file.
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