Blame tests/Toolkit/ComboBox/ComboBox7.c

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
}