home *** CD-ROM | disk | FTP | other *** search
/ InfoMagic Source Code 1993 July / THE_SOURCE_CODE_CD_ROM.iso / X / mit / demos / xgas / help.c < prev    next >
Encoding:
C/C++ Source or Header  |  1991-07-22  |  3.0 KB  |  122 lines

  1. /*
  2.  * help.c
  3.  *   xgas: Copyright 1991 Larry Medwin: @(#)gas.c    1.9 2/9/90
  4.  *   Larry Medwin -- April 11, 1991, added help stuff.
  5.  */
  6.  
  7. #include "xgas.h"
  8. #include <X11/Shell.h>
  9. extern char quick[];
  10. extern char *man[];
  11. extern char *doc[];
  12.  
  13. /* static to allow show_text callback to set its args. */
  14. static Widget helpText;
  15.  
  16. /* Temporarily put the help callbacs here*/
  17. void help_callback(w, widget_to_popup, call_data) /* ARGSUSED */
  18.      Widget     w;
  19.      Widget     widget_to_popup;
  20.      caddr_t    call_data;
  21. {
  22.      XtPopup( widget_to_popup, XtGrabNone);
  23. }
  24.  
  25. void show_text(w, text, call_data) /* ARGSUSED */
  26.     Widget      w;
  27.     char        *text;
  28.     caddr_t     call_data;
  29. {
  30.     Arg wargs[1];
  31.  
  32.     XtSetArg( wargs[0], XtNstring, text);
  33.     XtSetValues( helpText, wargs, 1);
  34. }
  35.  
  36. void pop_down(w, widget_to_popdown, call_data) /* ARGSUSED */
  37.      Widget     w;
  38.      Widget     widget_to_popdown;
  39.      caddr_t    call_data;
  40. {
  41.      XtPopdown( widget_to_popdown);
  42. }
  43.  
  44.  
  45. createHelpWidgets( parent )
  46.      Widget parent;
  47. {
  48.   Widget helpShell, helpFrame, helpQuick, helpMan;
  49.   Widget helpDoc, helpQuit;
  50.   int sizedoc = 0, sizeman;
  51.   char **docp, *doct, *mant;
  52.  
  53.   /* HELP POPUP */
  54.   helpShell = XtVaCreatePopupShell("helpShell",
  55.                 topLevelShellWidgetClass, parent,
  56.                  NULL);
  57.   /* Now add callback for help button */
  58.   XtAddCallback(parent, XtNcallback, (XtCallbackProc)help_callback,
  59.         (XtPointer)helpShell);
  60.   
  61.   /* HELP FRAME */
  62.   helpFrame = XtVaCreateManagedWidget("helpFrame",
  63.                 formWidgetClass, helpShell,
  64.                  NULL);
  65.  
  66.   /* HELP COMMAND BUTTON: QUIT */
  67.   helpQuit = XtVaCreateManagedWidget("helpQuit", commandWidgetClass,
  68.             helpFrame,
  69.             NULL);
  70.   XtAddCallback(helpQuit, XtNcallback, (XtCallbackProc)pop_down, 
  71.         (XtPointer)helpShell);
  72.  
  73.   /* HELP COMMAND BUTTON: QUICK */
  74.   helpQuick = XtVaCreateManagedWidget("helpQuick", commandWidgetClass,
  75.             helpFrame,
  76.             XtNfromHoriz, (XtPointer)helpQuit,
  77.             XtNhorizDistance, 100,
  78.             NULL);
  79.   XtAddCallback(helpQuick, XtNcallback, (XtCallbackProc)show_text, 
  80.         (char*)quick);
  81.  
  82.   sizeman = strlen(man[0]) + strlen(man[1]) + 1;
  83.   mant = XtMalloc(sizeman);
  84.   strcpy(mant, man[0]);
  85.   strcat(mant, man[1]);
  86.   
  87.   /* HELP COMMAND BUTTON: MAN */
  88.   helpMan = XtVaCreateManagedWidget("helpMan", commandWidgetClass, helpFrame,
  89.             XtNfromHoriz, (XtPointer)helpQuick,
  90.             NULL);
  91.   XtAddCallback(helpMan, XtNcallback, (XtCallbackProc)show_text, 
  92.         (XtPointer)mant);
  93.   
  94.   /* HELP COMMAND BUTTON: DOC */
  95.   helpDoc = XtVaCreateManagedWidget("helpDoc", commandWidgetClass, helpFrame,
  96.             XtNfromHoriz, (XtPointer)helpMan,
  97.             NULL);
  98.   
  99.   docp = doc;
  100.   sizedoc = strlen(*docp) + 1;
  101.   doct = XtMalloc(sizedoc);
  102.   strcpy(doct, *docp);
  103.   docp++;
  104.   while (*docp[0]) {
  105.     sizedoc += strlen(*docp) + 1;
  106.     doct = XtRealloc(doct, sizedoc);
  107.     strcat(doct, *docp);
  108.     docp++;
  109.   }
  110.   
  111.   XtAddCallback(helpDoc, XtNcallback, (XtCallbackProc)show_text, doct);
  112.   
  113.   /* HELP TEXT */
  114.   helpText = XtVaCreateManagedWidget("helpText",
  115.                      asciiTextWidgetClass, helpFrame,
  116.                      XtNfromVert, (XtPointer)helpQuit,
  117.                      /*XtNtype, XawAsciiString,*/
  118.                      /*XtNuseStringInPlace, True,*/
  119.                      NULL);
  120. }
  121.  
  122.