summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorAlbrecht Schlosser <albrechts.fltk@online.de>2022-08-07 15:08:40 +0200
committerAlbrecht Schlosser <albrechts.fltk@online.de>2022-08-07 16:00:41 +0200
commit713d276b1c0786da3390e4e78dc9de7bd31a8b62 (patch)
tree0444394c4d6d5bc75caff824dd344bdaf3d5e114 /test
parentf5b14397dd5cc6a76942ac3033f0f2cc40e4ee16 (diff)
Fl_Flex: support different margin sizes, improve docs
Support different margin sizes on all four edges. Default margin and gap size is now 0 (compatible with Fl_Pack). Doxygen: move the description from the constructor to the class declaration which constitutes a "description". Make some methods virtual and/or 'const'. Clarify demo programs, make them even more "FLTK style".
Diffstat (limited to 'test')
-rw-r--r--test/flex_demo.cxx102
-rw-r--r--test/flex_login.cxx44
2 files changed, 74 insertions, 72 deletions
diff --git a/test/flex_demo.cxx b/test/flex_demo.cxx
index fb2b73cef..67726910a 100644
--- a/test/flex_demo.cxx
+++ b/test/flex_demo.cxx
@@ -36,7 +36,7 @@ void debug_group(Fl_Group *g) {
#endif
} // debug_group
-Fl_Button *createButton(const char *caption) {
+Fl_Button *create_button(const char *caption) {
Fl_Button *rtn = new Fl_Button(0, 0, 120, 30, caption);
rtn->color(fl_rgb_color(225, 225, 225));
return rtn;
@@ -74,21 +74,21 @@ void toggle_cb(Fl_Widget *w, void *v) {
debug_group(flex);
}
-Fl_Flex *createRow() {
+Fl_Flex *create_row() {
Fl_Flex *row = new Fl_Flex(Fl_Flex::ROW);
{
- Fl_Button *toggle = createButton("hide OK button");
+ Fl_Button *toggle = create_button("hide OK button");
toggle->tooltip("hide() or show() OK button");
Fl_Box *box2 = new Fl_Box(0, 0, 120, 10, "Box2");
- Fl_Button * okay = createButton("OK");
+ Fl_Button * okay = create_button("OK");
new Fl_Input(0, 0, 120, 10, "");
toggle->callback(toggle_cb, okay);
Fl_Flex *col2 = new Fl_Flex(Fl_Flex::COLUMN);
{
- createButton("Top2");
- createButton("Bottom2");
+ create_button("Top2");
+ create_button("Bottom2");
col2->end();
col2->margin(0, 5);
col2->box(FL_FLAT_BOX);
@@ -110,59 +110,53 @@ Fl_Flex *createRow() {
int main(int argc, char **argv) {
Fl_Window *window = new Fl_Double_Window(100, 100, "Simple GUI Example");
- {
- Fl_Flex *col = new Fl_Flex(5, 5, 90, 90, Fl_Flex::COLUMN);
- {
- Fl_Flex *row = new Fl_Flex(Fl_Flex::ROW);
- row->color(FL_YELLOW);
- row->box(FL_FLAT_BOX);
- {
- createButton("Cancel");
- new Fl_Box(0, 0, 120, 10, "Box1");
- createButton("OK");
- new Fl_Input(0, 0, 120, 10, "");
-
- Fl_Flex *col1 = new Fl_Flex(Fl_Flex::COLUMN);
- {
- createButton("Top1");
- createButton("Bottom1");
- col1->end();
- col1->box(FL_FLAT_BOX);
- col1->color(fl_rgb_color(255, 128, 128));
- col1->margin(5, 5);
- }
-
- row->end();
- }
- col->set_size(createRow(), 90);
- createButton("Something1");
- row = new Fl_Flex(Fl_Flex::ROW);
- {
- Fl_Button *cancel = createButton("Cancel");
- Fl_Button *ok = createButton("OK");
- new Fl_Input(0, 0, 120, 10, "");
-
- row->set_size(cancel, 100);
- row->set_size(ok, 100);
- row->end();
- }
- createButton("Something2");
-
- col->set_size(row, 30);
- col->margin(0, 6);
- col->end();
- }
- window->resizable(col);
- window->color(fl_rgb_color(160, 180, 240));
- window->box(FL_FLAT_BOX);
- window->end();
- }
+ Fl_Flex *col = new Fl_Flex(5, 5, 90, 90, Fl_Flex::COLUMN);
+ Fl_Flex *row1 = new Fl_Flex(Fl_Flex::ROW);
+ row1->color(FL_YELLOW);
+ row1->box(FL_FLAT_BOX);
+ create_button("Cancel");
+ new Fl_Box(0, 0, 120, 10, "Box1");
+ create_button("OK");
+ new Fl_Input(0, 0, 120, 10, "");
+
+ Fl_Flex *col1 = new Fl_Flex(Fl_Flex::COLUMN);
+ create_button("Top1");
+ create_button("Bottom1");
+ col1->box(FL_FLAT_BOX);
+ col1->color(fl_rgb_color(255, 128, 128));
+ col1->margin(5, 5);
+ col1->end();
+ row1->end();
+
+ col->set_size(create_row(), 90); // sets height of created (anonymous) row #2
+
+ create_button("Something1"); // "row" #3
+
+ Fl_Flex *row4 = new Fl_Flex(Fl_Flex::ROW);
+ Fl_Button *cancel = create_button("Cancel");
+ Fl_Button *ok = create_button("OK");
+ new Fl_Input(0, 0, 120, 10, "");
+ row4->set_size(cancel, 100);
+ row4->set_size(ok, 100);
+ row4->end();
+
+ create_button("Something2"); // "row" #5
+
+ col->set_size(row4, 30);
+ col->margin(6, 10, 6, 10);
+ col->gap(6);
+ col->end();
+
+ window->resizable(col);
+ window->color(fl_rgb_color(160, 180, 240));
+ window->box(FL_FLAT_BOX);
+ window->end();
window->size_range(550, 330);
window->resize(0, 0, 640, 480);
window->show(argc, argv);
int ret = Fl::run();
- delete window;
+ delete window; // not necessary but useful to test for memory leaks
return ret;
}
diff --git a/test/flex_login.cxx b/test/flex_login.cxx
index 3923bcde3..e8098cbce 100644
--- a/test/flex_login.cxx
+++ b/test/flex_login.cxx
@@ -22,13 +22,15 @@
#include <FL/Fl_Button.H>
#include <FL/Fl_Input.H>
-Fl_Button *createButton(const char *caption) {
+Fl_Button *create_button(const char *caption) {
Fl_Button *rtn = new Fl_Button(0, 0, 100, 25, caption);
rtn->color(fl_rgb_color(225, 225, 225));
return rtn;
}
-void buttonsPanel(Fl_Flex *parent) {
+// create widgets inside a column, i.e. parent is type(COLUMN)
+
+void buttons_panel(Fl_Flex *parent) {
new Fl_Box(0, 0, 0, 0, "");
Fl_Box *w = new Fl_Box(0, 0, 0, 0, "Welcome to Flex Login");
@@ -57,8 +59,8 @@ void buttonsPanel(Fl_Flex *parent) {
Fl_Flex *brow = new Fl_Flex(Fl_Flex::ROW);
{
new Fl_Box(0, 0, 0, 0, "");
- Fl_Button *reg = createButton("Register");
- Fl_Button *login = createButton("Login");
+ Fl_Button *reg = create_button("Register");
+ Fl_Button *login = create_button("Login");
brow->set_size(reg, 80);
brow->set_size(login, 80);
@@ -77,7 +79,9 @@ void buttonsPanel(Fl_Flex *parent) {
parent->set_size(b, 30);
}
-void middlePanel(Fl_Flex *parent) {
+// create widgets inside a row, i.e. parent is type(ROW)
+
+void middle_panel(Fl_Flex *parent) {
new Fl_Box(0, 0, 0, 0, "");
Fl_Box *box = new Fl_Box(0, 0, 0, 0, "Image");
@@ -86,7 +90,7 @@ void middlePanel(Fl_Flex *parent) {
Fl_Box *spacer = new Fl_Box(0, 0, 0, 0, "");
Fl_Flex *bp = new Fl_Flex(Fl_Flex::COLUMN);
- buttonsPanel(bp);
+ buttons_panel(bp);
bp->end();
new Fl_Box(0, 0, 0, 0, "");
@@ -96,14 +100,19 @@ void middlePanel(Fl_Flex *parent) {
parent->set_size(bp, 300);
}
+// The main panel consists of three "rows" inside a column, i.e. parent is
+// type(COLUMN). The middle panel has a fixed size (200) such that the two
+// boxes take the remaining space and middle_panel has all widgets.
+
void mainPanel(Fl_Flex *parent) {
- new Fl_Box(0, 0, 0, 0, "");
+
+ new Fl_Box(0, 0, 0, 0, ""); // flexible separator
Fl_Flex *mp = new Fl_Flex(Fl_Flex::ROW);
- middlePanel(mp);
+ middle_panel(mp);
mp->end();
- new Fl_Box(0, 0, 0, 0, "");
+ new Fl_Box(0, 0, 0, 0, ""); // flexible separator
parent->set_size(mp, 200);
}
@@ -111,21 +120,20 @@ void mainPanel(Fl_Flex *parent) {
int main(int argc, char **argv) {
Fl_Window *window = new Fl_Double_Window(100, 100, "Simple GUI Example");
- {
- Fl_Flex *col = new Fl_Flex(5, 5, 90, 90, Fl_Flex::COLUMN);
- mainPanel(col);
- col->end();
- window->resizable(col);
- window->color(fl_rgb_color(250, 250, 250));
- window->end();
- }
+ Fl_Flex *col = new Fl_Flex(5, 5, 90, 90, Fl_Flex::COLUMN);
+ mainPanel(col);
+ col->end();
+
+ window->resizable(col);
+ window->color(fl_rgb_color(250, 250, 250));
+ window->end();
window->resize(0, 0, 640, 480);
window->size_range(550, 250);
window->show(argc, argv);
int ret = Fl::run();
- delete window;
+ delete window; // not necessary but useful to test for memory leaks
return ret;
}