DO NOT REPLY TO THIS MESSAGE. INSTEAD, POST ANY RESPONSES TO THE LINK BELOW.
[STR New]
Link: http://www.fltk.org/str.php?L1758
Version: 1.3-feature
Link: http://www.fltk.org/str.php?L1758
Version: 1.3-feature
#include <FL/Fl.H>
#include <FL/Fl_Window.H>
#include <FL/Fl_Menu_Bar.H>
#include <FL/Fl_Button.H>
// Exercise STR#1758 additions -- erco 04/08/10
Fl_Menu_Bar *menubar = 0;
void my_menu_callback(Fl_Widget*,void*) {
char name[80];
Fl_Menu_Item *item = (Fl_Menu_Item*)menubar->find_item("File");
menubar->item_pathname(name, sizeof(name)-1, item);
printf("ITEM PATHNAME FOR 'File' MENU IS '%s'\n", name);
item = (Fl_Menu_Item*)menubar->find_item("Edit/Preferences");
menubar->item_pathname(name, sizeof(name)-1, item);
printf("ITEM PATHNAME FOR 'Edit->Preferences' MENU IS '%s'\n", name);
}
void show_menubar() {
printf("--- MENUBAR IS NOW %d\n", menubar->size());
for ( int t=0; t<menubar->size(); t++ ) {
printf("%d) '%s'\n", t, (menubar->menu()+t)->label() ?
(menubar->menu()+t)->label() : "---");
}
}
static void insert_cb(Fl_Widget*w,void*data) {
static int count = 0;
char s[80]; sprintf(s, "Insert Item %d", ++count);
menubar->insert((int)data,s,0,0);
menubar->redraw();
show_menubar();
}
static void append_cb(Fl_Widget*w,void*) {
static int count = 0;
char s[80]; sprintf(s, "Append Item %d", ++count);
menubar->insert(-1,s,0,0);
menubar->redraw();
show_menubar();
}
static void clear_recent_cb(Fl_Widget*w,void*) {
int index = menubar->find_index("File/Recent");
printf("--- CLEAR File/Recent submenu: index=%d\n", index);
if ( index >= 0 ) menubar->clear_submenu(index);
show_menubar();
}
static void add_recent_cb(Fl_Widget*w,void*) {
printf("--- ADD File/Recent submenu\n");
menubar->add("File/Recent/Aaa",0,0);
menubar->add("File/Recent/Bbb",0,0);
menubar->add("File/Recent/Ccc/c001",0,0);
menubar->add("File/Recent/Ccc/c002",0,0);
menubar->add("File/Recent/Ccc/c003",0,0);
menubar->add("File/Recent/Ccc/CCC Submenu/0001",0,0);
menubar->add("File/Recent/Ccc/CCC Submenu/0002",0,0);
menubar->add("File/Recent/Ccc/CCC Submenu/0003",0,0);
menubar->add("File/Recent/Ddd",0,0);
show_menubar();
}
static void find_index_cb(Fl_Widget*w,void*) {
Fl_Menu_Item *m;
int index = menubar->find_index("File/Recent/Aaa");
printf("--- FIND INDEX: [NAME] File/Recent/Aaa: %d '%s'\n", index,
(index!=-1) ? menubar->menu()[index].label() : "NOPE");
m = (Fl_Menu_Item*)((index!=-1) ? menubar->menu()+index : 0);
index = menubar->find_index(m);
printf("--- FIND INDEX: [ITEM] File/Recent/Aaa+0: %d '%s'\n", index,
(index!=-1) ? menubar->menu()[index].label() : "NOPE");
m++;
index = menubar->find_index(m);
printf("--- FIND INDEX: [ITEM] File/Recent/Aaa+1: %d '%s'\n", index,
(index!=-1) ? menubar->menu()[index].label() : "NOPE");
index = menubar->find_index("File/Quit");
printf("--- FIND INDEX: [NAME] File/Quit: %d '%s'\n", index, (index!=-1) ?
menubar->menu()[index].label() : "NOPE");
m = (Fl_Menu_Item*)((index!=-1) ? menubar->menu()+index : 0);
index = menubar->find_index(m);
printf("--- FIND INDEX: [ITEM] File/Recent/Aaa+0: %d '%s'\n", index,
(index!=-1) ? menubar->menu()[index].label() : "NOPE");
m++;
index = menubar->find_index(m);
printf("--- FIND INDEX: [ITEM] File/Recent/Aaa+1: %d '%s'\n", index,
(index!=-1) ? menubar->menu()[index].label() : "NOPE");
index = menubar->find_index(append_cb);
printf("--- FIND INDEX: [CALLBACK] append_cb: %d '%s'\n", index, (index!=-1)
? menubar->menu()[index].label() : "NOPE");
index = menubar->find_index(add_recent_cb);
printf("--- FIND INDEX: [CALLBACK] add_recent_cb: %d '%s'\n", index,
(index!=-1) ? menubar->menu()[index].label() : "NOPE");
index = menubar->find_index(clear_recent_cb);
printf("--- FIND INDEX: [CALLBACK] clear_recent_cb: %d '%s'\n", index,
(index!=-1) ? menubar->menu()[index].label() : "NOPE");
index = menubar->find_index(find_index_cb);
printf("--- FIND INDEX: [CALLBACK] find_index_cb (SHOULD BE NOT FOUND): %d
'%s'\n", index, (index!=-1) ? menubar->menu()[index].label() : "NOPE");
}
int main() {
Fl_Window win(700,400);
menubar = new Fl_Menu_Bar(0,0,700,25);
menubar->add("File/&Open", 0, my_menu_callback);
menubar->add("File/&Save", 0, my_menu_callback);
menubar->add("File/Recent/One",0,0);
menubar->add("File/Recent/Two",0,0);
menubar->add("File/Recent/Three",0,0);
menubar->add("File/Quit",0,0);
menubar->add("Edit/&Copy", 0, my_menu_callback);
menubar->add("Edit/Preferences/foo", 0, my_menu_callback);
menubar->add("Edit/Insert", 0, insert_cb, (void*)1);
menubar->add("Edit/Append", 0, append_cb);
menubar->add("Edit/Clear Recent", 0, clear_recent_cb);
menubar->add("Edit/Add Recent", 0, add_recent_cb);
Fl_Button but1(10,100,120,25,"Insert 1"); but1.callback(insert_cb,
(void*)1);
Fl_Button but2(10,130,120,25,"Insert 2"); but2.callback(insert_cb,
(void*)2);
Fl_Button but3(10,160,120,25,"Append"); but3.callback(append_cb);
Fl_Button but4(10,190,120,25,"Clear Recent"); but4.callback(clear_recent_cb);
Fl_Button but5(10,220,120,25,"Add Recent"); but5.callback(add_recent_cb);
Fl_Button but6(10,250,120,25,"Find Index"); but6.callback(find_index_cb);
win.show();
return(Fl::run());
}
_______________________________________________
fltk-dev mailing list
[email protected]
http://lists.easysw.com/mailman/listinfo/fltk-dev