| 
							- //
 - // "$Id: menubar.cxx 7903 2010-11-28 21:06:39Z matt $"
 - //
 - // Menubar test program for the Fast Light Tool Kit (FLTK).
 - //
 - // Copyright 1998-2010 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 on the following page:
 - //
 - //     http://www.fltk.org/str.php
 - //
 - 
 - #include <FL/Fl.H>
 - #include <FL/Fl_Box.H>
 - #include <FL/Fl_Double_Window.H>
 - #include <FL/Fl_Menu_Bar.H>
 - #include <FL/Fl_Toggle_Button.H>
 - #include <FL/Fl_Menu_Button.H>
 - #include <FL/Fl_Choice.H>
 - #include <stdio.h>
 - #include <stdlib.h>
 - #include "../src/flstring.h"
 - #include <FL/fl_draw.H>
 - 
 - void window_cb(Fl_Widget* w, void*) {
 -   puts("window callback called");
 -   ((Fl_Double_Window *)w)->hide();
 - }
 - 
 - void test_cb(Fl_Widget* w, void*) {
 -   Fl_Menu_* mw = (Fl_Menu_*)w;
 -   const Fl_Menu_Item* m = mw->mvalue();
 -   if (!m)
 -     printf("NULL\n");
 -   else if (m->shortcut())
 -     printf("%s - %s\n", m->label(), fl_shortcut_label(m->shortcut()));
 -   else
 -     printf("%s\n", m->label());
 - }
 - 
 - void quit_cb(Fl_Widget*, void*) {exit(0);}
 - 
 - Fl_Menu_Item hugemenu[100];
 - 
 - Fl_Menu_Item menutable[] = {
 -   {"foo",0,0,0,FL_MENU_INACTIVE},
 -   {"&File",0,0,0,FL_SUBMENU},
 -     {"&Open",	FL_ALT+'o', 0, 0, FL_MENU_INACTIVE},
 -     {"&Close",	0,	0},
 -     {"&Quit",	FL_ALT+'q', quit_cb, 0, FL_MENU_DIVIDER},
 -     {"shortcut",'a'},
 -     {"shortcut",FL_SHIFT+'a'},
 -     {"shortcut",FL_CTRL+'a'},
 -     {"shortcut",FL_CTRL+FL_SHIFT+'a'},
 -     {"shortcut",FL_ALT+'a'},
 -     {"shortcut",FL_ALT+FL_SHIFT+'a'},
 -     {"shortcut",FL_ALT+FL_CTRL+'a'},
 -     {"shortcut",FL_ALT+FL_SHIFT+FL_CTRL+'a', 0,0, FL_MENU_DIVIDER},
 -     {"shortcut",'\r'/*FL_Enter*/},
 -     {"shortcut",FL_CTRL+FL_Enter, 0,0, FL_MENU_DIVIDER},
 -     {"shortcut",FL_F+1},
 -     {"shortcut",FL_SHIFT+FL_F+1},
 -     {"shortcut",FL_CTRL+FL_F+1},
 -     {"shortcut",FL_SHIFT+FL_CTRL+FL_F+1},
 -     {"shortcut",FL_ALT+FL_F+1},
 -     {"shortcut",FL_ALT+FL_SHIFT+FL_F+1},
 -     {"shortcut",FL_ALT+FL_CTRL+FL_F+1},
 -     {"shortcut",FL_ALT+FL_SHIFT+FL_CTRL+FL_F+1, 0,0, FL_MENU_DIVIDER},
 -     {"&Submenus", FL_ALT+'S',	0, (void*)"Submenu1", FL_SUBMENU},
 -       {"A very long menu item"},
 -       {"&submenu",FL_CTRL+'S',	0, (void*)"submenu2", FL_SUBMENU},
 - 	{"item 1"},
 - 	{"item 2"},
 - 	{"item 3"},
 - 	{"item 4"},
 - 	{0},
 -       {"after submenu"},
 -       {0},
 -     {0},
 -   {"&Edit",FL_F+2,0,0,FL_SUBMENU},
 -     {"Undo",	FL_ALT+'z',	0},
 -     {"Redo",	FL_ALT+'r',	0, 0, FL_MENU_DIVIDER},
 -     {"Cut",	FL_ALT+'x',	0},
 -     {"Copy",	FL_ALT+'c',	0},
 -     {"Paste",	FL_ALT+'v',	0},
 -     {"Inactive",FL_ALT+'d',	0, 0, FL_MENU_INACTIVE},
 -     {"Clear",	0,	0, 0, FL_MENU_DIVIDER},
 -     {"Invisible",FL_ALT+'e',	0, 0, FL_MENU_INVISIBLE},
 -     {"Preferences",0,	0},
 -     {"Size",	0,	0},
 -     {0},
 -   {"&Checkbox",FL_F+3,0,0,FL_SUBMENU},
 -     {"&Alpha",	FL_F+2,	0, (void *)1, FL_MENU_TOGGLE},
 -     {"&Beta",	0,	0, (void *)2, FL_MENU_TOGGLE},
 -     {"&Gamma",	0,	0, (void *)3, FL_MENU_TOGGLE},
 -     {"&Delta",	0,	0, (void *)4, FL_MENU_TOGGLE|FL_MENU_VALUE},
 -     {"&Epsilon",0,	0, (void *)5, FL_MENU_TOGGLE},
 -     {"&Pi",	0,	0, (void *)6, FL_MENU_TOGGLE},
 -     {"&Mu",	0,	0, (void *)7, FL_MENU_TOGGLE|FL_MENU_DIVIDER},
 -     {"Red",	0,	0, (void *)1, FL_MENU_TOGGLE, 0, 0, 0, 1},
 -     {"Black",	0,	0, (void *)1, FL_MENU_TOGGLE|FL_MENU_DIVIDER},
 -     {"00",	0,	0, (void *)1, FL_MENU_TOGGLE},
 -     {"000",	0,	0, (void *)1, FL_MENU_TOGGLE},
 -     {0},
 -   {"&Radio",0,0,0,FL_SUBMENU},
 -     {"&Alpha",	0,	0, (void *)1, FL_MENU_RADIO},
 -     {"&Beta",	0,	0, (void *)2, FL_MENU_RADIO},
 -     {"&Gamma",	0,	0, (void *)3, FL_MENU_RADIO},
 -     {"&Delta",	0,	0, (void *)4, FL_MENU_RADIO|FL_MENU_VALUE},
 -     {"&Epsilon",0,	0, (void *)5, FL_MENU_RADIO},
 -     {"&Pi",	0,	0, (void *)6, FL_MENU_RADIO},
 -     {"&Mu",	0,	0, (void *)7, FL_MENU_RADIO|FL_MENU_DIVIDER},
 -     {"Red",	0,	0, (void *)1, FL_MENU_RADIO},
 -     {"Black",	0,	0, (void *)1, FL_MENU_RADIO|FL_MENU_DIVIDER},
 -     {"00",	0,	0, (void *)1, FL_MENU_RADIO},
 -     {"000",	0,	0, (void *)1, FL_MENU_RADIO},
 -     {0},
 -   {"&Font",0,0,0,FL_SUBMENU /*, 0, FL_BOLD, 20*/},
 -     {"Normal",	0, 0, 0, 0, 0, 0, 14},
 -     {"Bold",	0, 0, 0, 0, 0, FL_BOLD, 14},
 -     {"Italic",	0, 0, 0, 0, 0, FL_ITALIC, 14},
 -     {"BoldItalic",0,0,0, 0, 0, FL_BOLD+FL_ITALIC, 14},
 -     {"Small",	0, 0, 0, 0, 0, FL_BOLD+FL_ITALIC, 10},
 -     {"Emboss",	0, 0, 0, 0, FL_EMBOSSED_LABEL},
 -     {"Engrave",	0, 0, 0, 0, FL_ENGRAVED_LABEL},
 -     {"Shadow",	0, 0, 0, 0, FL_SHADOW_LABEL},
 -     {"@->",	0, 0, 0, 0, FL_SYMBOL_LABEL},
 -     {0},
 -   {"&International",0,0,0,FL_SUBMENU},
 -     {"Sharp Ess",0x0000df},
 -     {"A Umlaut",0x0000c4},
 -     {"a Umlaut",0x0000e4},
 -     {"Euro currency",FL_COMMAND+0x0020ac},
 -     {"the &\xc3\xbc Umlaut"},  // ü
 -     {"the capital &\xc3\x9c"}, // Ü
 -     {"convert \xc2\xa5 to &\xc2\xa3"}, // Yen to GBP
 -     {"convert \xc2\xa5 to &\xe2\x82\xac"}, // Yen to Euro
 -     {"Hangul character Sios &\xe3\x85\x85"},
 -     {"Hangul character Cieuc", 0x003148},
 -     {0},
 -   {"E&mpty",0,0,0,FL_SUBMENU},
 -     {0},
 -   {"&Inactive", 0,	0, 0, FL_MENU_INACTIVE|FL_SUBMENU},
 -     {"A very long menu item"},
 -     {"A very long menu item"},
 -     {0},
 -   {"Invisible",0,	0, 0, FL_MENU_INVISIBLE|FL_SUBMENU},
 -     {"A very long menu item"},
 -     {"A very long menu item"},
 -     {0},
 -   {"&Huge", 0, 0, (void*)hugemenu, FL_SUBMENU_POINTER},
 -   {"button",FL_F+4, 0, 0, FL_MENU_TOGGLE},
 -   {0}
 - };
 - 
 - Fl_Menu_Item pulldown[] = {
 -   {"Red",	FL_ALT+'r'},
 -   {"Green",	FL_ALT+'g'},
 -   {"Blue",	FL_ALT+'b'},
 -   {"Strange",	FL_ALT+'s', 0, 0, FL_MENU_INACTIVE},
 -   {"&Charm",	FL_ALT+'c'},
 -   {"Truth",	FL_ALT+'t'},
 -   {"Beauty",	FL_ALT+'b'},
 -   {0}
 - };
 - 
 - #define WIDTH 700
 - 
 - Fl_Menu_* menus[4];
 - 
 - int main(int argc, char **argv) {
 -   //Fl::set_color(Fl_Color(15),0,0,128);
 -   for (int i=0; i<99; i++) {
 -     char buf[100];
 -     sprintf(buf,"item %d",i);
 -     hugemenu[i].text = strdup(buf);
 -   }
 -   Fl_Double_Window window(WIDTH,400);
 -   window.callback(window_cb);
 -   Fl_Menu_Bar menubar(0,0,WIDTH,30); menubar.menu(menutable);
 -   menubar.callback(test_cb);
 -   menus[0] = &menubar;
 -   Fl_Menu_Button mb1(100,100,120,25,"&menubutton"); mb1.menu(pulldown);
 -   mb1.tooltip("this is a menu button");
 -   mb1.callback(test_cb);
 -   menus[1] = &mb1;
 -   Fl_Choice ch(300,100,80,25,"&choice:"); ch.menu(pulldown);
 -   ch.tooltip("this is a choice menu");
 -   ch.callback(test_cb);
 -   menus[2] = &ch;
 -   Fl_Menu_Button mb(0,0,WIDTH,400,"&popup");
 -   mb.type(Fl_Menu_Button::POPUP3);
 -   mb.box(FL_NO_BOX);
 -   mb.menu(menutable);
 -   mb.remove(1); // delete the "File" submenu
 -   mb.callback(test_cb);
 -   menus[3] = &mb;
 -   Fl_Box b(200,200,200,100,"Press right button\nfor a pop-up menu");
 -   window.resizable(&mb);
 -   window.size_range(300,400,0,400);
 -   window.end();
 -   window.show(argc, argv);
 -   return Fl::run();
 - }
 - 
 - //
 - // End of "$Id: menubar.cxx 7903 2010-11-28 21:06:39Z matt $".
 - //
 
 
  |