[comp.sys.hp] HP Pulldown Widget

beshers@cs.cs.columbia.edu (Clifford Beshers) (11/19/89)

I have had no success getting the Pulldown widget to work in the
X Widget set distributed with HPUX 6.5.  Does anyone have an
example that they could send me?  Alternatively, could you look
at the code below and give me a hint as to why it doesn't work?

Thanks,

Cliff

****************************************************************
#include <stdio.h>
#include <string.h>
#include <X11/Intrinsic.h>
#include <X11/Cardinals.h>
#include <X11/Atoms.h>
#include <X11/StringDefs.h>
#include <X11/Shell.h>
#include <Xw/Xw.h>
#include <Xw/MenuBtn.h>
#include <Xw/Cascade.h>
#include <Xw/Pulldown.h>
#include <Xw/PopupMgr.h>
#include <Xw/Panel.h>
#include <Xw/BBoard.h>
#include <Xw/RCManager.h>
#include <Xw/VPW.h>
#include <Xw/TextEdit.h>
#include <Xw/TitleBar.h>
	
/* Command line options table.  Only resources are entered here...there is a
   pass over the remaining options after XtParseCommand is let loose. */

static XrmOptionDescRec options[] = {
{"-label",	"*label",	XrmoptionSepArg,	NULL}
};


/*
 * Report the syntax for calling xlabel
 */
Syntax(call)
    char *call;
{
    fprintf( stderr, "Usage: %s\n", call );
}


Widget toplevel, panel, mmgrshell, mmgr;

static Arg panelargs[] =
{
	{XtNx, (XtArgVal) 400},
	{XtNy, (XtArgVal) 300}
};

static Arg mmgrshellargs[] =
{
	{XtNwidgetType, (XtArgVal) XwPULLDOWN}
};

static Arg mmgrargs[] =
{
	{XtNwidgetType, (XtArgVal) XwPULLDOWN}
};
static Arg textargs[] =
{
	{XtNwidgetType, (XtArgVal) XwWORK_SPACE},
	{XtNsourceType, (XtArgVal) XwdiskSrc},
	{XtNfile, (XtArgVal) "lehrer.txt"},
	{XtNx, (XtArgVal) 400},
	{XtNy, (XtArgVal) 300}
};

void PrintCallback(w,str,calldata)
	Widget w;
	char *str;
	caddr_t calldata;
{
	printf("PrintCallback: %s\n",str);
}
void QuitCallback(w,str,calldata)
	Widget w;
	char *str;
	caddr_t calldata;
{
	exit(0);
}

void main(argc, argv)
    unsigned int argc;
    char **argv;
{
	Widget row,button;

	toplevel = XtInitialize( "Comet", "Comet",
				options, XtNumber(options),
				&argc, argv );
	
	if (argc != 1) Syntax(argv[0]);
	
	panel = XtCreateManagedWidget("panel",XwpanelWidgetClass,
				      toplevel, panelargs,
				      XtNumber(panelargs));


	XtCreateManagedWidget("message",XwtexteditWidgetClass,
			      panel, 
			      textargs,XtNumber(textargs));


	pulldown(panel);

	XtRealizeWidget(toplevel);
	
	XtMainLoop();
}


#define CREATE_MENU 0		/* Create a menu  */
#define CLOSE_MENU CREATE_MENU+1 /* Close/destroy a particular menu */
#define KILL_MENUS CLOSE_MENU+1	/* Kill all existing menus */
#define SHOW_TEXT KILL_MENUS+1	/* Display a paragraph */
#define KILL_APP SHOW_TEXT+1	/* Kill application */
#define SLEEP KILL_APP+1	/* Sleep for n seconds */


pulldown(panel)
	Widget panel;
{
	Widget mmgrshell, mmgr;
	Widget paneshell,pane,button;

	mmgrshell=XtCreatePopupShell("mmgrshell", shellWidgetClass,
				     panel, mmgrshellargs,
				     XtNumber(mmgrshellargs));
	
	mmgr=XtCreateManagedWidget("mmgr", XwpulldownMgrWidgetClass,
				   mmgrshell, NULL, ZERO);


	paneshell = XtCreatePopupShell("paneshell", shellWidgetClass,
					  mmgr, NULL, ZERO );

	pane = XtCreateManagedWidget("paneshell", XwcascadeWidgetClass,
				     paneshell, NULL, ZERO );

	button = XtCreateManagedWidget("fred",XwmenubuttonWidgetClass,
				       pane,NULL,0);
	XtAddCallback (button, XtNselect,
		       PrintCallback, "fred");


	button = XtCreateManagedWidget("wilma",XwmenubuttonWidgetClass,
				       pane,NULL,0);
	XtAddCallback (button, XtNselect,
		       PrintCallback, "wilma");

	button = XtCreateManagedWidget("quit",XwmenubuttonWidgetClass,
				       pane,NULL,0);
	XtAddCallback (button, XtNselect,
		       QuitCallback, NULL);

	paneshell = XtCreatePopupShell("paneshell", shellWidgetClass,
				       mmgr, NULL, ZERO );

	pane = XtCreateManagedWidget("paneshell", XwcascadeWidgetClass,
				     paneshell, NULL, ZERO );

	button = XtCreateManagedWidget("bob",XwmenubuttonWidgetClass,
				       pane,NULL,0);
	XtAddCallback (button, XtNselect,
		       PrintCallback, "bob");


	button = XtCreateManagedWidget("maryjane",XwmenubuttonWidgetClass,
				       pane,NULL,0);
	XtAddCallback (button, XtNselect,
		       PrintCallback, "maryjane");

	button = XtCreateManagedWidget("crazy mary",XwmenubuttonWidgetClass,
				       pane,NULL,0);
	XtAddCallback (button, XtNselect,
		       PrintCallback, "crazy mary");
}
--
-----------------------------------------------
Cliff Beshers
Columbia University Computer Science Department
beshers@cs.columbia.edu