diff options
| author | Albrecht Schlosser <albrechts.fltk@online.de> | 2023-01-12 00:25:21 +0100 |
|---|---|---|
| committer | Albrecht Schlosser <albrechts.fltk@online.de> | 2023-01-12 19:21:09 +0100 |
| commit | a29c0e36fda2c302b11a1fda6d522c7fd21b8a73 (patch) | |
| tree | 047c502faa337428e36eb162e434832070e01ea2 | |
| parent | bafd3fd3d792b530d39d3af06e087dc63d2a25a2 (diff) | |
Add Fl_Scheme_Choice to examples/tree-custom-draw-items
- add Fl_Scheme_Choice widget for quick scheme selection
- fix label alignment of selection box
- set selection_color()
- set selectbox()
- make the tree the resizable() of the window
| -rw-r--r-- | examples/tree-custom-draw-items.cxx | 28 |
1 files changed, 22 insertions, 6 deletions
diff --git a/examples/tree-custom-draw-items.cxx b/examples/tree-custom-draw-items.cxx index 8101b54e2..31328900d 100644 --- a/examples/tree-custom-draw-items.cxx +++ b/examples/tree-custom-draw-items.cxx @@ -2,7 +2,7 @@ // Demonstrate Fl_Tree custom item draw callback. - erco 11/09/2013 // // Copyright 2013 Greg Ercolano. -// Copyright 1998-2016 by Bill Spitzak and others. +// Copyright 1998-2023 by Bill Spitzak and others. // // This library is free software. Distribution and use rights are outlined in // the file "COPYING" which should have been included with this file. If this @@ -19,6 +19,7 @@ #include <FL/Fl.H> #include <FL/Fl_Double_Window.H> #include <FL/Fl_Tree.H> +#include <FL/Fl_Scheme_Choice.H> #ifndef MAX #define MAX(a,b) ((a)>(b))?(a):(b) @@ -77,9 +78,11 @@ public: } } // Render the label + int dx = Fl::box_dx(prefs().selectbox()) + 1; + int dw = Fl::box_dw(prefs().selectbox()) + 2; if ( render ) { fl_color(fg); - if ( label() ) fl_draw(label(), X,Y,W,H, FL_ALIGN_LEFT); + if ( label() ) fl_draw(label(), X+dx, Y, W-dw, H, FL_ALIGN_LEFT); } int lw=0, lh=0; if ( label() ) { @@ -117,12 +120,13 @@ void Timer_CB(void *data) { } int main(int argc, char *argv[]) { - Fl::scheme("gtk+"); - Fl_Double_Window *win = new Fl_Double_Window(350, 400, "Tree Custom Draw Items"); + Fl::scheme("gtk+"); // default scheme: can be overridden by commandline + Fl_Tree *tree = 0; + Fl_Double_Window *win = new Fl_Double_Window(350, 450, "Tree Custom Draw Items"); win->begin(); { // Create the tree - Fl_Tree *tree = new Fl_Tree(0, 0, win->w(), win->h()); + tree = new Fl_Tree(0, 0, win->w(), win->h() - 50); tree->showroot(0); // don't show root of tree tree->selectmode(FL_TREE_SELECT_MULTI); // multiselect @@ -166,11 +170,23 @@ int main(int argc, char *argv[]) { // Start with some items closed tree->close("Superjail"); + // Optional: set a "special" selection color (light blue) + tree->selection_color(0xcceeff00); + + // Optional: set a "special" box type for the selection box + + tree->selectbox(FL_THIN_UP_BOX); + + // Create the scheme choice box + + new Fl_Scheme_Choice((win->w() - 130) / 2, win->h() - 40, 130, 30, "Scheme: "); + // Set up a timer to keep time in tree updated Fl::add_timeout(0.2, Timer_CB, (void*)tree); } win->end(); - win->resizable(win); + win->resizable(tree); + win->size_range(300, 350); win->show(argc, argv); return(Fl::run()); } |
