2 #ifndef _sigc_eventsignals_h_
3 #define _sigc_eventsignals_h_
4 #ifdef USE_SIGCPLUSPLUS
6 #include <sigc++/signal_system.h>
7 #include <vdk/sigc_events.h>
18 class VDKRawEventSignal :
public VDKSignal1<void, const GdkEvent *>,
24 Connection connect(
const Slot1<void, const GdkEvent*>&);
25 Connection connect(
const Slot2<void, VDKObject*, const GdkEvent *>&);
26 void disconnect(Connection&);
31 static gint event_handler(GtkObject* wid, GdkEvent* eve, gpointer obj);
63 typedef VDKMapState VDKMapEventFilter;
80 } VDKButtonEventFilter;
104 } VDKFocusEventFilter;
114 } VDKPointerEventFilter;
121 template<W2_TraitEnum
id,
int scount=0>
125 typedef GdkEvent ge_type;
127 typedef GdkEventType T_gcmp;
129 static const char* signame;
130 static T_gcmp Field(GdkEvent* eve)
134 template<W2_TraitEnum
id>
135 class W2_Trait<id, 1>
138 typedef GdkEvent ge_type;
140 typedef GdkEventType T_gcmp;
141 static const int s_count;
142 static const char* signame;
143 static T_gcmp Field(GdkEvent* eve);
144 static const T_vcmp EN1;
145 static const T_gcmp GN1;
148 template<W2_TraitEnum
id>
152 typedef GdkEvent ge_type;
154 typedef GdkEventType T_gcmp;
155 static const int s_count;
156 static const char* signame;
157 static T_gcmp Field(GdkEvent* eve);
158 static const T_vcmp EN1;
159 static const T_gcmp GN1;
160 static const T_vcmp EN2;
161 static const T_gcmp GN2;
164 template<W2_TraitEnum
id>
168 typedef GdkEvent ge_type;
170 typedef GdkEventType T_gcmp;
172 static const int s_count;
173 static const char* signame;
174 static T_gcmp Field(GdkEvent* eve)
176 static const T_vcmp EN1;
177 static const T_gcmp GN1;
178 static const T_vcmp EN2;
179 static const T_gcmp GN2;
180 static const T_vcmp EN3;
181 static const T_gcmp GN3;
184 #include <vdk/sigc_eventtraits.h>
191 template<W2_TraitEnum
id,
class T_vevent>
192 class DirectEventSignal :
public VDKSignal1<void, const T_vevent &>
195 static void event_handler(GtkObject*, GdkEvent*, gpointer obj);
197 typedef W2_Trait<id> T_trait;
199 DirectEventSignal(
VDKObject* sender) : _handler_id(0),_sender(sender) {}
200 ~DirectEventSignal();
201 Connection connect(
const Slot2<void,VDKObject*,const T_vevent &>&);
202 Connection connect(
const Slot1<void, const T_vevent &>&);
203 void disconnect(Connection& con);
210 template<W2_TraitEnum
id,
class T_vevent,
int s_count,
class trait>
211 class SignalWrapperStage2Base
213 typedef W2_Trait<id> Trait;
214 typedef W2_Trait<id>::T_vcmp T_vcmp;
215 typedef W2_Trait<id>::T_gcmp T_gcmp;
218 VDKSignal1<void,const T_vevent& > sig_vec[s_count];
219 static void event_handler(GtkObject*, GdkEvent*, gpointer obj);
222 : _handler_id(0), _sender(obj) {}
223 ~SignalWrapperStage2Base();
227 void disconnect(Connection&);
228 Connection connect(
const Slot2<void,VDKObject*,const T_vevent &>&,
230 Connection connect(
const Slot1<void,const T_vevent &>&, T_vcmp spec);
232 bool responsible(T_vcmp spec)
const;
235 template<W2_TraitEnum
id,
class T_vevent,
int s>
236 class SignalWrapperStage2
238 typedef W2_Trait<id> Trait;
239 typedef Trait::T_vcmp T_vcmp;
240 typedef Trait::T_gcmp T_gcmp;
247 template<W2_TraitEnum
id,
class T_vevent>
248 class SignalWrapperStage2<id,T_vevent,1>
249 :
public SignalWrapperStage2Base<id,T_vevent,1, SignalWrapperStage2<id,T_vevent,1> >
251 typedef W2_Trait<id> Trait;
252 typedef W2_Trait<id>::T_vcmp T_vcmp;
253 typedef W2_Trait<id>::T_gcmp T_gcmp;
255 friend class SignalWrapperStage2Base<id, T_vevent,1, SignalWrapperStage2<id,T_vevent,1> >;
256 static int vdk2vec(T_vcmp);
257 static int eve2vec(GdkEvent* eve);
260 : SignalWrapperStage2Base<id, T_vevent,1, SignalWrapperStage2<id,T_vevent,1> >(obj)
264 template<W2_TraitEnum
id,
class T_vevent>
265 class SignalWrapperStage2<id,T_vevent,2>
266 :
public SignalWrapperStage2Base<id,T_vevent,2, SignalWrapperStage2<id,T_vevent,2> >
268 typedef W2_Trait<id> myTrait;
269 typedef myTrait::T_vcmp T_vcmp;
270 typedef myTrait::T_gcmp T_gcmp;
271 friend class SignalWrapperStage2Base<id,T_vevent,2,SignalWrapperStage2<id,T_vevent,2> >;
272 static int vdk2vec(T_vcmp);
273 static int eve2vec(GdkEvent* eve);
276 : SignalWrapperStage2Base<id,T_vevent,2, SignalWrapperStage2<id,T_vevent,2> >(obj)
280 template<W2_TraitEnum
id,
class T_vevent>
281 class SignalWrapperStage2<id,T_vevent,3>
282 :
public SignalWrapperStage2Base<id,T_vevent,3, SignalWrapperStage2<id,T_vevent,3> >
284 typedef W2_Trait<id> myTrait;
285 typedef myTrait::T_vcmp T_vcmp;
286 typedef myTrait::T_gcmp T_gcmp;
287 friend class SignalWrapperStage2Base<id,T_vevent, 3, SignalWrapperStage2<id,T_vevent,3> >;
288 static int vdk2vec(T_vcmp);
289 static int eve2vec(GdkEvent* eve);
292 : SignalWrapperStage2Base<id,T_vevent,3, SignalWrapperStage2<id,T_vevent,3> >(obj)
299 template<W2_TraitEnum
id1,
int s_count1, W2_TraitEnum
id2,
int s_count2,
class T_vevent>
300 class SignalWrapperStage1M2
303 typedef W2_Trait<id1> Trait1;
304 typedef W2_Trait<id2> Trait2;
305 typedef Trait1::T_vcmp T_vcmp;
306 SignalWrapperStage2<id1, T_vevent, s_count1> swrap1;
307 SignalWrapperStage2<id2, T_vevent, s_count2> swrap2;
310 : swrap1(obj), swrap2(obj){}
312 Connection connect(
const Slot2<void, VDKObject*, const T_vevent&>& sl,
314 Connection connect(
const Slot1<void, const T_vevent&>& sl, T_vcmp spec);
315 void disconnect(Connection& con);
321 typedef SignalWrapperStage1M2<BUTTON_PRESS,3, BUTTON_RELEASE, 1, VDKMouseEvent>
323 typedef SignalWrapperStage1M2<FOCUS_KEY_IN,1, FOCUS_KEY_OUT,1, VDKKeyFocusEvent>
325 typedef SignalWrapperStage1M2<FOCUS_POINTER_IN,1, FOCUS_POINTER_OUT,1, VDKMouseFocusEvent>
326 VDKPointerFocusSignal;
327 typedef SignalWrapperStage1M2<KEY_PRESS,1, KEY_RELEASE,1, VDKKeyEvent>
329 typedef SignalWrapperStage1M2<POINTER_PRESSED,1, POINTER_MOVE,1, VDKMouseEvent>
331 typedef SignalWrapperStage2<MAPEVENT, VDKMapEvent, 3>
333 typedef DirectEventSignal<GEOMETRY,VDKGeometryEvent>
335 typedef DirectEventSignal<PAINT,VDKPaintEvent>
Hierarchy root class.
Definition: vdkutils.h:263