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

Reply via email to