|
Packit |
b099d7 |
/* $XConsortium: ComboBox7.c /main/3 1996/05/08 23:33:47 drk $ */
|
|
Packit |
b099d7 |
#include <testlib.h>
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#define PROBE() do { \
|
|
Packit |
b099d7 |
(void)printf( "%s{%d}\n", __FILE__, __LINE__ ); } \
|
|
Packit |
b099d7 |
while (0)
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* Changing this value can destroy the test */
|
|
Packit |
b099d7 |
#define NUM_STRINGS 3
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
static char *strings[NUM_STRINGS] = {
|
|
Packit |
b099d7 |
"Apples",
|
|
Packit |
b099d7 |
"Blueberries",
|
|
Packit |
b099d7 |
"Cherries" };
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
XmString list_items[NUM_STRINGS];
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
Widget Form, ComboBox, Separator, PositionScale, DelStringPB;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
void
|
|
Packit |
b099d7 |
DelStringCB( Widget widget, XtPointer client_data, XtPointer call_data )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
int position;
|
|
Packit |
b099d7 |
Arg args;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
XtSetArg( args, XmNvalue, &position );
|
|
Packit |
b099d7 |
XtGetValues( PositionScale, &args, 1 );
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
XmComboBoxDeletePos( ComboBox, position );
|
|
Packit |
b099d7 |
return;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
void
|
|
Packit |
b099d7 |
PrintNumItems( void )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
int itemCount;
|
|
Packit |
b099d7 |
Arg arg;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
XtSetArg( arg, XmNitemCount, &itemCount );
|
|
Packit |
b099d7 |
XtGetValues( ComboBox, &arg, 1 );
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
(void)printf( "XmNitemCount = %d\n\n", itemCount );
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
return;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
void
|
|
Packit |
b099d7 |
ResetWidgets()
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
int n;
|
|
Packit |
b099d7 |
Arg args[10];
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* Reset the three original XmStrings to the ComboBox.
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
n = 0;
|
|
Packit |
b099d7 |
XtSetArg( args[n], XmNitems, list_items ); n++;
|
|
Packit |
b099d7 |
XtSetArg( args[n], XmNitemCount, NUM_STRINGS ); n++;
|
|
Packit |
b099d7 |
XtSetArg( args[n], XmNvisibleItemCount, NUM_STRINGS ); n++;
|
|
Packit |
b099d7 |
XtSetValues( ComboBox, args, n );
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* Reset the Position scale to one */
|
|
Packit |
b099d7 |
n = 0;
|
|
Packit |
b099d7 |
XtSetArg( args[n], XmNvalue, 1 ); n++;
|
|
Packit |
b099d7 |
XtSetValues( PositionScale, args, n );
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
return;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
int
|
|
Packit |
b099d7 |
main( int argc, char **argv )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
int i, n;
|
|
Packit |
b099d7 |
Arg args[25];
|
|
Packit |
b099d7 |
XmString string;
|
|
Packit |
b099d7 |
char buffer[25];
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
int instance;
|
|
Packit |
b099d7 |
unsigned char combo_box_type;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
CommonTestInit (argc, argv);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
(void)printf( "Begin test\n" );
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (UserData == NULL)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
(void)printf ("Usage: ComboBox7 -u <comboBoxType>\n");
|
|
Packit |
b099d7 |
exit(0);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* Determine which type of ComboBox is being created.
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
if ( strcmp( UserData, "COMBO_BOX" ) == 0 )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
instance = 1;
|
|
Packit |
b099d7 |
combo_box_type = XmCOMBO_BOX;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
else if ( strcmp( UserData, "DROP_DOWN_COMBO_BOX" ) == 0 )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
instance = 2;
|
|
Packit |
b099d7 |
combo_box_type = XmDROP_DOWN_COMBO_BOX;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
else if ( strcmp( UserData, "DROP_DOWN_LIST" ) == 0 )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
instance = 3;
|
|
Packit |
b099d7 |
combo_box_type = XmDROP_DOWN_LIST;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
n = 0;
|
|
Packit |
b099d7 |
Form = XmCreateForm( Shell1, "Form", args, n );
|
|
Packit |
b099d7 |
XtManageChild( Form );
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
(void)sprintf( buffer, "ComboBox%d", instance );
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
for ( i = 0; i < NUM_STRINGS; i++ )
|
|
Packit |
b099d7 |
{ list_items[i]=XmStringCreateLtoR(strings[i],XmFONTLIST_DEFAULT_TAG); }
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
n = 0;
|
|
Packit |
b099d7 |
XtSetArg( args[n], XmNtopAttachment, XmATTACH_FORM ); n++;
|
|
Packit |
b099d7 |
XtSetArg( args[n], XmNleftAttachment, XmATTACH_FORM ); n++;
|
|
Packit |
b099d7 |
XtSetArg( args[n], XmNrightAttachment, XmATTACH_FORM ); n++;
|
|
Packit |
b099d7 |
XtSetArg( args[n], XmNcomboBoxType, combo_box_type ); n++;
|
|
Packit |
b099d7 |
XtSetArg( args[n], XmNitems, list_items ); n++;
|
|
Packit |
b099d7 |
XtSetArg( args[n], XmNitemCount, NUM_STRINGS ); n++;
|
|
Packit |
b099d7 |
XtSetArg( args[n], XmNvisibleItemCount, NUM_STRINGS ); n++;
|
|
Packit |
b099d7 |
ComboBox = XmCreateComboBox( Form, buffer, args, n );
|
|
Packit |
b099d7 |
XtManageChild( ComboBox );
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* Don't free the strings: ResetWidgets uses them. */
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* Make the Separator */
|
|
Packit |
b099d7 |
n = 0;
|
|
Packit |
b099d7 |
XtSetArg( args[n], XmNtopAttachment, XmATTACH_WIDGET ); n++;
|
|
Packit |
b099d7 |
XtSetArg( args[n], XmNtopWidget, ComboBox ); n++;
|
|
Packit |
b099d7 |
XtSetArg( args[n], XmNleftAttachment, XmATTACH_FORM ); n++;
|
|
Packit |
b099d7 |
XtSetArg( args[n], XmNrightAttachment, XmATTACH_FORM ); n++;
|
|
Packit |
b099d7 |
XtSetArg( args[n], XmNseparatorType, XmSHADOW_ETCHED_OUT ); n++;
|
|
Packit |
b099d7 |
Separator = XmCreateSeparator( Form, "Separator", args, n );
|
|
Packit |
b099d7 |
XtManageChild( Separator );
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* Make Position Slider */
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
n = 0;
|
|
Packit |
b099d7 |
string = XmStringCreateLtoR("Position", XmFONTLIST_DEFAULT_TAG );
|
|
Packit |
b099d7 |
XtSetArg( args[n], XmNtopAttachment, XmATTACH_WIDGET ); n++;
|
|
Packit |
b099d7 |
XtSetArg( args[n], XmNtopWidget, Separator ); n++;
|
|
Packit |
b099d7 |
XtSetArg( args[n], XmNleftAttachment, XmATTACH_FORM ); n++;
|
|
Packit |
b099d7 |
XtSetArg( args[n], XmNbottomAttachment, XmATTACH_FORM ); n++;
|
|
Packit |
b099d7 |
XtSetArg( args[n], XmNtitleString, string ); n++;
|
|
Packit |
b099d7 |
XtSetArg( args[n], XmNminimum, 1 ); n++;
|
|
Packit |
b099d7 |
XtSetArg( args[n], XmNmaximum, 4 ); n++;
|
|
Packit |
b099d7 |
XtSetArg( args[n], XmNorientation, XmHORIZONTAL ); n++;
|
|
Packit |
b099d7 |
XtSetArg( args[n], XmNvalue, 1 ); n++;
|
|
Packit |
b099d7 |
PositionScale = XmCreateScale( Form, "PositionScale", args, n );
|
|
Packit |
b099d7 |
XtManageChild( PositionScale );
|
|
Packit |
b099d7 |
XmStringFree( string );
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* Create Delete Button */
|
|
Packit |
b099d7 |
n = 0;
|
|
Packit |
b099d7 |
string = XmStringCreateLtoR("Delete Item", XmFONTLIST_DEFAULT_TAG );
|
|
Packit |
b099d7 |
XtSetArg( args[n], XmNtopAttachment, XmATTACH_WIDGET ); n++;
|
|
Packit |
b099d7 |
XtSetArg( args[n], XmNtopWidget, Separator ); n++;
|
|
Packit |
b099d7 |
XtSetArg( args[n], XmNleftAttachment, XmATTACH_WIDGET ); n++;
|
|
Packit |
b099d7 |
XtSetArg( args[n], XmNleftWidget, PositionScale ); n++;
|
|
Packit |
b099d7 |
XtSetArg( args[n], XmNlabelString, string ); n++;
|
|
Packit |
b099d7 |
DelStringPB = XmCreatePushButton( Form, "DelStringPB", args, n );
|
|
Packit |
b099d7 |
XtManageChild( DelStringPB );
|
|
Packit |
b099d7 |
XmStringFree( string );
|
|
Packit |
b099d7 |
XtAddCallback( DelStringPB, XmNactivateCallback, DelStringCB,
|
|
Packit |
b099d7 |
( XtPointer )NULL );
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
XtRealizeWidget( Shell1 );
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* TP 1 */
|
|
Packit |
b099d7 |
(void)printf( "Test Purpose 1\n" );
|
|
Packit |
b099d7 |
CommonPause();
|
|
Packit |
b099d7 |
PrintNumItems();
|
|
Packit |
b099d7 |
ResetWidgets();
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* TP 2 */
|
|
Packit |
b099d7 |
(void)printf( "Test Purpose 2\n" );
|
|
Packit |
b099d7 |
XtSetArg( args[0], XmNvisibleItemCount, NUM_STRINGS-1 );
|
|
Packit |
b099d7 |
XtSetValues( ComboBox, args, 1 );
|
|
Packit |
b099d7 |
CommonPause();
|
|
Packit |
b099d7 |
/* Don't reset the widgets: the next test uses it as is */
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* TP 3 */
|
|
Packit |
b099d7 |
(void)printf( "Test Purpose 3\n" );
|
|
Packit |
b099d7 |
CommonPause();
|
|
Packit |
b099d7 |
/* Don't reset the widgets: the next test uses it as is */
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* TP 4 */
|
|
Packit |
b099d7 |
(void)printf( "Test Purpose 4\n" );
|
|
Packit |
b099d7 |
/* Delete the last item from the ComboBox */
|
|
Packit |
b099d7 |
XmComboBoxDeletePos( ComboBox, NUM_STRINGS );
|
|
Packit |
b099d7 |
CommonPause();
|
|
Packit |
b099d7 |
ResetWidgets();
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* TP 5 */
|
|
Packit |
b099d7 |
(void)printf( "Test Purpose 5\n" );
|
|
Packit |
b099d7 |
XtSetArg( args[0], XmNvisibleItemCount, NUM_STRINGS-1 );
|
|
Packit |
b099d7 |
XmComboBoxDeletePos( ComboBox, 2 ); /* Should be second of three */
|
|
Packit |
b099d7 |
XtSetValues( ComboBox, args, 1 );
|
|
Packit |
b099d7 |
CommonPause();
|
|
Packit |
b099d7 |
ResetWidgets(); /* No need, but leaves things clean for future */
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
XtAppMainLoop( app_context );
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
for ( i = 0; i < NUM_STRINGS; i++ )
|
|
Packit |
b099d7 |
{ XmStringFree(list_items[i]); }
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
XtDestroyWidget( DelStringPB );
|
|
Packit |
b099d7 |
XtDestroyWidget( PositionScale );
|
|
Packit |
b099d7 |
XtDestroyWidget( Separator );
|
|
Packit |
b099d7 |
XtDestroyWidget( ComboBox );
|
|
Packit |
b099d7 |
XtDestroyWidget( Form );
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
(void)printf( "End test\n" );
|
|
Packit |
b099d7 |
return 0;
|
|
Packit |
b099d7 |
}
|