- redraw now in idle
[enigma2.git] / main / enigma.cpp
1 #include <stdio.h>
2 #include <libsig_comp.h>
3 #include <lib/base/ebase.h>
4 #include <lib/base/eerror.h>
5 #include <lib/base/init.h>
6 #include <lib/base/init_num.h>
7
8 #include <unistd.h>
9
10 #include <lib/gdi/grc.h>
11 #include <lib/gdi/gfbdc.h>
12 #include <lib/gdi/font.h> 
13
14 #include <lib/gui/ewidget.h>
15 #include <lib/gui/ewidgetdesktop.h>
16 #include <lib/gui/elabel.h>
17 #include <lib/gui/ebutton.h>
18
19 #include <lib/gui/ewindow.h>
20
21 #include <lib/python/python.h>
22 #include <lib/python/connections.h>
23
24 #ifdef OBJECT_DEBUG
25 int object_total_remaining;
26
27 void object_dump()
28 {
29         printf("%d items left\n", object_total_remaining);
30 }
31 #endif
32
33 void dumpRegion(const gRegion &region)
34 {
35         fprintf(stderr, "extends: %d %d -> %d %d (%d rects)\n", 
36                 region.extends.left(), region.extends.top(),
37                 region.extends.right(), region.extends.bottom(), region.rects.size());
38         for (int y=0; y<region.extends.bottom(); ++y)
39         {
40                 for (int x=0; x<region.extends.right(); ++x)
41                 {
42                         unsigned char res = ' ';
43                         for (unsigned int i=0; i < region.rects.size(); ++i)
44                                 if (region.rects[i].contains(ePoint(x, y)))
45                                         res = '0' + i;
46                         fprintf(stderr, "%c", res);
47                 }
48                 fprintf(stderr, "\n");
49         }
50 }
51
52
53 class eMain: public eApplication, public Object
54 {
55         eInit init;
56 public:
57         eMain()
58         {
59                 init.setRunlevel(eAutoInitNumbers::main);
60         }
61 };
62
63 eWidgetDesktop *wdsk;
64
65 // typedef struct _object PyObject;
66
67 void print(int i)
68 {
69         printf("C++ says: it's a %d!!!\n", i);
70 }
71
72 int main(int argc, char **argv)
73 {
74 #ifdef OBJECT_DEBUG
75         atexit(object_dump);
76 #endif
77
78
79 #if 1
80         eMain main;
81
82         ePtr<gFBDC> my_dc;
83         gFBDC::getInstance(my_dc);
84
85         gPainter p(my_dc);
86         
87         gRGB pal[256];
88         pal[0] = 0;
89         pal[1] = 0xff00ff;
90         pal[2] = 0xffFFff;
91         pal[3] = 0x00ff00;
92         
93         for (int a=0; a<0x10; ++a)
94                 pal[a | 0x10] = 0x111111 * a;
95         for (int a=0; a<0x10; ++a)
96                 pal[a | 0x20] = (0x111100 * a) | 0xFF;
97         for (int a=0; a<0x10; ++a)
98                 pal[a | 0x30] = (0x110011 * a) | 0xFF00;
99         for (int a=0; a<0x10; ++a)
100                 pal[a | 0x40] = (0x001111 * a) | 0xFF0000;
101         p.setPalette(pal, 0, 256);
102
103         fontRenderClass::getInstance()->AddFont("/dbox2/cdkroot/share/fonts/arial.ttf", "Arial", 100);
104
105         eWidgetDesktop dsk(eSize(720, 576));
106         
107         wdsk = &dsk;
108         dsk.setDC(my_dc);
109 #endif
110
111                 /* redrawing is done in an idle-timer, so we have to set the context */
112         dsk.setRedrawTask(main);
113         
114         ePython python;
115         
116         printf("executing main\n");
117         python.execute("mytest", "__main__");
118
119         return 0;
120 }
121
122 eWidgetDesktop *getDesktop()
123 {
124         return wdsk;
125 }
126
127 void runMainloop()
128 {
129         eApp->exec();
130 }