summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorMichael R Sweet <michael.r.sweet@gmail.com>1999-01-04 19:25:40 +0000
committerMichael R Sweet <michael.r.sweet@gmail.com>1999-01-04 19:25:40 +0000
commitb95db33f2cbd30213cadd4859f567e1dae32ef47 (patch)
treea28848521b20e06870490ebacf7bd22e3aa6dedc /test
parentea2cbbd5530915c508e86fed9a437adb0b2149f8 (diff)
Lots of changes:
- Added #defines for Visual C++ to speed up compiles. - Added FLTK.DLL project to visualc directory. - Added editor project to visualc directory. - Added icon() method to Fl_Window class. - Implemented xclass() method for WIN32. - Fixed extern declaration of fl_send_extra_move in Fl_Menu_Window.cxx. - scandir_win32.c needed to include <stdlib.h>. - Added fix from Bill for fl_width() bug. - Updated fix for Fl_Input to default to FL_DOWN_BOX. - Added visible() check for children of Fl_Pack. - Added WinMain() function to library. - Now show console window in debug mode. - Fixed demo.menu and demo.cxx to work under WIN32. git-svn-id: file:///fltk/svn/fltk/trunk@180 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
Diffstat (limited to 'test')
-rw-r--r--test/demo.cxx568
-rw-r--r--test/demo.menu105
-rw-r--r--test/demod.menu80
3 files changed, 425 insertions, 328 deletions
diff --git a/test/demo.cxx b/test/demo.cxx
index ca337c921..d8263420e 100644
--- a/test/demo.cxx
+++ b/test/demo.cxx
@@ -1,276 +1,292 @@
-//
-// "$Id: demo.cxx,v 1.4 1998/12/02 15:52:41 mike Exp $"
-//
-// Main demo program for the Fast Light Tool Kit (FLTK).
-//
-// Copyright 1998 by Bill Spitzak and others.
-//
-// This library is free software; you can redistribute it and/or
-// modify it under the terms of the GNU Library General Public
-// License as published by the Free Software Foundation; either
-// version 2 of the License, or (at your option) any later version.
-//
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// Library General Public License for more details.
-//
-// You should have received a copy of the GNU Library General Public
-// License along with this library; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
-// USA.
-//
-// Please report all bugs and problems to "fltk-bugs@easysw.com".
-//
-
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-#if defined(WIN32) && !defined(CYGNUS)
-# include <direct.h>
-//# define chdir _chdir
-#else
-# include <unistd.h>
-#endif
-#include <FL/Fl.H>
-#include <FL/Fl_Window.H>
-#include <FL/Fl_Box.H>
-#include <FL/Fl_Button.H>
-#include <FL/filename.H>
-
-/* The form description */
-
-void doexit(Fl_Widget *, void *);
-void doback(Fl_Widget *, void *);
-void dobut(Fl_Widget *, long);
-
-Fl_Window *form;
-Fl_Button *but[9];
-
-void create_the_forms() {
- Fl_Widget *obj;
- form = new Fl_Window(370, 450);
- obj = new Fl_Box(FL_FRAME_BOX,20,390,330,40,"Fltk Demonstration");
- obj->color(FL_GRAY-4);
- obj->labelsize(24);
- obj->labelfont(FL_BOLD);
- obj->labeltype(FL_ENGRAVED_LABEL);
- obj = new Fl_Box(FL_FRAME_BOX,20,50,330,330,0);
- obj->color(FL_GRAY-8);
- obj = new Fl_Button(130,10,110,30,"Exit");
- obj->callback(doexit);
- obj = new Fl_Button(20,50,330,380); obj->type(FL_HIDDEN_BUTTON);
- obj->callback(doback);
- obj = but[0] = new Fl_Button(40,270,90,90);
- obj = but[1] = new Fl_Button(140,270,90,90);
- obj = but[2] = new Fl_Button(240,270,90,90);
- obj = but[5] = new Fl_Button(240,170,90,90);
- obj = but[4] = new Fl_Button(140,170,90,90);
- obj = but[3] = new Fl_Button(40,170,90,90);
- obj = but[6] = new Fl_Button(40,70,90,90);
- obj = but[7] = new Fl_Button(140,70,90,90);
- obj = but[8] = new Fl_Button(240,70,90,90);
- for (int i=0; i<9; i++) {
- but[i]->align(FL_ALIGN_WRAP);
- but[i]->callback(dobut, i);
- }
- form->forms_end();
-}
-
-/* Maintaining and building up the menus. */
-
-typedef struct {
- char name[64];
- int numb;
- char iname[9][64];
- char icommand[9][64];
-} MENU;
-
-#define MAXMENU 32
-
-MENU menus[MAXMENU];
-int mennumb = 0;
-
-int find_menu(char nnn[])
-/* Returns the number of a given menu name. */
-{
- int i;
- for (i=0; i<mennumb; i++)
- if (strcmp(menus[i].name,nnn) == 0) return i;
- return -1;
-}
-
-void create_menu(char nnn[])
-/* Creates a new menu with name nnn */
-{
- if (mennumb == MAXMENU -1) return;
- strcpy(menus[mennumb].name,nnn);
- menus[mennumb].numb = 0;
- mennumb++;
-}
-
-void addto_menu(char men[], char item[], char comm[])
-/* Adds an item to a menu */
-{
- int n = find_menu(men);
- if (n<0) { create_menu(men); n = find_menu(men); }
- if (menus[n].numb == 9) return;
- strcpy(menus[n].iname[menus[n].numb],item);
- strcpy(menus[n].icommand[menus[n].numb],comm);
- menus[n].numb++;
-}
-
-/* Button to Item conversion and back. */
-
-int b2n[][9] = {
- { -1, -1, -1, -1, 0, -1, -1, -1, -1},
- { -1, -1, -1, 0, -1, 1, -1, -1, -1},
- { 0, -1, -1, -1, 1, -1, -1, -1, 2},
- { 0, -1, 1, -1, -1, -1, 2, -1, 3},
- { 0, -1, 1, -1, 2, -1, 3, -1, 4},
- { 0, -1, 1, 2, -1, 3, 4, -1, 5},
- { 0, -1, 1, 2, 3, 4, 5, -1, 6},
- { 0, 1, 2, 3, -1, 4, 5, 6, 7},
- { 0, 1, 2, 3, 4, 5, 6, 7, 8}
- };
-int n2b[][9] = {
- { 4, -1, -1, -1, -1, -1, -1, -1, -1},
- { 3, 5, -1, -1, -1, -1, -1, -1, -1},
- { 0, 4, 8, -1, -1, -1, -1, -1, -1},
- { 0, 2, 6, 8, -1, -1, -1, -1, -1},
- { 0, 2, 4, 6, 8, -1, -1, -1, -1},
- { 0, 2, 3, 5, 6, 8, -1, -1, -1},
- { 0, 2, 3, 4, 5, 6, 8, -1, -1},
- { 0, 1, 2, 3, 5, 6, 7, 8, -1},
- { 0, 1, 2, 3, 4, 5, 6, 7, 8}
- };
-
-int but2numb(int bnumb, int maxnumb)
-/* Transforms a button number to an item number when there are
- maxnumb items in total. -1 if the button should not exist. */
- { return b2n[maxnumb][bnumb]; }
-
-int numb2but(int inumb, int maxnumb)
-/* Transforms an item number to a button number when there are
- maxnumb items in total. -1 if the item should not exist. */
- { return n2b[maxnumb][inumb]; }
-
-/* Pushing and Popping menus */
-
-char stack[64][32];
-char stsize = 0;
-
-void push_menu(char nnn[])
-/* Pushes a menu to be visible */
-{
- int n,i,bn;
- int men = find_menu(nnn);
- if (men < 0) return;
- n = menus[men].numb;
- for (i=0; i<9; i++) but[i]->hide();
- for (i=0; i<n; i++)
- {
- bn = numb2but(i,n-1);
- but[bn]->show();
- but[bn]->label(menus[men].iname[i]);
-// if (menus[men].icommand[i][0] == '@')
-// but[bn]->color(FL_GRAY-8);
-// else
-// but[bn]->color(FL_GRAY);
- }
- strcpy(stack[stsize],nnn);
- stsize++;
-}
-
-void pop_menu()
-/* Pops a menu */
-{
- if (stsize<=1) return;
- stsize -= 2;
- push_menu(stack[stsize]);
-}
-
-/* The callback Routines */
-
-void dobut(Fl_Widget *, long arg)
-/* handles a button push */
-{
- int men = find_menu(stack[stsize-1]);
- int n = menus[men].numb;
- int bn = but2numb( (int) arg, n-1);
- if (menus[men].icommand[bn][0] == '@')
- push_menu(menus[men].icommand[bn]);
- else
- system(menus[men].icommand[bn]);
-}
-
-void doback(Fl_Widget *, void *) {pop_menu();}
-
-void doexit(Fl_Widget *, void *) {exit(0);}
-
-int load_the_menu(const char fname[])
-/* Loads the menu file. Returns whether successful. */
-{
- FILE *fin;
- char line[256], mname[64],iname[64],cname[64];
- int i,j;
- fin = fopen(fname,"r");
- if (fin == NULL)
- {
-// fl_show_message("ERROR","","Cannot read the menu description file.");
- return 0;
- }
- for (;;) {
- if (fgets(line,256,fin) == NULL) break;
- j = 0; i = 0;
- while (line[i] == ' ' || line[i] == '\t') i++;
- if (line[i] == '\n') continue;
- if (line[i] == '#') continue;
- while (line[i] != ':' && line[i] != '\n') mname[j++] = line[i++];
- mname[j] = '\0';
- if (line[i] == ':') i++;
- j = 0;
- while (line[i] != ':' && line[i] != '\n')
- {
- if (line[i] == '\\') {
- i++;
- if (line[i] == 'n') iname[j++] = '\n';
- else iname[j++] = line[i];
- i++;
- } else
- iname[j++] = line[i++];
- }
- iname[j] = '\0';
- if (line[i] == ':') i++;
- j = 0;
- while (line[i] != ':' && line[i] != '\n') cname[j++] = line[i++];
- cname[j] = '\0';
- addto_menu(mname,iname,cname);
- }
- fclose(fin);
- return 1;
-}
-
-int main(int argc, char **argv) {
- create_the_forms();
- char buf[256];
- strcpy(buf, argv[0]);
- filename_setext(buf,".menu");
- const char *fname = buf;
- int i = 0;
- if (!Fl::args(argc,argv,i) || i < argc-1)
- Fl::fatal("Usage: %s <switches> <menufile>\n%s",Fl::help);
- if (i < argc) fname = argv[i];
- if (!load_the_menu(fname)) Fl::fatal("Can't open %s",fname);
- strcpy(buf,fname);
- const char *c = filename_name(buf);
- if (c > buf) {buf[c-buf] = 0; chdir(buf);}
- push_menu("@main");
- form->show(argc,argv);
- Fl::run();
- return 0;
-}
-
-//
-// End of "$Id: demo.cxx,v 1.4 1998/12/02 15:52:41 mike Exp $".
-//
+//
+// "$Id: demo.cxx,v 1.5 1999/01/04 19:25:06 mike Exp $"
+//
+// Main demo program for the Fast Light Tool Kit (FLTK).
+//
+// Copyright 1998 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@easysw.com".
+//
+
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+#if defined(WIN32) && !defined(CYGNUS)
+# include <direct.h>
+#else
+# include <unistd.h>
+#endif
+#include <FL/Fl.H>
+#include <FL/Fl_Window.H>
+#include <FL/Fl_Box.H>
+#include <FL/Fl_Button.H>
+#include <FL/filename.H>
+#include <FL/x.H>
+
+/* The form description */
+
+void doexit(Fl_Widget *, void *);
+void doback(Fl_Widget *, void *);
+void dobut(Fl_Widget *, long);
+
+Fl_Window *form;
+Fl_Button *but[9];
+
+void create_the_forms() {
+ Fl_Widget *obj;
+ form = new Fl_Window(370, 450);
+ obj = new Fl_Box(FL_FRAME_BOX,20,390,330,40,"FLTK Demonstration");
+ obj->color(FL_GRAY-4);
+ obj->labelsize(24);
+ obj->labelfont(FL_BOLD);
+ obj->labeltype(FL_ENGRAVED_LABEL);
+ obj = new Fl_Box(FL_FRAME_BOX,20,50,330,330,0);
+ obj->color(FL_GRAY-8);
+ obj = new Fl_Button(130,10,110,30,"Exit");
+ obj->callback(doexit);
+ obj = new Fl_Button(20,50,330,380); obj->type(FL_HIDDEN_BUTTON);
+ obj->callback(doback);
+ obj = but[0] = new Fl_Button(40,270,90,90);
+ obj = but[1] = new Fl_Button(140,270,90,90);
+ obj = but[2] = new Fl_Button(240,270,90,90);
+ obj = but[5] = new Fl_Button(240,170,90,90);
+ obj = but[4] = new Fl_Button(140,170,90,90);
+ obj = but[3] = new Fl_Button(40,170,90,90);
+ obj = but[6] = new Fl_Button(40,70,90,90);
+ obj = but[7] = new Fl_Button(140,70,90,90);
+ obj = but[8] = new Fl_Button(240,70,90,90);
+ for (int i=0; i<9; i++) {
+ but[i]->align(FL_ALIGN_WRAP);
+ but[i]->callback(dobut, i);
+ }
+ form->forms_end();
+}
+
+/* Maintaining and building up the menus. */
+
+typedef struct {
+ char name[64];
+ int numb;
+ char iname[9][64];
+ char icommand[9][64];
+} MENU;
+
+#define MAXMENU 32
+
+MENU menus[MAXMENU];
+int mennumb = 0;
+
+int find_menu(char nnn[])
+/* Returns the number of a given menu name. */
+{
+ int i;
+ for (i=0; i<mennumb; i++)
+ if (strcmp(menus[i].name,nnn) == 0) return i;
+ return -1;
+}
+
+void create_menu(char nnn[])
+/* Creates a new menu with name nnn */
+{
+ if (mennumb == MAXMENU -1) return;
+ strcpy(menus[mennumb].name,nnn);
+ menus[mennumb].numb = 0;
+ mennumb++;
+}
+
+void addto_menu(char men[], char item[], char comm[])
+/* Adds an item to a menu */
+{
+ int n = find_menu(men);
+ if (n<0) { create_menu(men); n = find_menu(men); }
+ if (menus[n].numb == 9) return;
+ strcpy(menus[n].iname[menus[n].numb],item);
+ strcpy(menus[n].icommand[menus[n].numb],comm);
+ menus[n].numb++;
+}
+
+/* Button to Item conversion and back. */
+
+int b2n[][9] = {
+ { -1, -1, -1, -1, 0, -1, -1, -1, -1},
+ { -1, -1, -1, 0, -1, 1, -1, -1, -1},
+ { 0, -1, -1, -1, 1, -1, -1, -1, 2},
+ { 0, -1, 1, -1, -1, -1, 2, -1, 3},
+ { 0, -1, 1, -1, 2, -1, 3, -1, 4},
+ { 0, -1, 1, 2, -1, 3, 4, -1, 5},
+ { 0, -1, 1, 2, 3, 4, 5, -1, 6},
+ { 0, 1, 2, 3, -1, 4, 5, 6, 7},
+ { 0, 1, 2, 3, 4, 5, 6, 7, 8}
+ };
+int n2b[][9] = {
+ { 4, -1, -1, -1, -1, -1, -1, -1, -1},
+ { 3, 5, -1, -1, -1, -1, -1, -1, -1},
+ { 0, 4, 8, -1, -1, -1, -1, -1, -1},
+ { 0, 2, 6, 8, -1, -1, -1, -1, -1},
+ { 0, 2, 4, 6, 8, -1, -1, -1, -1},
+ { 0, 2, 3, 5, 6, 8, -1, -1, -1},
+ { 0, 2, 3, 4, 5, 6, 8, -1, -1},
+ { 0, 1, 2, 3, 5, 6, 7, 8, -1},
+ { 0, 1, 2, 3, 4, 5, 6, 7, 8}
+ };
+
+int but2numb(int bnumb, int maxnumb)
+/* Transforms a button number to an item number when there are
+ maxnumb items in total. -1 if the button should not exist. */
+ { return b2n[maxnumb][bnumb]; }
+
+int numb2but(int inumb, int maxnumb)
+/* Transforms an item number to a button number when there are
+ maxnumb items in total. -1 if the item should not exist. */
+ { return n2b[maxnumb][inumb]; }
+
+/* Pushing and Popping menus */
+
+char stack[64][32];
+char stsize = 0;
+
+void push_menu(char nnn[])
+/* Pushes a menu to be visible */
+{
+ int n,i,bn;
+ int men = find_menu(nnn);
+ if (men < 0) return;
+ n = menus[men].numb;
+ for (i=0; i<9; i++) but[i]->hide();
+ for (i=0; i<n; i++)
+ {
+ bn = numb2but(i,n-1);
+ but[bn]->show();
+ but[bn]->label(menus[men].iname[i]);
+ }
+ strcpy(stack[stsize],nnn);
+ stsize++;
+}
+
+void pop_menu()
+/* Pops a menu */
+{
+ if (stsize<=1) return;
+ stsize -= 2;
+ push_menu(stack[stsize]);
+}
+
+/* The callback Routines */
+
+void dobut(Fl_Widget *, long arg)
+/* handles a button push */
+{
+ char command[255];
+ int men = find_menu(stack[stsize-1]);
+ int n = menus[men].numb;
+ int bn = but2numb( (int) arg, n-1);
+ if (menus[men].icommand[bn][0] == '@')
+ push_menu(menus[men].icommand[bn]);
+ else {
+#ifdef WIN32
+ STARTUPINFO suInfo; // Process startup information
+ PROCESS_INFORMATION prInfo; // Process information
+
+ memset(&suInfo, 0, sizeof(suInfo));
+ suInfo.cb = sizeof(suInfo);
+
+# ifdef _DEBUG
+ sprintf(command, "%sd.exe", menus[men].icommand[bn]);
+# else
+ sprintf(command, "%s.exe", menus[men].icommand[bn]);
+# endif // _DEBUG
+
+ CreateProcess(NULL, command, NULL, NULL, FALSE,
+ NORMAL_PRIORITY_CLASS, NULL, NULL, &suInfo, &prInfo);
+#else
+ sprintf(command, "./%s &", menus[men].icommand[bn]);
+ system(command);
+#endif // WIN32
+ }
+}
+
+void doback(Fl_Widget *, void *) {pop_menu();}
+
+void doexit(Fl_Widget *, void *) {exit(0);}
+
+int load_the_menu(const char fname[])
+/* Loads the menu file. Returns whether successful. */
+{
+ FILE *fin;
+ char line[256], mname[64],iname[64],cname[64];
+ int i,j;
+ fin = fopen(fname,"r");
+ if (fin == NULL)
+ {
+// fl_show_message("ERROR","","Cannot read the menu description file.");
+ return 0;
+ }
+ for (;;) {
+ if (fgets(line,256,fin) == NULL) break;
+ j = 0; i = 0;
+ while (line[i] == ' ' || line[i] == '\t') i++;
+ if (line[i] == '\n') continue;
+ if (line[i] == '#') continue;
+ while (line[i] != ':' && line[i] != '\n') mname[j++] = line[i++];
+ mname[j] = '\0';
+ if (line[i] == ':') i++;
+ j = 0;
+ while (line[i] != ':' && line[i] != '\n')
+ {
+ if (line[i] == '\\') {
+ i++;
+ if (line[i] == 'n') iname[j++] = '\n';
+ else iname[j++] = line[i];
+ i++;
+ } else
+ iname[j++] = line[i++];
+ }
+ iname[j] = '\0';
+ if (line[i] == ':') i++;
+ j = 0;
+ while (line[i] != ':' && line[i] != '\n') cname[j++] = line[i++];
+ cname[j] = '\0';
+ addto_menu(mname,iname,cname);
+ }
+ fclose(fin);
+ return 1;
+}
+
+int main(int argc, char **argv) {
+ create_the_forms();
+ char buf[256];
+ strcpy(buf, argv[0]);
+ filename_setext(buf,".menu");
+ const char *fname = buf;
+ int i = 0;
+ if (!Fl::args(argc,argv,i) || i < argc-1)
+ Fl::fatal("Usage: %s <switches> <menufile>\n%s",Fl::help);
+ if (i < argc) fname = argv[i];
+ if (!load_the_menu(fname)) Fl::fatal("Can't open %s",fname);
+ strcpy(buf,fname);
+ const char *c = filename_name(buf);
+ if (c > buf) {buf[c-buf] = 0; chdir(buf);}
+ push_menu("@main");
+ form->show(argc,argv);
+ Fl::run();
+ return 0;
+}
+
+//
+// End of "$Id: demo.cxx,v 1.5 1999/01/04 19:25:06 mike Exp $".
+//
diff --git a/test/demo.menu b/test/demo.menu
index 8e01a97ae..8347c22d5 100644
--- a/test/demo.menu
+++ b/test/demo.menu
@@ -10,70 +10,71 @@
#
@main:Widget\nTests:@x
- @x:Fl_Browser:./browser&
- @x:Fl_Input:./input&
- @x:Fl_Output:./output&
- @x:Fl_Button:./radio&
- @x:Fl_Tabs:./tabs&
- @x:Fl_Tile:./tile&
- @x:Fl_Scroll:./scroll&
- @x:Fl_Pack:./pack&
- @x:Fl_Menu:./menubar&
+ @x:Fl_Browser:browser
+ @x:Fl_Input:input
+ @x:Fl_Output:output
+ @x:Fl_Button:radio
+ @x:Fl_Tabs:tabs
+ @x:Fl_Tile:tile
+ @x:Fl_Scroll:scroll
+ @x:Fl_Pack:pack
+ @x:Fl_Menu:menubar
@main:Window\nTests:@w
- @w:overlay:./overlay&
- @w:subwindow:./subwindow&
- @w:double\nbuffer:./doublebuffer&
- @w:GL window:./cube&
- @w:GL overlay:./gl_overlay&
- @w:iconize:./iconize&
- @w:fullscreen:./fullscreen&
- @w:resizable:./resizebox&
- @w:resize:./resize&
+ @w:overlay:overlay
+ @w:subwindow:subwindow
+ @w:double\nbuffer:doublebuffer
+ @w:GL window:cube
+ @w:GL overlay:gl_overlay
+ @w:iconize:iconize
+ @w:fullscreen:fullscreen
+ @w:resizable:resizebox
+ @w:resize:resize
@main:Drawing\nTests:@d
- @d:Fl_Bitmap:./bitmap&
- @d:Fl_Pixmap:./pixmap&
- @d:Fl_Image:./image&
- @d:pixmap\nbrowser:./pixmap_browser&
- @d:cursor:./cursor&
- @d:labels:./label&
- @d:fl_arc:./arc&
- @d:fl_curve:./curve&
- @d:fonts:./fonts&
+ @d:Fl_Bitmap:bitmap
+ @d:Fl_Pixmap:pixmap
+ @d:Fl_Image:image
+ @d:pixmap\nbrowser:pixmap_browser
+ @d:cursor:cursor
+ @d:labels:label
+ @d:fl_arc:arc
+ @d:fl_curve:curve
+ @d:fonts:fonts
@main:Events:@u
- @u:navigation:./navigation&
- @u:minimum update:./minimum&
- @u:keyboard:./keyboard&
- @u:fast & slow widgets:./fast_slow&
- @u:inactive:./inactive&
+ @u:navigation:navigation
+ @u:minimum update:minimum
+ @u:keyboard:keyboard
+ @u:fast & slow widgets:fast_slow
+ @u:inactive:inactive
-@main:Fluid\n(UI design tool):../fluid/fluid valuators.fl&
+@main:Fluid\n(UI design tool):../fluid/fluid valuators.fl
@main:Cool\nDemos:@e
- @e:X Color\nBrowser:./colbrowser&
- @e:Mandelbrot:./mandelbrot&
- @e:Fractals:./fractals&
- @e:Puzzle:./glpuzzle&
- @e:shiny\nOpenGL\nbuttons:./shiny&
- @e:Checkers:./checkers&
+ @e:X Color\nBrowser:colbrowser
+ @e:Mandelbrot:mandelbrot
+ @e:Fractals:fractals
+ @e:Puzzle:glpuzzle
+ @e:shiny\nOpenGL\nbuttons:shiny
+ @e:Checkers:checkers
@main:Other\nTests:@o
- @o:color choosers:./color_chooser r&
- @o:file chooser:./file_chooser&
- @o:XForms Emulation:./forms&
+ @o:color choosers:color_chooser r
+ @o:file chooser:file_chooser
+ @o:XForms Emulation:forms
@main:Tutorial\nfrom\nManual:@j
- @j:hello:./hello&
- @j:button:./button&
- @j:ask\n(modified):./ask&
- @j:shape:./shape&
+ @j:ask\n(modified):ask
+ @j:button:button
+ @j:editor:editor
+ @j:hello:hello
+ @j:shape:shape
@main:Images\nfor\nManual:@i
- @i:valuators:./valuators&
- @i:symbols:./symbols&
- @i:buttons:./buttons&
- @i:clock:./clock&
- @i:popups:./message&
- @i:boxtypes:./boxtype&
+ @i:valuators:valuators
+ @i:symbols:symbols
+ @i:buttons:buttons
+ @i:clock:clock
+ @i:popups:message
+ @i:boxtypes:boxtype
diff --git a/test/demod.menu b/test/demod.menu
new file mode 100644
index 000000000..8347c22d5
--- /dev/null
+++ b/test/demod.menu
@@ -0,0 +1,80 @@
+# Menu description file for the generic demo program
+#
+# Each line consists of three fields, separated by :
+#
+# - menu name : To which the item belongs (starts with @)
+# - item name : Placed on button. (use \n for newline)
+# - command name: To be executed. Use a menu name to define a submenu.
+#
+# @main indicates the main menu.
+#
+
+@main:Widget\nTests:@x
+ @x:Fl_Browser:browser
+ @x:Fl_Input:input
+ @x:Fl_Output:output
+ @x:Fl_Button:radio
+ @x:Fl_Tabs:tabs
+ @x:Fl_Tile:tile
+ @x:Fl_Scroll:scroll
+ @x:Fl_Pack:pack
+ @x:Fl_Menu:menubar
+
+@main:Window\nTests:@w
+ @w:overlay:overlay
+ @w:subwindow:subwindow
+ @w:double\nbuffer:doublebuffer
+ @w:GL window:cube
+ @w:GL overlay:gl_overlay
+ @w:iconize:iconize
+ @w:fullscreen:fullscreen
+ @w:resizable:resizebox
+ @w:resize:resize
+
+@main:Drawing\nTests:@d
+ @d:Fl_Bitmap:bitmap
+ @d:Fl_Pixmap:pixmap
+ @d:Fl_Image:image
+ @d:pixmap\nbrowser:pixmap_browser
+ @d:cursor:cursor
+ @d:labels:label
+ @d:fl_arc:arc
+ @d:fl_curve:curve
+ @d:fonts:fonts
+
+@main:Events:@u
+ @u:navigation:navigation
+ @u:minimum update:minimum
+ @u:keyboard:keyboard
+ @u:fast & slow widgets:fast_slow
+ @u:inactive:inactive
+
+@main:Fluid\n(UI design tool):../fluid/fluid valuators.fl
+
+@main:Cool\nDemos:@e
+ @e:X Color\nBrowser:colbrowser
+ @e:Mandelbrot:mandelbrot
+ @e:Fractals:fractals
+ @e:Puzzle:glpuzzle
+ @e:shiny\nOpenGL\nbuttons:shiny
+ @e:Checkers:checkers
+
+@main:Other\nTests:@o
+ @o:color choosers:color_chooser r
+ @o:file chooser:file_chooser
+ @o:XForms Emulation:forms
+
+@main:Tutorial\nfrom\nManual:@j
+ @j:ask\n(modified):ask
+ @j:button:button
+ @j:editor:editor
+ @j:hello:hello
+ @j:shape:shape
+
+@main:Images\nfor\nManual:@i
+ @i:valuators:valuators
+ @i:symbols:symbols
+ @i:buttons:buttons
+ @i:clock:clock
+ @i:popups:message
+ @i:boxtypes:boxtype