summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorAlbrecht Schlosser <albrechts.fltk@online.de>2015-07-21 12:44:53 +0000
committerAlbrecht Schlosser <albrechts.fltk@online.de>2015-07-21 12:44:53 +0000
commit1763da659631b5c5dbefaee8674703b91e546294 (patch)
treedd23e0a8c55fbcb701d01cfb3ffdb26d86194300 /test
parent35704c82a35058a7a16bc9f6cf5a828674b46be1 (diff)
Update common dialog test program - add "recursive" dialog test.
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3@10805 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
Diffstat (limited to 'test')
-rw-r--r--test/ask.cxx65
1 files changed, 55 insertions, 10 deletions
diff --git a/test/ask.cxx b/test/ask.cxx
index 644dbcabd..ef42aad05 100644
--- a/test/ask.cxx
+++ b/test/ask.cxx
@@ -3,14 +3,10 @@
//
// Standard dialog test program for the Fast Light Tool Kit (FLTK).
//
-// Demonstrates how to use readqueue to see if a button has been
-// pushed, and to see if a window has been closed, thus avoiding
-// the need to define callbacks.
-//
// This also demonstrates how to trap attempts by the user to
// close the last window by overriding Fl::exit
//
-// Copyright 1998-2010 by Bill Spitzak and others.
+// Copyright 1998-2015 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
@@ -30,6 +26,7 @@
#include <FL/Fl_Input.H>
#include <FL/Fl_Button.H>
#include <FL/Fl_Return_Button.H>
+#include <FL/Fl_Box.H>
#include <FL/fl_ask.H>
#include <stdlib.h>
@@ -55,15 +52,60 @@ void window_callback(Fl_Widget*, void*) {
int hotspot = fl_message_hotspot();
fl_message_hotspot(0);
fl_message_title("note: no hotspot set for this dialog");
- int rep = fl_choice("Are you sure you want to quit?",
+ int rep = fl_choice("Are you sure you want to quit?",
"Cancel", "Quit", "Dunno");
fl_message_hotspot(hotspot);
- if (rep==1)
+ if (rep==1)
exit(0);
else if (rep==2)
fl_message("Well, maybe you should know before we quit.");
}
+/*
+ This timer callback shows a message dialog (fl_choice) window
+ every 5 seconds to test "recursive" common dialogs.
+
+ The timer can be stopped by clicking the button "Stop these funny popups"
+ or pressing the Enter key. As it is currently implemented, clicking the
+ "Close" button will reactivate the popups (only possible if "recursive"
+ dialogs are enabled, see below).
+
+ Note 1: This dialog box is blocked in FLTK 1.3.x if another common dialog
+ is already open because the window used is a static (i.e. permanently
+ allocated) Fl_Window instance. This should be fixed in FLTK 1.4.0.
+ See STR #334 (sic !) and also STR #2751 ("Limit input field characters").
+
+ Note 2: Chances are that this /might/ be fixed in FLTK 1.3.4, but
+ this is not decided yet. AlbrechtS - July 21, 2015.
+*/
+void timer_cb(void *) {
+
+ static int stop = 0;
+ double delta = 5.0;
+
+ Fl_Box *message_icon = (Fl_Box *)fl_message_icon();
+
+ Fl::repeat_timeout(delta, timer_cb);
+
+ if (stop == 1) {
+ message_icon->color(FL_WHITE);
+ return;
+ }
+
+ // Change the icon box color:
+ Fl_Color c = message_icon->color();
+ c = (c+1) % 32;
+ if (c == message_icon->labelcolor()) c++;
+ message_icon->color((Fl_Color)c);
+
+ // pop up a message:
+ stop = fl_choice("Timeout. Click the 'Close' button.\n"
+ "Note: this message is blocked in FLTK 1.3\n"
+ "if another message window is open.\n"
+ "This message should pop up every 5 seconds.",
+ "Close","Stop these funny popups",NULL);
+}
+
int main(int argc, char **argv) {
char buffer[128] = "Test text";
char buffer2[128] = "MyPassword";
@@ -79,15 +121,18 @@ int main(int argc, char **argv) {
window.resizable(&b);
window.show(argc, argv);
-// Also we test to see if the exit callback works:
+ // Also we test to see if the exit callback works:
window.callback(window_callback);
-// set default message window title
+ // Test: set default message window title:
// fl_message_title_default("Default Window Title");
+ // Test: multiple (nested, aka "recursive") popups
+ Fl::add_timeout(5.0, timer_cb);
+
return Fl::run();
}
-
+
//
// End of "$Id$".
//