NEURON
ocinput.h
Go to the documentation of this file.
1 #ifndef ocinput_h
2 #define ocinput_h
3 
4 #include <InterViews/input.h>
5 #include <InterViews/event.h>
6 #include <InterViews/handler.h>
7 
8 class HandlerList;
9 
10 public
12  public:
15 
16  virtual void bind_select(Handler * h) {
18  }
19  virtual void bind_adjust(Handler * h) {
20  bind_press(Event::middle, h);
21  }
22  virtual void bind_menu(Handler * h) {
24  }
25 
26  virtual void move(const Event& e) {
27  mouse(0, e);
28  }
29  virtual void press(const Event& e) {
30  mouse(1, e);
31  }
32  virtual void drag(const Event& e) {
33  mouse(2, e);
34  }
35  virtual void release(const Event& e) {
36  mouse(3, e);
37  }
38  void mouse(int, const Event&);
39 
40  void bind_move(EventButton eb, Handler * h) {
41  bind(0, eb, h);
42  }
43  void bind_press(EventButton eb, Handler * h) {
44  bind(0, eb, h);
45  }
46  void bind_drag(EventButton eb, Handler * h) {
47  bind(0, eb, h);
48  }
50  bind(0, eb, h);
51  }
52  void bind(int, EventButton eb, Handler* h) {
53  bind(0, eb, h);
54  }
56 
57  private:
58  HandlerList* handlers_[4];
59 };
60 
61  /*
62  * Handler denoted by an object and member function to call on the object.
63  * Used the FieldEditorAction as a template
64  */
65 
66 #if defined(__STDC__) || defined(__ANSI_CPP__) || defined(WIN32)
67 #define __HandlerCallback(T) T##_HandlerCallback
68 #define HandlerCallback(T) __HandlerCallback(T)
69 #define __HandlerMemberFunction(T) T##_HandlerMemberFunction
70 #define HandlerMemberFunction(T) __HandlerMemberFunction(T)
71 #else
72 #define __HandlerCallback(T) T /**/ _HandlerCallback
73 #define HandlerCallback(T) __HandlerCallback(T)
74 #define __HandlerMemberFunction(T) T /**/ _HandlerMemberFunction
75 #define HandlerMemberFunction(T) __HandlerMemberFunction(T)
76 #endif
77 
78 #define declareHandlerCallback(T) \
79  typedef void (T::*HandlerMemberFunction(T))(Event&); \
80  class HandlerCallback(T) \
81  : public Handler { \
82  public: \
83  HandlerCallback(T)(T*, HandlerMemberFunction(T)); \
84  virtual ~HandlerCallback(T)(); \
85  \
86  virtual void event(Event&); \
87  \
88  private: \
89  T* obj_; \
90  HandlerMemberFunction(T) func_; \
91  };
92 
93 #define implementHandlerCallback(T) \
94  HandlerCallback(T)::HandlerCallback(T)(T * obj, HandlerMemberFunction(T) func) { \
95  obj_ = obj; \
96  func_ = func; \
97  } \
98  \
99  HandlerCallback(T)::~HandlerCallback(T)() {} \
100  \
101  void HandlerCallback(T)::event(Event& e) { \
102  (obj_->*func_)(e); \
103  }
104 
105 #endif
#define InputHandler
Definition: _defines.h:151
#define Handler
Definition: _defines.h:146
#define Style
Definition: _defines.h:281
#define Event
Definition: _defines.h:107
#define EventButton
Definition: _defines.h:21
#define Glyph
Definition: _defines.h:132
HandlerList * handlers_[4]
Definition: ocinput.h:58
virtual void press(const Event &e)
Definition: ocinput.h:29
public Style *virtual ~StandardInputHandler()
void bind_press(EventButton eb, Handler *h)
Definition: ocinput.h:43
virtual void bind_adjust(Handler *h)
Definition: ocinput.h:19
void mouse(int, const Event &)
void bind_move(EventButton eb, Handler *h)
Definition: ocinput.h:40
virtual void drag(const Event &e)
Definition: ocinput.h:32
public StandardInputHandler
Definition: ocinput.h:8
void bind_release(EventButton eb, Handler *h)
Definition: ocinput.h:49
virtual void move(const Event &e)
Definition: ocinput.h:26
virtual void bind_menu(Handler *h)
Definition: ocinput.h:22
void remove_all(EventButton)
void bind_drag(EventButton eb, Handler *h)
Definition: ocinput.h:46
virtual void bind_select(Handler *h)
Definition: ocinput.h:16
void bind(int, EventButton eb, Handler *h)
Definition: ocinput.h:52
virtual void release(const Event &e)
Definition: ocinput.h:35
#define e
Definition: passive0.cpp:22
#define left
Definition: rbtqueue.cpp:45
#define right
Definition: rbtqueue.cpp:46