Rune - Fix array passing, optimize constant array indices
[rune.git] / tests / gfxslider.d
1 #!/usr/local/bin/rune -x
2 #
3 #       Graphical test
4
5 import "sys";
6 import <stdio>;
7 import <gfx>;
8 import <gadgets>;
9
10 alias stdio.File *stdout = stdio.stdout;
11
12 typedef gfx.Event       Event;
13 typedef gfx.Frame       Frame;
14
15 subclass gadgets.SliderFrame as MySlider
16 {
17 }
18
19 subclass Frame as MyFrame
20 {
21         refine method 
22         bool
23         refreshFrame(int x, int y, int w, int h) {
24                 super.refreshFrame(x, y, w, h);
25                 this.drawLine(5, 5, this.bounds.w - 5, this.bounds.h -5);
26                 this.drawLine(this.bounds.w - 5, 5, 5, this.bounds.h -5);
27                 this.drawRect(0, 0, this.bounds.w - 1, this.bounds.h -1);
28         }
29 }
30
31 int
32 main(int ac, char **av)
33 {
34         Frame *frame0;
35         Frame *frame1;
36         MyFrame *frame2;
37         MySlider *sliderH;
38         MySlider *sliderV;
39         int i;
40         int j;
41         int k;
42         int l;
43
44         frame0.createFrame("OUTER", &gfx.root, 512, 256, BODY);
45         frame0->setBGColor(255, 129, 0);
46         sliderH.createSlider(frame0, 0, 0, sliderH.NULL, BELOW|FILLX);
47         sliderV.createSlider(frame0, 0, 0, sliderH, RIGHT|FILLY);
48         frame1.createFrame("WINDOW", frame0,
49                            0, 0, BODY|FILLX|FILLY|WINDOW);
50         frame2.createFrame("INNER", frame1,
51                            2000, 1000, BODY|WINDOW|CLIP);
52 #    frame2.createFrame(frame1, 1000, 1000, BODY);
53         sliderH->setBody(frame1, frame2);
54         sliderV->setBody(frame1, frame2);
55         for (i = 0; i < 4; ++i) {
56                 Frame *frame3;
57
58                 frame3.createFrame("LEFT", frame2, 0, 0, LEFT);
59                 for (j = 0; j < 4; ++j) {
60                         Frame *frame4;
61
62                         frame4.createFrame("ABOVE", frame3, 0, 0, ABOVE);
63                         for (k = 0; k < 5; ++k) {
64                                 Frame *frame5;
65
66                                 frame5.createFrame("SUBABOVE",
67                                                    frame4, 0, 0, ABOVE);
68                                 for (l = 0; l < 10; ++l) {
69                                         gadgets.ButtonFrame *button;
70
71                                         button.createButton(frame5,
72                                                             0, 0, LEFT, "LEFT");
73                                 }
74                         }
75                 }
76         }
77         stdout->show("Number of buttons:", i * j * k * l);
78         frame0->recalc();
79         frame0->flush();
80         Thread.waitThreads();           # wait until all threads have exited
81         return(0);
82 }