libyui
 
Loading...
Searching...
No Matches
YEvent.h
1/*
2 Copyright (C) 2000-2012 Novell, Inc
3 This library is free software; you can redistribute it and/or modify
4 it under the terms of the GNU Lesser General Public License as
5 published by the Free Software Foundation; either version 2.1 of the
6 License, or (at your option) version 3.0 of the License. This library
7 is distributed in the hope that it will be useful, but WITHOUT ANY
8 WARRANTY; without even the implied warranty of MERCHANTABILITY or
9 FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
10 License for more details. You should have received a copy of the GNU
11 Lesser General Public License along with this library; if not, write
12 to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
13 Floor, Boston, MA 02110-1301 USA
14*/
15
16
17/*-/
18
19 File: YEvent.h
20
21 Author: Stefan Hundhammer <shundhammer@suse.de>
22
23/-*/
24
25#ifndef YEvent_h
26#define YEvent_h
27
28
29#include <string>
30#include <iosfwd>
31#include "YDialog.h"
32#include "YSimpleEventHandler.h"
33
34class YWidget;
35class YItem;
36class YDialog;
37
38
43class YEvent
44{
45public:
46
47 enum EventType
48 {
49 NoEvent = 0,
50 UnknownEvent,
51 WidgetEvent,
52 MenuEvent,
53 KeyEvent,
54 CancelEvent,
55 TimeoutEvent,
56 DebugEvent,
57 SpecialKeyEvent,
58 InvalidEvent = 0x4242
59 };
60
61
62 enum EventReason
63 {
64 UnknownReason = 0,
65 Activated,
66 SelectionChanged,
67 ValueChanged,
68 ContextMenuActivated
69 };
70
71
75 YEvent( EventType eventType = UnknownEvent );
76
80 EventType eventType() const { return _eventType; }
81
86 unsigned long serial() const { return _serial; }
87
94 virtual YWidget * widget() const { return 0; }
95
102 virtual YItem * item() const { return 0; }
103
107 YDialog * dialog() const { return _dialog; }
108
112 bool isValid() const;
113
117 static const char * toString( EventType eventType );
118
122 static const char * toString( EventReason reason );
123
124
125protected:
126
130 void setDialog( YDialog * dia ) { _dialog = dia; }
131
140 virtual ~YEvent();
141
145 void invalidate();
146
147private:
148
149 friend void YDialog::deleteEvent( YEvent * event );
150 friend void YSimpleEventHandler::deleteEvent( YEvent * event );
151
152
153 //
154 // Data members
155 //
156
157 EventType _eventType;
158 unsigned long _serial;
159 YDialog * _dialog;
160
161 static unsigned long _nextSerial;
162};
163
164
165
166class YWidgetEvent: public YEvent
167{
168public:
169
174 EventReason reason = Activated,
175 EventType eventType = WidgetEvent );
176
181 virtual YWidget * widget() const { return _widget; }
182
186 EventReason reason() const { return _reason; }
187
188protected:
189
195 virtual ~YWidgetEvent() {}
196
197
198 //
199 // Data members
200 //
201
202 YWidget * _widget;
203 EventReason _reason;
204};
205
206
207class YKeyEvent: public YEvent
208{
209public:
210
218 YKeyEvent( const std::string & keySymbol,
219 YWidget * focusWidget = 0 );
220
225 std::string keySymbol() const { return _keySymbol; }
226
233 YWidget * focusWidget() const { return _focusWidget; }
234
235protected:
236
242 virtual ~YKeyEvent() {}
243
244
245 //
246 // Data members
247 //
248
249 std::string _keySymbol;
250 YWidget * _focusWidget;
251};
252
253
257class YMenuEvent: public YEvent
258{
259public:
260
261 YMenuEvent( YItem * item )
262 : YEvent( MenuEvent )
263 , _item( item )
264 {}
265
266 YMenuEvent( const char * id ) : YEvent( MenuEvent ), _item(0), _id( id ) {}
267 YMenuEvent( const std::string & id ) : YEvent( MenuEvent ), _item(0), _id( id ) {}
268
275 virtual YItem * item() const { return _item; }
276
281 std::string id() const { return _id; }
282
283protected:
284
290 virtual ~YMenuEvent() {}
291
292
293 //
294 // Data members
295 //
296
297 YItem * _item;
298 std::string _id;
299};
300
301
306class YCancelEvent: public YEvent
307{
308public:
309
310 YCancelEvent() : YEvent( CancelEvent ) {}
311
312
313protected:
319 virtual ~YCancelEvent() {}
320};
321
322
327class YDebugEvent: public YEvent
328{
329public:
330
331 YDebugEvent() : YEvent( DebugEvent ) {}
332
333protected:
339 virtual ~YDebugEvent() {}
340};
341
345class YSpecialKeyEvent: public YEvent
346{
347public:
348
349 YSpecialKeyEvent( const char *id ) : YEvent( SpecialKeyEvent ), _id( id ) {}
350 YSpecialKeyEvent( const std::string &id ) : YEvent( SpecialKeyEvent ), _id( id ) {}
351
355 std::string id() const { return _id; }
356
357protected:
363 virtual ~YSpecialKeyEvent() {}
364
365 std::string _id;
366};
367
372class YTimeoutEvent: public YEvent
373{
374public:
375
376 YTimeoutEvent() : YEvent( TimeoutEvent ) {}
377
378protected:
384 virtual ~YTimeoutEvent() {}
385};
386
387
388std::ostream & operator<<( std::ostream & stream, const YEvent * event );
389
390
391#endif // YEvent_h
virtual ~YCancelEvent()
Definition YEvent.h:319
virtual ~YDebugEvent()
Definition YEvent.h:339
Definition YDialog.h:48
void deleteEvent(YEvent *event)
Definition YDialog.cc:516
Definition YEvent.h:44
virtual YItem * item() const
Definition YEvent.h:102
unsigned long serial() const
Definition YEvent.h:86
static const char * toString(EventType eventType)
Definition YEvent.cc:69
virtual ~YEvent()
Definition YEvent.cc:48
YDialog * dialog() const
Definition YEvent.h:107
bool isValid() const
Definition YEvent.cc:55
YEvent(EventType eventType=UnknownEvent)
Definition YEvent.cc:40
virtual YWidget * widget() const
Definition YEvent.h:94
void invalidate()
Definition YEvent.cc:62
void setDialog(YDialog *dia)
Definition YEvent.h:130
EventType eventType() const
Definition YEvent.h:80
Definition YItem.h:56
YWidget * focusWidget() const
Definition YEvent.h:233
std::string keySymbol() const
Definition YEvent.h:225
virtual ~YKeyEvent()
Definition YEvent.h:242
YKeyEvent(const std::string &keySymbol, YWidget *focusWidget=0)
Definition YEvent.cc:126
virtual ~YMenuEvent()
Definition YEvent.h:290
virtual YItem * item() const
Definition YEvent.h:275
std::string id() const
Definition YEvent.h:281
void deleteEvent(YEvent *event)
Definition YSimpleEventHandler.cc:156
virtual ~YSpecialKeyEvent()
Definition YEvent.h:363
std::string id() const
Definition YEvent.h:355
virtual ~YTimeoutEvent()
Definition YEvent.h:384
YWidgetEvent(YWidget *widget=0, EventReason reason=Activated, EventType eventType=WidgetEvent)
Definition YEvent.cc:113
EventReason reason() const
Definition YEvent.h:186
virtual ~YWidgetEvent()
Definition YEvent.h:195
virtual YWidget * widget() const
Definition YEvent.h:181
Definition YWidget.h:55