[Plib-cvs] plib/src/pui pu.h,1.125,1.126 puMenuBar.cxx,1.17,1.18 puPopupMenu.cxx,1.15,1.16 puVertica
Brought to you by:
sjbaker
From: Sebastian U. <ud...@us...> - 2002-09-01 23:41:15
|
Update of /cvsroot/plib/plib/src/pui In directory usw-pr-cvs1:/tmp/cvs-serv1975 Modified Files: pu.h puMenuBar.cxx puPopupMenu.cxx puVerticalMenu.cxx Log Message: Support for user-supplied "user_data" in puPopupMenu, puVerticalMenu, puMenuBar Index: pu.h =================================================================== RCS file: /cvsroot/plib/plib/src/pui/pu.h,v retrieving revision 1.125 retrieving revision 1.126 diff -u -d -r1.125 -r1.126 --- pu.h 1 Sep 2002 09:36:50 -0000 1.125 +++ pu.h 1 Sep 2002 23:41:12 -0000 1.126 @@ -1429,7 +1429,8 @@ type |= PUCLASS_POPUPMENU ; } - puObject *add_item ( const char *str, puCallback _cb ) ; + puObject *add_item ( const char *str, puCallback _cb, + void *_user_data = NULL ) ; int checkHit ( int button, int updown, int x, int y ) ; int checkKey ( int key , int updown ) ; void close ( void ) ; @@ -1451,7 +1452,8 @@ bar_height = h ; } - void add_submenu ( const char *str, char *items[], puCallback _cb[] ) ; + void add_submenu ( const char *str, char *items[], puCallback _cb[], + void *_user_data[] = NULL ) ; void close ( void ) ; } ; @@ -1477,7 +1479,8 @@ if ( y < 0 ) { setVStatus( TRUE ) ; } /* It is now supposed to stick to the top left - JCJ*/ } - void add_submenu ( const char *str, char *items[], puCallback _cb[] ) ; + void add_submenu ( const char *str, char *items[], puCallback _cb[], + void *_user_data[] = NULL ) ; void close ( void ) ; } ; Index: puMenuBar.cxx =================================================================== RCS file: /cvsroot/plib/plib/src/pui/puMenuBar.cxx,v retrieving revision 1.17 retrieving revision 1.18 diff -u -d -r1.17 -r1.18 --- puMenuBar.cxx 1 Sep 2002 09:36:51 -0000 1.17 +++ puMenuBar.cxx 1 Sep 2002 23:41:12 -0000 1.18 @@ -97,7 +97,8 @@ puMoveToLast ( p ); } -void puMenuBar::add_submenu ( const char *str, char *items[], puCallback _cb[] ) +void puMenuBar::add_submenu ( const char *str, char *items[], puCallback _cb[], + void *_user_data[] ) { int w, h ; getSize ( &w, &h ) ; @@ -127,8 +128,12 @@ b -> setUserData ( p ) ; - for ( int i = 0 ; items[i] != NULL ; i++ ) - p -> add_item ( items[i], _cb[i] ) ; + if ( _user_data != NULL ) + for ( int i = 0 ; items[i] != NULL ; i++ ) + p -> add_item ( items[i], _cb[i], _user_data[i] ) ; + else + for ( int i = 0 ; items[i] != NULL ; i++ ) + p -> add_item ( items[i], _cb[i] ) ; p->close () ; recalc_bbox () ; Index: puPopupMenu.cxx =================================================================== RCS file: /cvsroot/plib/plib/src/pui/puPopupMenu.cxx,v retrieving revision 1.15 retrieving revision 1.16 diff -u -d -r1.15 -r1.16 --- puPopupMenu.cxx 1 Sep 2002 09:36:51 -0000 1.15 +++ puPopupMenu.cxx 1 Sep 2002 23:41:12 -0000 1.16 @@ -27,7 +27,8 @@ UL_RTTI_DEF1(puPopupMenu,puPopup) -puObject *puPopupMenu::add_item ( const char *str, puCallback _cb ) +puObject *puPopupMenu::add_item ( const char *str, puCallback _cb, + void *_user_data ) { int w, h ; getSize ( &w, &h ) ; @@ -39,6 +40,7 @@ colour[PUCOL_FOREGROUND][3] ) ; b->setCallback ( _cb ) ; b->setLegendPlace ( PUPLACE_LOWER_LEFT ) ; + b->setUserData ( _user_data ) ; recalc_bbox () ; return b ; } Index: puVerticalMenu.cxx =================================================================== RCS file: /cvsroot/plib/plib/src/pui/puVerticalMenu.cxx,v retrieving revision 1.8 retrieving revision 1.9 diff -u -d -r1.8 -r1.9 --- puVerticalMenu.cxx 1 Sep 2002 09:36:51 -0000 1.8 +++ puVerticalMenu.cxx 1 Sep 2002 23:41:12 -0000 1.9 @@ -30,7 +30,8 @@ extern void puMenuBar_drop_down_the_menu ( puObject *b ); /* If there is only one entry in a vmenu, just act as if clicking the menu clicks the oneshot underneath it. */ -void puVerticalMenu::add_submenu ( const char *str, char *items[], puCallback _cb[] ) +void puVerticalMenu::add_submenu ( const char *str, char *items[], + puCallback _cb[], void *_user_data[] ) { int w, h ; getSize ( &w, &h ) ; @@ -56,8 +57,12 @@ b -> setUserData ( p ) ; - for ( int i = 0 ; items[i] != NULL ; i++ ) - p -> add_item ( items[i], _cb[i] ) ; + if ( _user_data != NULL ) + for ( int i = 0 ; items[i] != NULL ; i++ ) + p -> add_item ( items[i], _cb[i], _user_data[i] ) ; + else + for ( int i = 0 ; items[i] != NULL ; i++ ) + p -> add_item ( items[i], _cb[i] ) ; p->close () ; } |