* =========================================================================
*/
+// -------------------------------------------------------------------------
+#define cpExtensions_BaseInteractorStyle_Commands( C ) \
+ protected: \
+ std::map< T##C##Command, void* > m_##C##Commands; \
+public: \
+ inline void Add##C##Command( T##C##Command c, void* d ) \
+ { \
+ if( c != NULL ) \
+ { \
+ this->m_##C##Commands[ c ] = d; \
+ this->Modified( ); \
+ } \
+ } \
+ inline void Remove##C##Command( T##C##Command c ) \
+ { \
+ std::map< T##C##Command, void* >::iterator i = \
+ this->m_##C##Commands.find( c ); \
+ if( i != this->m_##C##Commands.end( ) ) \
+ { \
+ this->m_##C##Commands.erase( i ); \
+ this->Modified( ); \
+ } \
+ }
+
// -------------------------------------------------------------------------
#define BaseInteractorStyle_DIFF_TIME \
std::chrono::duration_cast< std::chrono::milliseconds >( \
typedef void ( *TMouseWheelCommand )( void*, const int&, bool, bool, bool );
typedef void ( *TKeyCommand )( void*, const char& );
typedef void ( *TVoidCommand )( void* );
-
- public:
- static void SetSetDoubleClickDelay( long delay );
+ typedef TMouseCommand TMouseMoveCommand;
+ typedef TMouseCommand TMouseClickCommand;
+ typedef TMouseCommand TMouseDoubleClickCommand;
+ typedef TVoidCommand TExposeCommand;
+ typedef TVoidCommand TConfigureCommand;
+ typedef TVoidCommand TEnterCommand;
+ typedef TVoidCommand TLeaveCommand;
// Associate callbacks for each event
- void AddMouseMoveCommand( TMouseCommand command, void* data );
- void AddMouseClickCommand( TMouseCommand command, void* data );
- void AddMouseDoubleClickCommand( TMouseCommand command, void* data );
- void AddMouseWheelCommand( TMouseWheelCommand command, void* data );
- void AddKeyCommand( TKeyCommand command, void* data );
- void AddExposeCommand( TVoidCommand command, void* data );
- void AddConfigureCommand( TVoidCommand command, void* data );
- void AddEnterCommand( TVoidCommand command, void* data );
- void AddLeaveCommand( TVoidCommand command, void* data );
-
- void RemoveMouseMoveCommand( TMouseCommand command );
- void RemoveMouseClickCommand( TMouseCommand command );
- void RemoveMouseDoubleClickCommand( TMouseCommand command );
- void RemoveMouseWheelCommand( TMouseWheelCommand command );
- void RemoveKeyCommand( TKeyCommand command );
- void RemoveExposeCommand( TVoidCommand command );
- void RemoveConfigureCommand( TVoidCommand command );
- void RemoveEnterCommand( TVoidCommand command );
- void RemoveLeaveCommand( TVoidCommand command );
+ cpExtensions_BaseInteractorStyle_Commands( MouseMove );
+ cpExtensions_BaseInteractorStyle_Commands( MouseClick );
+ cpExtensions_BaseInteractorStyle_Commands( MouseDoubleClick );
+ cpExtensions_BaseInteractorStyle_Commands( MouseWheel );
+ cpExtensions_BaseInteractorStyle_Commands( Key );
+ cpExtensions_BaseInteractorStyle_Commands( Expose );
+ cpExtensions_BaseInteractorStyle_Commands( Configure );
+ cpExtensions_BaseInteractorStyle_Commands( Enter );
+ cpExtensions_BaseInteractorStyle_Commands( Leave );
+ public:
+ static void SetSetDoubleClickDelay( long delay );
void DelegateTDxEvent( unsigned long event, void* calldata );
// Possible mouse motion events
// Keyboard-related events
virtual void OnChar( );
- virtual void OnKeyDown( );
- virtual void OnKeyUp( );
- virtual void OnKeyPress( );
- virtual void OnKeyRelease( );
+ virtual void OnKeyDown( ) { }
+ virtual void OnKeyUp( ) { }
+ virtual void OnKeyPress( ) { }
+ virtual void OnKeyRelease( ) { }
// Other events
virtual void OnExpose( );
protected:
double m_MotionFactor;
- // Callbacks
- std::map< TMouseCommand, void* > m_MouseMoveCommands;
- std::map< TMouseCommand, void* > m_MouseClickCommands;
- std::map< TMouseCommand, void* > m_MouseDoubleClickCommands;
- std::map< TMouseWheelCommand, void* > m_MouseWheelCommands;
- std::map< TKeyCommand, void* > m_KeyCommands;
- std::map< TVoidCommand, void* > m_ExposeCommands;
- std::map< TVoidCommand, void* > m_ConfigureCommands;
- std::map< TVoidCommand, void* > m_EnterCommands;
- std::map< TVoidCommand, void* > m_LeaveCommands;
-
/**
* Button events
*/