mirror of
https://github.com/fltk/fltk.git
synced 2026-05-23 15:56:10 +08:00
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
This commit is contained in:
+55
-10
@@ -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$".
|
||||
//
|
||||
|
||||
Reference in New Issue
Block a user