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 () ;
}
|