home *** CD-ROM | disk | FTP | other *** search
- /*-------------------------------------------------------------------------
- Copyright (c) 1993 The Santa Cruz Operation, Inc.
- -------------------------------------------------------------------------
- All rights reserved. No part of this program or publication may be
- reproduced, transmitted, transcribed, stored in a retrieval system,
- or translated into any language or computer language, in any form or
- by any means, electronic, mechanical, magnetic, optical, chemical,
- biological, or otherwise, without the prior written permission of:
-
- The Santa Cruz Operation, Inc. (408) 425-7222
- 400 Encinal St, Santa Cruz, CA 95060 USA
- -------------------------------------------------------------------------
-
- SCCS : @(#) api_test.c 11.1 94/09/23
- Author: Diane Walker
- Date : 24 Oct 1993
-
- Description:
- This example demonstrates the use of the low-level help
- api. It uses the following four calls:
- 1) HelpOpen()
- 2) HelpDisplay()
- 3) HelpClose()
-
- Modification History:
- M001, 09-Nov-93, dianew
- Minor change to the menubar code.
- M000, 24-Oct-93, dianew
- Created this file.
- -----------------------------------------------------------------------*/
-
- #include <X11/Intrinsic.h>
- #include <X11/cursorfont.h>
- #include <Xm/Xm.h>
- #include <Xm/RowColumn.h>
- #include <Xm/PushB.h>
- #include <Xm/TextF.h>
- #include <Xm/Text.h>
- #include <Xm/Form.h>
- #include <Xm/CascadeB.h>
- #include <Xm/MessageB.h>
- #include <Xm/MwmUtil.h>
- #include <Xm/Label.h>
- #include <Xm/LabelG.h>
-
- #include "api.h"
-
- #define PATHLEN 1024
- #define CLASS_NAME "Api_test"
-
- static XtPointer ClientHelpContext;
- static Widget TopWidget;
- static Widget FormDialog;
-
-
- /* Function Prototypes -----*/
- int main(int, char *[]);
- static void buildTree(Widget, char **);
- static void exitCB(Widget, caddr_t, caddr_t);
- static void moreCB(Widget, caddr_t, caddr_t);
- static void create_simple_popup();
- static void okCB(Widget, Widget, caddr_t);
- static void showVersion(Widget, caddr_t, caddr_t);
- static void error(char *);
- static void helpCB(Widget, caddr_t, caddr_t);
- /* End Prototypes ----------*/
-
- main(argc, argv)
- int argc;
- char *argv[];
- {
- XtAppContext appContext;
- Cursor wait_cursor;
- XEvent event;
- int i;
- Display *disp;
- extern char *getcwd();
-
- printf("In App \n");
-
- TopWidget = XtAppInitialize(&appContext, "Api_test",
- NULL, 0, &argc, argv, NULL, NULL, 0);
-
- disp = XtDisplay(TopWidget);
- wait_cursor = XCreateFontCursor(disp, (unsigned) XC_watch);
-
- buildTree(TopWidget, argv) ;
-
- if (HelpOpen(&(ClientHelpContext), TopWidget, "api_book",
- (void (*) (Boolean)) NULL, error) != helpSuccess)
- {
- printf("HelpOpen failed!\n");
- exit(0);
- }
-
- XtRealizeWidget(TopWidget);
-
-
- /* -----XtMainLoop ();---- */
- for (;;)
- {
- XtAppNextEvent(appContext, &event);
- XtDispatchEvent(&event);
- }
- }
-
- static void
- buildTree(parent, argv)
- Widget parent;
- char *argv[];
- {
- Widget main_form, form, menu_bar;
- Widget file_cascade, file_menu, exit_button, save_button;
- Widget help_cascade, help_menu, version_button, help_button;
- Widget window_button, keys_button, index_button, tutorial_button;
- Widget w, c, rc;
- Arg args[10];
- int n;
- char *name;
- int helpFlag;
-
-
- main_form = XtVaCreateManagedWidget( "mainWindow",
- xmFormWidgetClass, parent, NULL);
-
- XtAddCallback(main_form, XmNhelpCallback, helpCB, "main_form");
-
- menu_bar = XtVaCreateManagedWidget( "menu_bar",
- xmRowColumnWidgetClass, main_form,
- XmNrowColumnType, XmMENU_BAR,
- XmNtopAttachment, XmATTACH_FORM,
- XmNtopOffset, 0,
- XmNleftAttachment, XmATTACH_FORM,
- XmNleftOffset, 0,
- XmNrightAttachment, XmATTACH_FORM,
- XmNrightOffset, 0,
- NULL);
-
- file_cascade = XtVaCreateManagedWidget( "File",
- xmCascadeButtonWidgetClass, menu_bar, NULL);
-
- file_menu = (Widget) XmCreatePulldownMenu( menu_bar,
- "filePulldown", NULL, 0);
-
- XtVaSetValues( file_cascade, XmNsubMenuId, file_menu, NULL);
-
- save_button = XtVaCreateManagedWidget( "Save",
- xmPushButtonWidgetClass, file_menu, NULL);
-
- exit_button = XtVaCreateManagedWidget( "Exit",
- xmPushButtonWidgetClass, file_menu, NULL);
-
- XtAddCallback( exit_button, XmNactivateCallback, exitCB, NULL);
-
- /* Create the Help cascade button */
- help_cascade = XtVaCreateManagedWidget("Help",
- xmCascadeButtonWidgetClass, menu_bar, NULL);
- XtVaSetValues( menu_bar, XmNmenuHelpWidget, help_cascade, NULL);
-
- help_menu = (Widget) XmCreatePulldownMenu( menu_bar,
- "helpPulldown", NULL, 0);
- XtVaSetValues( help_cascade, XmNsubMenuId, help_menu, NULL);
-
- window_button = XtVaCreateManagedWidget( "On Window",
- xmPushButtonWidgetClass, help_menu, NULL);
- XtAddCallback(window_button, XmNactivateCallback, helpCB, "on_window");
-
- keys_button = XtVaCreateManagedWidget( "On Keys",
- xmPushButtonWidgetClass, help_menu, NULL);
- XtAddCallback(keys_button, XmNactivateCallback, helpCB,"on_keys");
-
- index_button = XtVaCreateManagedWidget( "Index",
- xmPushButtonWidgetClass, help_menu, NULL);
- XtAddCallback(index_button, XmNactivateCallback, helpCB,"index");
-
- tutorial_button = XtVaCreateManagedWidget( "Tutorial",
- xmPushButtonWidgetClass, help_menu, NULL);
- XtAddCallback(tutorial_button, XmNactivateCallback, helpCB,"Tutorial");
-
- version_button = XtVaCreateManagedWidget( "On Version",
- xmPushButtonWidgetClass, help_menu, NULL);
- XtAddCallback(version_button, XmNactivateCallback, showVersion, "");
-
- help_button = XtVaCreateManagedWidget( "On Help",
- xmPushButtonWidgetClass, help_menu, NULL);
- XtAddCallback(help_button, XmNactivateCallback, helpCB,"On_Help");
-
- form = XtVaCreateManagedWidget( "form", xmFormWidgetClass, main_form,
- XmNtopAttachment, XmATTACH_WIDGET,
- XmNtopWidget, menu_bar,
- XmNtopOffset, 0,
- XmNleftAttachment, XmATTACH_FORM,
- XmNrightAttachment, XmATTACH_FORM,
- XmNbottomAttachment, XmATTACH_FORM,
- XmNleftOffset, 0,
- XmNrightOffset, 0,
- XmNbottomOffset, 0,
- XmNfractionBase, 100,
- NULL);
-
- rc = XtVaCreateManagedWidget( "rc", xmRowColumnWidgetClass,
- form, XmNorientation, XmHORIZONTAL, NULL);
-
- n = 0;
- w = XmCreateLabel(rc, "api_test", args, n);
- XtManageChild(w);
-
- n = 0;
- w = XmCreatePushButton(rc, "More", args, n);
- XtAddCallback(w, XmNactivateCallback, moreCB, NULL);
- XtManageChild(w);
-
- }
-
- static void
- showVersion(w, junk1, junk2)
- Widget w;
- caddr_t junk1, junk2;
- {
- int n;
- Arg args[5];
- Widget label, rc, button;
- XmString vers_str;
- static Widget form = NULL;
-
- if (!form) {
- n = 0;
- XtSetArg(args[n], XmNdialogStyle, XmDIALOG_MODELESS); n++;
- form = XmCreateFormDialog(TopWidget, "VersionDialog",
- args, n);
- XtAddCallback(form, XmNhelpCallback, helpCB, "on_version");
- n = 0;
- XtSetArg(args[n], XmNtopAttachment, XmATTACH_FORM); n++;
- XtSetArg(args[n], XmNbottomAttachment, XmATTACH_FORM); n++;
- XtSetArg(args[n], XmNleftAttachment, XmATTACH_FORM); n++;
- XtSetArg(args[n], XmNrightAttachment, XmATTACH_FORM); n++;
- rc = XmCreateRowColumn(form, "rc3", args, n);
- XtManageChild(rc);
-
- n = 0;
- vers_str = XmStringCreateLtoR("Version 1.0",
- XmSTRING_DEFAULT_CHARSET);
- XtSetArg(args[n], XmNlabelString, vers_str); n++;
- label = XmCreateLabel(rc, "versionLabel", args, n);
- XtManageChild(label);
- XmStringFree(vers_str);
-
- n = 0;
- button = XmCreatePushButton(rc, "OK", args, n);
- XtAddCallback(button, XmNactivateCallback, okCB, form);
- XtManageChild(button);
- }
- if (!XtIsManaged(form))
- XtManageChild(form);
- }
-
-
- static void
- exitCB(w, junk1, junk2)
- Widget w;
- caddr_t junk1, junk2;
- {
- HelpClose(ClientHelpContext);
- exit(0);
- }
-
- static void
- moreCB(w, junk1, junk2)
- Widget w;
- caddr_t junk1, junk2;
- {
- if (!FormDialog)
- create_simple_popup();
- if (!XtIsManaged(FormDialog))
- XtManageChild(FormDialog);
- }
-
- static void
- create_simple_popup()
- {
- Widget rc, button, label, button2;
- int n;
- Arg args[5];
-
- n = 0;
- XtSetArg(args[n], XmNdialogStyle, XmDIALOG_MODELESS); n++;
- FormDialog = XmCreateFormDialog(TopWidget, "form_dialog", args, n);
-
- XtAddCallback(FormDialog, XmNhelpCallback, helpCB, "more_dialog");
-
- n = 0;
- XtSetArg(args[n], XmNtopAttachment, XmATTACH_FORM); n++;
- XtSetArg(args[n], XmNbottomAttachment, XmATTACH_FORM); n++;
- XtSetArg(args[n], XmNleftAttachment, XmATTACH_FORM); n++;
- XtSetArg(args[n], XmNrightAttachment, XmATTACH_FORM); n++;
- rc = XmCreateRowColumn(FormDialog, "rc2", args, n);
- XtManageChild(rc);
-
- n = 0;
- label = XmCreateLabelGadget(rc, "Test_label", args, n);
- XtManageChild(label);
-
-
- n = 0;
- button = XmCreatePushButton(rc, "OK", args, n);
- XtAddCallback(button, XmNactivateCallback, okCB, FormDialog);
- XtManageChild(button);
-
- n = 0;
- button2 = XmCreatePushButton(rc, "Help", args, n);
- XtAddCallback(button2, XmNactivateCallback, helpCB, "more_dialog_help");
- XtManageChild(button2);
- }
-
- static void
- okCB(w, form, junk2)
- Widget w, form;
- caddr_t junk2;
- {
- XtUnmanageChild(form);
- }
-
- static void
- error(err_string)
- char *err_string;
- {
- static Widget errorBox = NULL;
- Widget b;
- Arg args[6];
- int n;
- XmString xm_errstr;
-
- if (!errorBox) {
- n = 0;
- XtSetArg(args[n], XmNmessageAlignment, XmALIGNMENT_CENTER); n++;
- XtSetArg(args[n], XmNresizePolicy, XmRESIZE_NONE); n++;
- XtSetArg(args[n], XmNdialogStyle,
- XmDIALOG_FULL_APPLICATION_MODAL); n++;
- errorBox = XmCreateErrorDialog(TopWidget, "errors",
- args, n);
- XtVaSetValues(XtParent(errorBox),
- XmNmwmDecorations, MWM_DECOR_TITLE + MWM_DECOR_BORDER,
- NULL);
-
- /* Unmanage cancel/help buttons */
- b = XmMessageBoxGetChild(errorBox, XmDIALOG_CANCEL_BUTTON);
- XtUnmanageChild(b);
- b = XmMessageBoxGetChild(errorBox, XmDIALOG_HELP_BUTTON);
- XtUnmanageChild(b);
- }
- xm_errstr = XmStringCreateLtoR(err_string, XmSTRING_DEFAULT_CHARSET);
- XtVaSetValues(errorBox, XmNmessageString, xm_errstr, NULL);
- XmStringFree(xm_errstr);
-
- if (!XtIsManaged(errorBox))
- XtManageChild(errorBox);
- }
-
- static void
- helpCB(w, clientData, callData)
- Widget w;
- XtPointer clientData;
- XtPointer callData;
- {
- char *topic = (char *) clientData;
- HelpDisplay(ClientHelpContext, NULL, helpTopic, topic);
- }
-
-