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