cevent.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef NCDKNEVENT_H
00021 #define NCDKNEVENT_H
00022
00023 #include <list>
00024 #include <ncurses.h>
00025
00026 #include <crect.h>
00027
00028
00029
00030 namespace stdui {
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074
00075
00076
00077
00078
00079
00080
00081
00082
00083
00084
00085
00086
00087
00088
00089
00090
00091
00092
00093
00094
00095
00096
00097
00098
00099
00100
00101
00102
00103
00104
00105
00106
00107
00108
00109
00110
00111
00112
00113
00114
00115
00116
00117
00118
00119
00120
00121
00122
00123
00124
00125 struct events{
00126 typedef unsigned long val;
00127
00128 static const events::val timertic =1;
00129 static const events::val mousebuttonpress =2;
00130 static const events::val mousebuttonrelease =3;
00131 static const events::val mousebuttonclick =4;
00132 static const events::val mousebuttondblclick =5;
00133 static const events::val mousemove =6;
00134 static const events::val keypress =7;
00135 static const events::val keyrelease =8;
00136 static const events::val focusin =9;
00137 static const events::val focusout =10;
00138 static const events::val cancel =11;
00139
00140 static const events::val move =13;
00141 static const events::val resize=14;
00142 static const events::val quit=15;
00143 static const events::val drop=19;
00144 static const events::val windowstatechange=21;
00145 static const events::val tabnextfocus=22;
00146 static const events::val tabrevfocus=23;
00147 static const events::val hide=24;
00148 static const events::val show=25;
00149 static const events::val save=26;
00150 static const events::val open=27;
00151 static const events::val close=28;
00152 static const events::val create=29;
00153 static const events::val update=30;
00154 static const events::val toplevelupdate=31;
00155 static const events::val termresize=32;
00156 static const events::val resizeevent=33;
00157 static const events::val postupdate=34;
00158 static const events::val activatemenu=35;
00159 static const events::val menudone=36;
00160
00161 };
00162
00163 struct event_type{
00164 typedef unsigned int val;
00165 static const val keyevent =1;
00166 static const val mouseevent =2;
00167 static const val timer =4;
00168 static const val messageevent=8;
00169 static const val user=0x10;
00170 };
00171
00172
00173
00174 class stdwindow;
00175 class stdobject;
00176
00177 using std::list;
00178 class cevent{
00184 public:
00185
00186 typedef list<cevent*> list;
00187 typedef list::iterator iterator;
00188
00189 cevent();
00190 cevent(event_type::val t, events::val v) : __type(t), __e(v), _sender(0l), _target(0l){ }
00191 cevent(int _ncurses_event) : __nce(_ncurses_event), __type(0), __e(0), _sender(0l), _target(0l){ }
00192 cevent(stdobject* s, event_type::val t, events::val v) : __type(t), __e(v), _sender(s), _target(0l){ }
00193 cevent(stdobject* sender, stdobject* target, event_type::val t, events::val v) : __type(t), __e(v), _sender(sender), _target(target){ }
00194 virtual ~cevent();
00195
00201 template<typename _t> _t* eventclass()
00202 {
00203 _t* _e = dynamic_cast<_t*>(this);
00204 return _e;
00205 }
00210 events::val event() { return __e; }
00211
00212
00217 int ncursesevent() { return __nce; }
00218
00223 void setevent( events::val e ) { __e = e; }
00224
00229 void seteventtype( event_type::val t ) { __type = t; }
00230
00235 event_type::val type() { return __type; }
00240 stdobject* sender(){ return _sender; }
00241
00245 void setsender(stdobject* s) { _sender = s; }
00246
00247 static void clear(cevent::list& l);
00248 private:
00249 events::val __e;
00250 event_type::val __type;
00251 int __nce;
00252 virtual void _translate();
00253
00254 stdobject* _sender;
00255 stdobject* _target;
00256 };
00257
00258 class ckeypressevent : public cevent{
00259 public:
00260 ckeypressevent(): cevent(){}
00261
00262 ckeypressevent(int kv, bool meta):cevent(event_type::keyevent, events::keypress){
00263 key = kv;
00264 bmeta = meta;
00265 _translate();
00266 }
00271 int keyvalue(){ return key; }
00276 bool ismeta() { return bmeta; }
00277
00278 private:
00279 virtual void _translate();
00280 int key;
00281 bool bmeta;
00282 };
00283
00284
00285
00286 class cmouseevent : public cevent{
00287 public:
00288 cmouseevent() : cevent(event_type::mouseevent, 0){}
00289 cmouseevent(MEVENT mev): cevent(event_type::mouseevent, 0 ), _data(mev){ _translate(); }
00290
00294 int y()
00295 {
00296 return pos.y();
00297 }
00298
00302 int x()
00303 {
00304 return pos.x();
00305 }
00306 const cxy& position()const { return pos; }
00307 const cxy& local()const { return localpos; }
00308
00309
00310 int left :1;
00311 int middle: 1;
00312 int right: 1;
00313
00314 bool isleft();
00315 bool ismiddle();
00316 bool isright();
00317 private:
00318 MEVENT _data;
00319 long mleft, mright, mmiddle;
00320 cxy pos;
00321 cxy localpos;
00322 cxy _oldpos;
00323 virtual void _translate();
00324 bool identify_event();
00325
00326 };
00327
00328
00329
00330
00331 class cmessageevent : public cevent{
00332 public:
00333 cmessageevent(): cevent() {}
00334 cmessageevent(events::val ev) : cevent(event_type::messageevent, ev)
00335 {}
00336 cmessageevent(events::val ev, stdobject* sender) : cevent(event_type::messageevent, ev)
00337 {}
00338 cmessageevent(events::val ev, stdobject* sender, stdobject* target) : cevent(sender, target, event_type::messageevent,ev)
00339 {}
00340
00341 private:
00342
00343 };
00344
00345
00346
00347
00348
00349
00350
00351
00352 template<typename _dt> class cmsgevent : public cevent{
00353 public:
00354 cmsgevent(): cevent() {}
00355 cmsgevent(events::val ev) : cevent(event_type::user, ev){ _sender = 0l;}
00356 cmsgevent(events::val ev, stdwindow* sender) : cevent(event_type::user, ev){ _sender = sender;}
00357
00358 cmsgevent( events::val ev, stdobject* sender, stdobject* target, _dt data) : cevent(event_type::user, ev, sender, target){
00359 data_priv = data;
00360
00361 }
00362 _dt data() { return data_priv; }
00363 private:
00364 _dt data_priv;
00365 };
00366
00367
00368 class ctimerevent : public cevent{
00369 public:
00370
00371 };
00372
00373
00374
00375 };
00376
00377 #endif
API Documentation Generated by:
1.4.0
About the author |

Site started with trial version of DreamWeaver MX 2004 |
Finalizing with

|
Contact | ©2005, Serge Lussier ( Bretzel )