Author: greg.ercolano
Date: 2009-07-11 17:29:36 -0700 (Sat, 11 Jul 2009)
New Revision: 6829
Log:
Added to allow testing of scrollbar sizing.



Added:
   branches/branch-1.3/test/unittest_scrollbarsize.cxx

Added: branches/branch-1.3/test/unittest_scrollbarsize.cxx
===================================================================
--- branches/branch-1.3/test/unittest_scrollbarsize.cxx                         
(rev 0)
+++ branches/branch-1.3/test/unittest_scrollbarsize.cxx 2009-07-12 00:29:36 UTC 
(rev 6829)
@@ -0,0 +1,118 @@
+//
+// "$Id: $"
+//
+// Unit tests for the Fast Light Tool Kit (FLTK).
+//
+// Copyright 1998-2009 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems on the following page:
+//
+//     http://www.fltk.org/str.php
+//
+
+#include <FL/Fl_Group.H>
+#include <FL/Fl_Browser.H>
+#include <FL/Fl_Value_Slider.H>
+
+//
+// Test new 1.3.x global vs. local scrollbar sizing
+//
+class ScrollBarSizeTest : public Fl_Group {
+    Fl_Browser *brow_a, *brow_b, *brow_c;
+
+    Fl_Browser *makebrowser(int X,int Y,int W,int H,const char*L=0) {
+       Fl_Browser *b = new Fl_Browser(X,Y,W,H,L);
+       b->type(FL_MULTI_BROWSER);
+       b->add("Papa");     b->add("Delta"); b->add("Hotel");
+       b->add("Charlie");  b->add("Echo");  b->add("Foxtrot");
+       b->add("Golf");     b->add("Lima");  b->add("Victor");
+       b->add("Alpha");    b->add("Xray");  b->add("Yankee");
+       b->add("Oscar");    b->add("India"); b->add("Juliet");
+       b->add("Kilo");     b->add("Mike");  b->add("Sierra");
+       b->add("November"); b->add("Tango"); b->add("Quebec");
+       b->add("Bravo");    b->add("Romeo"); b->add("Uniform");
+       b->add("Whisky");   b->add("Zulu");
+       b->add("Papa");     b->add("Delta"); b->add("Hotel");
+       b->add("Charlie");  b->add("Echo");  b->add("Foxtrot");
+       b->add("Golf");     b->add("Lima");  b->add("Victor");
+       b->add("Alpha");    b->add("Xray");  b->add("Yankee");
+       b->add("Oscar");    b->add("India"); b->add("Juliet");
+       b->add("Kilo");     b->add("Mike");  b->add("Sierra");
+       b->add("November"); b->add("Tango"); b->add("Quebec");
+       b->add("Bravo");    b->add("Romeo"); b->add("Uniform");
+       b->add("Whisky");   b->add("Zulu");
+       return(b);
+    }
+    void slide_cb2(Fl_Value_Slider *in) {
+       const char *label = in->label();
+       int val = in->value();
+       //fprintf(stderr, "VAL='%d'\n",val);
+       if ( strcmp(label,"A: Scroll Size") == 0 ) {
+           brow_a->scrollbar_size(val);
+       } else {
+           Fl::scrollbar_size(val);
+       }
+       in->window()->redraw();
+    }
+    static void slide_cb(Fl_Widget *w, void *data) {
+        ScrollBarSizeTest *o = (ScrollBarSizeTest*)data;
+       o->slide_cb2((Fl_Value_Slider*)w);
+    }
+public: 
+    static Fl_Widget *create() {
+      return(new ScrollBarSizeTest(TESTAREA_X, TESTAREA_Y, TESTAREA_W, 
TESTAREA_H));
+    }
+
+    // CTOR
+    ScrollBarSizeTest(int X, int Y, int W, int H) : Fl_Group(X,Y,W,H) {
+      begin();
+       brow_a = makebrowser(X+ 10,Y+40,100,H-170,"Browser A");
+       brow_b = makebrowser(X+120,Y+40,100,H-170,"Browser B");
+       brow_c = makebrowser(X+240,Y+40,100,H-170,"Browser C");
+        Fl_Value_Slider *slide_glob = new 
Fl_Value_Slider(X+100,Y+10,100,18,"Global Scroll Size");
+        slide_glob->value(16);
+        slide_glob->type(FL_HORIZONTAL);
+        slide_glob->align(FL_ALIGN_LEFT);
+        slide_glob->range(0.0, 30.0);
+        slide_glob->step(1.0);
+        slide_glob->callback(slide_cb, (void*)this);
+        slide_glob->labelsize(12);
+        Fl_Value_Slider *slide_browa = new 
Fl_Value_Slider(X+350,Y+10,100,18,"A: Scroll Size");
+        slide_browa->value(16);
+        slide_browa->type(FL_HORIZONTAL);
+        slide_browa->align(FL_ALIGN_LEFT);
+        slide_browa->range(0.0, 30.0);
+        slide_browa->step(1.0);
+        slide_browa->callback(slide_cb, (void*)this);
+        slide_browa->labelsize(12);
+      end();
+      label("Verify global scroll sizing and per-widget scroll sizing.\n"
+           "Scrollbar's size should change interactively as size sliders are 
changed.\n"
+            "Changing 'Global Scroll Size' should affect all three browser's 
scrollbars UNLESS\n"
+           "the 'A: Scroll Size' slider is changed, in which case its value 
will take precedence\n"
+           "for 'Browser A', and the global size will only affect Browser A + 
B.");
+      labelsize(12);
+      align(FL_ALIGN_INSIDE|FL_ALIGN_BOTTOM|FL_ALIGN_LEFT|FL_ALIGN_WRAP);
+    }
+};
+
+UnitTest scrollbarsize("scrollbar size", ScrollBarSizeTest::create);
+
+//
+// End of "$Id: $"
+//

_______________________________________________
fltk-commit mailing list
[email protected]
http://lists.easysw.com/mailman/listinfo/fltk-commit

Reply via email to