summaryrefslogtreecommitdiff
path: root/test/demo.cxx
diff options
context:
space:
mode:
authorMatthias Melcher <fltk@matthiasm.com>2010-02-20 21:14:47 +0000
committerMatthias Melcher <fltk@matthiasm.com>2010-02-20 21:14:47 +0000
commit2f82fd066321cde3e225fc87a9469849215413eb (patch)
tree0fb84acd8268a37ab45c2f2b3c358f6c962e75ea /test/demo.cxx
parent7ae0c170ad2f63ac7e27d0496cd9c167e2bd0cbd (diff)
Mixed bag. Please see CHANGES.
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3@7117 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
Diffstat (limited to 'test/demo.cxx')
-rw-r--r--test/demo.cxx114
1 files changed, 109 insertions, 5 deletions
diff --git a/test/demo.cxx b/test/demo.cxx
index 69a853523..dd1f5ec11 100644
--- a/test/demo.cxx
+++ b/test/demo.cxx
@@ -25,6 +25,104 @@
// http://www.fltk.org/str.php
//
+const char *default_menu[] = {
+ "# Menu description file for the generic demo program\n",
+ "#\n",
+ "# Each line consists of three fields, separated by :\n",
+ "#\n",
+ "# - menu name : To which the item belongs (starts with @)\n",
+ "# - item name : Placed on button. (use \\n for newline)\n",
+ "# - command name: To be executed. Use a menu name to define a submenu.\n",
+ "#\n",
+ "# @main indicates the main menu.\n",
+ "#\n",
+ "\n",
+ "@main:Widget\\nTests:@x\n",
+ "@x:Fl_Browser:browser\n",
+ "@x:Fl_Input:input\n",
+ "@x:Fl_Output:output\n",
+ "@x:Fl_Button:radio\n",
+ "@x:Fl_Tabs:tabs\n",
+ "@x:Fl_Tile:tile\n",
+ "@x:Fl_Scroll:scroll\n",
+ "@x:Fl_Pack:pack\n",
+ "@x:more...:@xm\n",
+ "@xm:Fl_Menu:menubar\n",
+ "@xm:Fl_Table:table\n",
+ "@xm:Fl_Tree:tree\n",
+ "\n",
+ "@main:Window\\nTests:@w\n",
+ "@w:overlay:overlay\n",
+ "@w:subwindow:subwindow\n",
+ "@w:double\\nbuffer:doublebuffer\n",
+ "@w:GL window:cube\n",
+ "@w:GL overlay:gl_overlay\n",
+ "@w:iconize:iconize\n",
+ "@w:fullscreen:fullscreen\n",
+ "@w:resizable:resizebox\n",
+ "@w:resize:resize\n",
+ "\n",
+ "@main:Drawing\\nTests:@d\n",
+ "@d:Images:@di\n",
+ "@di:Fl_Bitmap:bitmap\n",
+ "@di:Fl_Pixmap:pixmap\n",
+ "@di:Fl_RGB\\n_Image:image\n",
+ "@di:Fl_Shared\\n_Image:pixmap_browser\n",
+ "@di:Fl_Tiled\\n_Image:tiled_image\n",
+ "@d:cursor:cursor\n",
+ "@d:labels:label\n",
+ "@d:fl_arc:arc\n",
+ "@d:fl_curve:curve\n",
+ "@d:fl_line_style:line_style\n",
+ "\n",
+ "@main:Events:@u\n",
+ "@u:navigation:navigation\n",
+ "@u:minimum update:minimum\n",
+ "@u:keyboard:keyboard\n",
+ "@u:fast && slow widgets:fast_slow\n",
+ "@u:inactive:inactive\n",
+ "\n",
+ "@main:Fluid\\n(UI design tool):../fluid/fluid valuators.fl\n",
+ "\n",
+ "@main:Cool\\nDemos:@e\n",
+ "@e:X Color\\nBrowser:colbrowser\n",
+ "@e:Mandelbrot:mandelbrot\n",
+ "@e:Fractals:fractals\n",
+ "@e:Puzzle:glpuzzle\n",
+ "@e:Block\\nAttack!:blocks\n",
+ "@e:Checkers:checkers\n",
+ "@e:Sudoku:sudoku\n",
+ "\n",
+ "@main:Other\\nTests:@o\n",
+ "@o:Color Choosers:color_chooser\n",
+ "@o:File Chooser:file_chooser\n",
+ "@o:Native File Chooser:native-filechooser\n",
+ "@o:Font Tests:@of\n",
+ "@of:Fonts:fonts\n",
+ "@of:UTF-8:utf8\n",
+ "@o:HelpDialog:help\n",
+ "@o:Input Choice:input_choice\n",
+ "@o:Preferences:preferences\n",
+ "@o:Threading:threads\n",
+ "@o:XForms Emulation:forms\n",
+ "\n",
+ "@main:Tutorial\\nfrom\\nManual:@j\n",
+ "@j:ask\\n(modified):ask\n",
+ "@j:button:button\n",
+ "@j:CubeView:CubeView\n",
+ "@j:editor:editor editor.cxx\n",
+ "@j:hello:hello\n",
+ "@j:shape:shape\n",
+ "\n",
+ "@main:Images\\nfor\\nManual:@i\n",
+ "@i:valuators:valuators\n",
+ "@i:symbols:symbols\n",
+ "@i:buttons:buttons\n",
+ "@i:clock:clock\n",
+ "@i:popups:message\n",
+ "@i:boxtypes:boxtype\n",
+ 0 };
+
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
@@ -316,9 +414,9 @@ void doexit(Fl_Widget *, void *) {exit(0);}
int load_the_menu(const char* fname)
/* Loads the menu file. Returns whether successful. */
{
- FILE *fin;
+ FILE *fin = 0;
char line[256], mname[64],iname[64],cname[64];
- int i,j;
+ int i,j, mi = 0;
fin = fopen(fname,"r");
if (fin == NULL)
{
@@ -333,10 +431,15 @@ int load_the_menu(const char* fname)
fin = fopen(fname,"r");
if (fin == NULL)
#endif
- return 0;
}
for (;;) {
- if (fgets(line,256,fin) == NULL) break;
+ if (fin) {
+ if (fgets(line,256,fin) == NULL) break;
+ } else {
+ const char *m = default_menu[mi++];
+ if (!m) break;
+ strcpy(line, m);
+ }
// remove all carriage returns that Cygwin may have inserted
char *s = line, *d = line;
for (;;++d) {
@@ -370,7 +473,8 @@ int load_the_menu(const char* fname)
cname[j] = '\0';
addto_menu(mname,iname,cname);
}
- fclose(fin);
+ if (fin)
+ fclose(fin);
return 1;
}