Fixed problem with Fl_Menu_::item_pathname() was misrepresented as a 'Set' method.

Both item_pathname() and find_item()'s docs were strengthened.



git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3@7148 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
This commit is contained in:
Greg Ercolano 2010-02-26 03:29:05 +00:00
parent 60c1ccd33e
commit c3c72beb23
1 changed files with 54 additions and 10 deletions

View File

@ -39,12 +39,36 @@
#define SAFE_STRCAT(s) { len += strlen(s); if ( len >= namelen ) { *name='\0'; return(-2); } else strcat(name,(s)); }
/** Set 'pathname' of specified menuitem
If finditem==NULL, mvalue() is used (the most recently picked menuitem)
Returns:
- 0 : OK
- -1 : item not found (name="")
- -2 : 'name' not large enough (name="")
/** Get the menu 'pathname' for the specified menuitem.
If finditem==NULL, mvalue() is used (the most recently picked menuitem).
\b Example:
\code
Fl_Menu_Bar *menubar = 0;
void my_menu_callback(Fl_Widget*,void*) {
char name[80];
if ( menubar->item_pathname(name, sizeof(name)-1) == 0 ) { // recently picked item
if ( strcmp(name, "File/&Open") == 0 ) { /* open invoked */ }
if ( strcmp(name, "File/&Save") == 0 ) { /* save invoked */ }
if ( strcmp(name, "Edit/&Copy") == 0 ) { /* copy invoked */ }
}
}
int main() {
[..]
menubar = new Fl_Menu_Bar(..);
menubar->add("File/&Open", 0, my_menu_callback);
menubar->add("File/&Save", 0, my_menu_callback);
menubar->add("Edit/&Copy", 0, my_menu_callback);
[..]
}
\endcode
\returns
- 0 : OK (name has menuitem's pathname)
- -1 : item not found (name="")
- -2 : 'name' not large enough (name="")
\see find_item()
*/
int Fl_Menu_::item_pathname(char *name, int namelen, const Fl_Menu_Item *finditem) const {
int len = 0;
@ -75,10 +99,30 @@ int Fl_Menu_::item_pathname(char *name, int namelen, const Fl_Menu_Item *findite
}
/**
Find menu item index, given menu pathname
eg. "Edit/Copy"
Will also return submenus, eg. "Edit"
Returns NULL if not found.
Find menu item index, given a menu pathname such as "Edit/Copy".
Will also return submenu items, eg. "Edit".
Returns NULL if not found.
\b Example:
\code
Fl_Menu_Bar *menubar = new Fl_Menu_Bar(..);
menubar->add("File/&Open");
menubar->add("File/&Save");
menubar->add("Edit/&Copy");
// [..]
Fl_Menu_Item *item;
if ( ( item = (Fl_Menu_Item*)menubar->find_item("File/&Open") ) != NULL ) {
item->labelcolor(FL_RED);
}
if ( ( item = (Fl_Menu_Item*)menubar->find_item("Edit/&Copy") ) != NULL ) {
item->labelcolor(FL_GREEN);
}
\endcode
\returns The item found, or NULL if not found.
\see item_pathname()
*/
const Fl_Menu_Item * Fl_Menu_::find_item(const char *name) {
char menupath[1024] = ""; // File/Export