- add python, missing gui
[vuplus_dvbapp] / lib / gui / ewidget.h
1 #ifndef __lib_gui_ewidget_h
2 #define __lib_gui_ewidget_h
3
4 #include <lib/gdi/grc.h> /* for gRegion */
5 #include <lib/base/eptrlist.h> /* for eSmartPtrList */
6
7 class eWidget
8 {
9         friend class eWidgetDesktop;
10 public:
11         eWidget(eWidget *parent);
12         
13         void move(ePoint pos);
14         void resize(eSize size);
15         
16         ePoint position() const { return m_position; }
17         eSize size() const { return m_size; }
18
19         void invalidate(const gRegion &region = gRegion::invalidRegion());
20
21         void show();
22         void hide();
23         
24         void destruct();
25 private:
26         eWidgetDesktop *m_desktop;
27
28         enum { 
29                 wVisShow = 1,
30                 wVisTransparent = 2,
31         };
32         
33         int m_vis;      
34
35         ePtrList<eWidget> m_childs;
36         eWidget *m_parent;
37         ePoint m_position;
38         eSize m_size;
39         
40         
41         void doPaint(gPainter &painter, const gRegion &region);
42 protected:
43         virtual ~eWidget();
44 public:
45
46                 // all in local space!
47         gRegion m_clip_region, m_visible_region, m_visible_with_childs;
48         
49         enum eWidgetEvent
50         {
51                 evtPaint,
52                 evtKey,
53                 evtChangedPosition,
54                 evtChangedSize,
55                 
56                 evtWillShow,
57                 evtWillHide,
58                 evtWillChangePosition, /* new size is eRect *data */
59                 evtWillChangeSize,
60                 
61                 evtUserWidget,
62         };
63         virtual int event(int event, void *data = 0, void *data2 = 0);
64 };
65
66 #endif