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