source: rtems-graphics-toolkit/fltk-1.3.0/test/unittest_scrollbarsize.cxx @ 855379e

Last change on this file since 855379e was f5c9e9c, checked in by Alexandru-Sever Horin <alex.sever.h@…>, on 07/05/12 at 09:33:03

Aded FLTK 1.3.0

  • Property mode set to 100644
File size: 6.9 KB
Line 
1//
2// "$Id: unittest_scrollbarsize.cxx 7913 2010-11-29 18:18:27Z greg.ercolano $"
3//
4// Unit tests for the Fast Light Tool Kit (FLTK).
5//
6// Copyright 1998-2010 by Bill Spitzak and others.
7//
8// This library is free software; you can redistribute it and/or
9// modify it under the terms of the GNU Library General Public
10// License as published by the Free Software Foundation; either
11// version 2 of the License, or (at your option) any later version.
12//
13// This library is distributed in the hope that it will be useful,
14// but WITHOUT ANY WARRANTY; without even the implied warranty of
15// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
16// Library General Public License for more details.
17//
18// You should have received a copy of the GNU Library General Public
19// License along with this library; if not, write to the Free Software
20// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
21// USA.
22//
23// Please report all bugs and problems on the following page:
24//
25//     http://www.fltk.org/str.php
26//
27
28#include <FL/Fl_Group.H>
29#include <FL/Fl_Browser.H>
30#include <FL/Fl_Tree.H>
31#include <FL/Fl_Value_Slider.H>
32
33//
34// Test new 1.3.x global vs. local scrollbar sizing
35//
36class ScrollBarSizeTest : public Fl_Group {
37    Fl_Browser *brow_a, *brow_b, *brow_c;
38    Fl_Tree    *tree_a, *tree_b, *tree_c;
39
40    Fl_Browser *makebrowser(int X,int Y,int W,int H,const char*L=0) {
41        Fl_Browser *b = new Fl_Browser(X,Y,W,H,L);
42        b->type(FL_MULTI_BROWSER);
43        b->align(FL_ALIGN_TOP);
44        b->add("Papa");     b->add("Delta"); b->add("Hotel");
45        b->add("Long entry will show h-bar");
46        b->add("Charlie");  b->add("Echo");  b->add("Foxtrot");
47        b->add("Golf");     b->add("Lima");  b->add("Victor");
48        b->add("Alpha");    b->add("Xray");  b->add("Yankee");
49        b->add("Oscar");    b->add("India"); b->add("Juliet");
50        b->add("Kilo");     b->add("Mike");  b->add("Sierra");
51        b->add("November"); b->add("Tango"); b->add("Quebec");
52        b->add("Bravo");    b->add("Romeo"); b->add("Uniform");
53        b->add("Whisky");   b->add("Zulu");
54        b->add("Papa");     b->add("Delta"); b->add("Hotel");
55        b->add("Charlie");  b->add("Echo");  b->add("Foxtrot");
56        b->add("Golf");     b->add("Lima");  b->add("Victor");
57        b->add("Alpha");    b->add("Xray");  b->add("Yankee");
58        b->add("Oscar");    b->add("India"); b->add("Juliet");
59        b->add("Kilo");     b->add("Mike");  b->add("Sierra");
60        b->add("November"); b->add("Tango"); b->add("Quebec");
61        b->add("Bravo");    b->add("Romeo"); b->add("Uniform");
62        b->add("Whisky");   b->add("Zulu");
63        return(b);
64    }
65    Fl_Tree *maketree(int X,int Y,int W,int H,const char*L=0) {
66        Fl_Tree *b = new Fl_Tree(X,Y,W,H,L);
67        b->type(FL_TREE_SELECT_MULTI);
68        b->align(FL_ALIGN_TOP);
69        b->add("Papa");     b->add("Delta"); b->add("Hotel");
70        b->add("Long entry will show h-bar");
71        b->add("Charlie");  b->add("Echo");  b->add("Foxtrot");
72        b->add("Golf");     b->add("Lima");  b->add("Victor");
73        b->add("Alpha");    b->add("Xray");  b->add("Yankee");
74        b->add("Oscar");    b->add("India"); b->add("Juliet");
75        b->add("Kilo");     b->add("Mike");  b->add("Sierra");
76        b->add("November"); b->add("Tango"); b->add("Quebec");
77        b->add("Bravo");    b->add("Romeo"); b->add("Uniform");
78        b->add("Whisky");   b->add("Zulu");
79        return(b);
80    }
81    void slide_cb2(Fl_Value_Slider *in) {
82        const char *label = in->label();
83        int val = int(in->value());
84        //fprintf(stderr, "VAL='%d'\n",val);
85        if ( strcmp(label,"A: Scroll Size") == 0 ) {
86            brow_a->scrollbar_size(val);
87            tree_a->scrollbar_size(val);
88        } else {
89            Fl::scrollbar_size(val);
90        }
91        in->window()->redraw();
92    }
93    static void slide_cb(Fl_Widget *w, void *data) {
94        ScrollBarSizeTest *o = (ScrollBarSizeTest*)data;
95        o->slide_cb2((Fl_Value_Slider*)w);
96    }
97public:
98    static Fl_Widget *create() {
99      return(new ScrollBarSizeTest(TESTAREA_X, TESTAREA_Y, TESTAREA_W, TESTAREA_H));
100    }
101
102    // CTOR
103    ScrollBarSizeTest(int X, int Y, int W, int H) : Fl_Group(X,Y,W,H) {
104      begin();
105        //      _____________    _______________
106        //     |_____________|  |_______________|
107        //                                                ---   -----  <-- tgrpy
108        //       brow_a      brow_b      brow_c            | 14   |
109        //     ----------  ----------  ----------         ---     |    <-- browy
110        //     |        |  |        |  |        |          |      |
111        //     |        |  |        |  |        |          |browh |
112        //     |        |  |        |  |        |          |      |
113        //     ----------  ----------  ----------         ---   tgrph
114        //                                                 |      |
115        //       tree_a      tree_b      tree_c            | 20   |
116        //     ----------  ----------  ----------         ---     |    <-- treey
117        //     |        |  |        |  |        |          |      |
118        //     |        |  |        |  |        |          |treeh |
119        //     |        |  |        |  |        |          |      |
120        //     ----------  ----------  ----------         ---  ------
121        //                                     
122        int tgrpy = Y+30;
123        int tgrph = H-130;
124        int browy = tgrpy+14;
125        int browh = tgrph/2 - 20;
126        int treey = browy + browh + 20;
127        int treeh = browh;
128        brow_a = makebrowser(X+ 10,browy,100,browh,"Browser A");
129        brow_b = makebrowser(X+120,browy,100,browh,"Browser B");
130        brow_c = makebrowser(X+240,browy,100,browh,"Browser C");
131        tree_a = maketree(X+ 10,treey,100,treeh,"Tree A");
132        tree_b = maketree(X+120,treey,100,treeh,"Tree B");
133        tree_c = maketree(X+240,treey,100,treeh,"Tree C");
134        Fl_Value_Slider *slide_glob = new Fl_Value_Slider(X+100,Y,100,18,"Global Scroll Size");
135        slide_glob->value(16);
136        slide_glob->type(FL_HORIZONTAL);
137        slide_glob->align(FL_ALIGN_LEFT);
138        slide_glob->range(0.0, 30.0);
139        slide_glob->step(1.0);
140        slide_glob->callback(slide_cb, (void*)this);
141        slide_glob->labelsize(12);
142        Fl_Value_Slider *slide_browa = new Fl_Value_Slider(X+350,Y,100,18,"A: Scroll Size");
143        slide_browa->value(16);
144        slide_browa->type(FL_HORIZONTAL);
145        slide_browa->align(FL_ALIGN_LEFT);
146        slide_browa->range(0.0, 30.0);
147        slide_browa->step(1.0);
148        slide_browa->callback(slide_cb, (void*)this);
149        slide_browa->labelsize(12);
150      end();
151      label("Verify global scroll sizing and per-widget scroll sizing.\n"
152            "Scrollbar's size should change interactively as size sliders are changed.\n"
153            "Changing 'Global Scroll Size' should affect all three browser's scrollbars UNLESS\n"
154            "the 'A: Scroll Size' slider is changed, in which case its value will take precedence\n"
155            "for 'Browser A', and the global size will only affect Browser B and C.");
156      labelsize(12);
157      align(FL_ALIGN_INSIDE|FL_ALIGN_BOTTOM|FL_ALIGN_LEFT|FL_ALIGN_WRAP);
158    }
159};
160
161UnitTest scrollbarsize("scrollbar size", ScrollBarSizeTest::create);
162
163//
164// End of "$Id: unittest_scrollbarsize.cxx 7913 2010-11-29 18:18:27Z greg.ercolano $"
165//
Note: See TracBrowser for help on using the repository browser.