Greg Ercolano wrote:
> OK, just checked in the new Fl_Browser scrollbar stuff as r6737.
Just checked in Fl_Help_View scrollbar size mods as r6740.
The following (modified) program tests both HelpView and Browser
widgets together. Fun to look at.
* * *
#include <string.h>
#include <FL/Fl.H>
#include <FL/Fl_Double_Window.H>
#include <FL/Fl_Browser.H>
#include <FL/Fl_Help_View.H>
#include <FL/Fl_Text_Editor.H>
#include <FL/Fl_Value_Slider.H>
//
// Test new 1.3.x global vs. local scrollbar sizing
//
const char *G_text[] = {
"The NATO phonetic alphabet, or the international radiotelephony spelling
alphabet.",
"Alpha", "Bravo", "Charlie", "Delta", "Echo", "Foxtrot", "Golf", "Hotel",
"India",
"Juliet", "Kilo", "Lima", "Mike", "November", "Oscar", "Papa", "Quebec",
"Romeo",
"Sierra", "Tango", "Uniform", "Victor", "Whiskey", "X-ray", "Yankee",
"Zulu", 0
};
Fl_Browser* makebrow(int X,int Y,int W,int H,const char*L=0, const char
*which="both") {
Fl_Browser *b = new Fl_Browser(X,Y,W,H,L);
b->type(FL_MULTI_BROWSER);
b->align(FL_ALIGN_TOP);
switch ( which[0] ) {
case 'b': // 'b'oth scrollbars
for ( int t=0; G_text[t]; t++ ) { b->add(G_text[t]); }
break;
case 'h': // 'h'orizontal scrollbar only
// Add only first line, which is wide
b->add(G_text[0]); break;
break;
case 'v': // 'v'ertical scrollbar only
// Skip first line so we only add short strings
for ( int t=1; G_text[t]; t++ ) { b->add(G_text[t]); }
break;
}
return(b);
}
Fl_Help_View* makehelp(int X,int Y,int W,int H,const char*L=0,const char
*which="both") {
Fl_Help_View *help = new Fl_Help_View(X,Y,W,H,L);
help->align(FL_ALIGN_TOP);
char s[4096] = "<PRE>\n"; // ensures horiz scroll
switch ( which[0] ) {
case 'b': // 'b'oth scrollbars
for ( int t=0; G_text[t]; t++ ) { strcat(s, G_text[t]); strcat(s,
"\n"); }
break;
case 'h': // 'h'orizontal scrollbar only
// Add only first line, which is wide
strcat(s, G_text[0]);
break;
case 'v': // 'v'ertical scrollbar only
// Skip first line so we only add short strings
for ( int t=1; G_text[t]; t++ ) { strcat(s, G_text[t]); strcat(s,
"\n"); }
break;
}
help->value(s);
return(help);
}
void slidebrow_cb(Fl_Widget *w, void *data) {
Fl_Value_Slider *in = (Fl_Value_Slider*)w;
Fl_Browser *brow = (Fl_Browser*)data;
int val = in->value();
brow->scrollbar_size(val);
w->window()->redraw();
}
void slidehelp_cb(Fl_Widget *w, void *data) {
Fl_Value_Slider *in = (Fl_Value_Slider*)w;
Fl_Help_View *help = (Fl_Help_View*)data;
help->scrollbar_size(in->value());
w->window()->redraw();
}
void slideglob_cb(Fl_Widget *w, void*) {
Fl_Value_Slider *in = (Fl_Value_Slider*)w;
Fl::scrollbar_size(in->value());
w->window()->redraw();
}
int main(int argc, char *argv[]) {
Fl_Double_Window *win = new Fl_Double_Window(830,700,"Scrollbar Size
Test");
// Browsers
Fl_Browser *brow_a = makebrow( 10,50,150,150,"Browser A", "both");
makebrow(170,50,150,150,"Browser B", "both");
makebrow(330,50,150,150,"Browser Hor Only", "hor");
makebrow(490,50,150,150,"Browser Ver Only", "ver");
// Help viewers
Fl_Help_View *help_a = makehelp( 10,230,150,150,"HelpView A",
"both");
makehelp(170,230,150,150,"HelpView B",
"both");
makehelp(330,230,150,150,"HelpView Hor Only", "hor");
makehelp(490,230,150,150,"HelpView Ver Only", "ver");
int sx = 660;
int sy = 160;
// Slider for global scrollsize
Fl_Value_Slider *slide_glob = new Fl_Value_Slider(sx,sy,150,18,"Global
Scroll Size");
slide_glob->value(Fl::scrollbar_size());
slide_glob->type(FL_HORIZONTAL);
slide_glob->align(FL_ALIGN_BOTTOM);
slide_glob->range(0.0, 30.0);
slide_glob->step(1.0);
slide_glob->callback(slideglob_cb);
slide_glob->labelsize(12);
slide_glob->color(Fl_Color(10));
sy += 50;
// Slider for browser scrollsize
Fl_Value_Slider *slide_browa = new Fl_Value_Slider(sx,sy,150,18,"'A'
Browser Scroll Size");
slide_browa->value(brow_a->scrollbar_size());
slide_browa->type(FL_HORIZONTAL);
slide_browa->align(FL_ALIGN_BOTTOM);
slide_browa->range(0.0, 30.0);
slide_browa->step(1.0);
slide_browa->callback(slidebrow_cb, (void*)brow_a);
slide_browa->labelsize(12);
sy += 50;
// Slider for help scrollsize
Fl_Value_Slider *slide_helpa = new Fl_Value_Slider(sx,sy,150,18,"'A'
HelpView Scroll Size");
slide_helpa->value(help_a->scrollbar_size());
slide_helpa->type(FL_HORIZONTAL);
slide_helpa->align(FL_ALIGN_BOTTOM);
slide_helpa->range(0.0, 30.0);
slide_helpa->step(1.0);
slide_helpa->callback(slidehelp_cb, (void*)help_a);
slide_helpa->labelsize(12);
sy += 50;
win->show(argc, argv);
return(Fl::run());
}
_______________________________________________
fltk-dev mailing list
[email protected]
http://lists.easysw.com/mailman/listinfo/fltk-dev