home *** CD-ROM | disk | FTP | other *** search
/ Power CD-ROM!! 7 / POWERCD7.ISO / prgmming / clipper / gt_help.prg < prev    next >
Text File  |  1993-10-14  |  4KB  |  160 lines

  1. /*
  2.     File......: GT_Help.prg
  3.     Author....: Martin Bryant
  4.     BBS.......: The Dark Knight Returns
  5.     Net/Node..: 050/069
  6.     User Name.: Martin Bryant
  7.     Date......: 09/02/93
  8.     Revision..: 1.0
  9.  
  10.     This is an original work by Martin Bryant and is placed
  11.     in the public domain.
  12.  
  13.     Modification history:
  14.     ---------------------
  15.  
  16.     Rev 1.0 09/02/93
  17.     PD Revision.
  18. */
  19.  
  20. /*  $DOC$
  21.  *  $FUNCNAME$
  22.  *      GT_HELP()
  23.  *  $CATEGORY$
  24.  *      General
  25.  *  $ONELINER$
  26.  *      A general purpose Help function.
  27.  *  $SYNTAX$
  28.  *      GT_Help(<cProcName>,<nProcLine>, <cVarName>) -> lSuccess
  29.  *  $ARGUMENTS$
  30.  *      <cProcName> is the name ofthe calling procedure.
  31.  *
  32.  *      <nProcLine> is the line numbr of the calling
  33.  *      program.
  34.  *
  35.  *      <cVarName> is the name of the currently active get,
  36.  *      if there is one.
  37.  *  $RETURNS$
  38.  *      lSuccess
  39.  *  $DESCRIPTION$
  40.  *      A general purpose Help function.
  41.  *  $EXAMPLES$
  42.  *      SetKey(K_F1,{ | cProc, nProcLine, cVarName | ;
  43.  *          GT_Help(cProc,nProcLine,cVarName) } )
  44.  *  $SEEALSO$
  45.  *
  46.  *  $INCLUDE$
  47.  *
  48.  *  $END$
  49.  */
  50.  
  51. #include "GT_LIB.ch"
  52.  
  53. FUNCTION GT_Help(cProcName,nProcLine,cVarName)
  54.  
  55. LOCAL cAlias := 'Help'
  56. LOCAL cHelpMessage := ''
  57. LOCAL cOptions := '╢ Esc∙Exit ╟───╢ Scroll  ╟'
  58. LOCAL cScreen := SAVESCREEN(00,00,MAXROW(),MAXCOL())
  59. LOCAL cTitle := '┤ HELP SCREEN ├'
  60. LOCAL nBoxBottom := (MAXROW() - 05)
  61. LOCAL nBoxLeft := 02
  62. LOCAL nBoxRight := (MAXCOL() - 02)
  63. LOCAL nBoxTop := 03
  64. LOCAL nBoxWidth := (nBoxRight - nBoxLeft - 01)
  65. LOCAL nColumn := COL()
  66. LOCAL nCursor := SETCURSOR()
  67. LOCAL nRow := ROW()
  68. LOCAL nSelect := 0
  69.  
  70. Default cProcname to 'Default'
  71. Default nProcLine to 0
  72. Default cVarName to 'Default'
  73.  
  74. //  Called from here ?
  75. IF UPPER(cProcName) = UPPER(PROCNAME())
  76.     RETURN(NIL)
  77. ENDIF
  78.  
  79. // Turn cursor off
  80. GT_Nocursor()
  81.  
  82. //  Find help files
  83. IF FILE(cAlias + '.DBF') .AND. FILE(cAlias + '.DBT')
  84.  
  85.     // Help files found
  86.     nSelect := SELECT()
  87.  
  88.     // Ask to wait
  89.     GT_Message('Please wait','Getting Help')
  90.  
  91.     // Open files
  92.     IF .NOT. EMPTY(GT_Use(cAlias,{},cAlias))
  93.  
  94.         // Opened OK
  95.         DBGOTOP()
  96.         cVarName := SUBSTR(cVarName,1,LEN(FIELD->Variable_))
  97.         cProcName := SUBSTR(cProcName,1,LEN(FIELD->Procedure_))
  98.         DO CASE
  99.             CASE .NOT. EMPTY(cVarName)
  100.                 // Find based on routine name
  101.                 LOCATE FOR FIELD->Variable_ = cVarName
  102.  
  103.             CASE .NOT. EMPTY(cProcName)
  104.                 // Find based on variable name
  105.                 LOCATE FOR FIELD->Procedure_ = cProcName
  106.  
  107.             OTHERWISE
  108.                 // Record 1 is default help
  109.  
  110.         ENDCASE
  111.  
  112.         // OK ?
  113.         IF .NOT. FOUND() .OR. EOF()
  114.             DBGOTOP()
  115.         ENDIF
  116.  
  117.         // Got it OK
  118.         cHelpMessage := FIELD->Memo_
  119.         DBCLOSEAREA()
  120.         SELECT(nSelect)
  121.  
  122.     ELSE
  123.  
  124.         // Unable to open help
  125.         cHelpMessage := CRLF + PADC('Unable to open the help files',nBoxWidth)
  126.  
  127.     ENDIF
  128.  
  129. ELSE
  130.  
  131.     // No help files
  132.     cHelpMessage := CRLF + PADC('There is currently no help available',nBoxWidth)
  133.  
  134. ENDIF
  135.  
  136. //  Draw box
  137. SAVESCREEN(00,00,MAXROW(),MAXCOL(),cScreen)
  138. GT_Window(nBoxTop,nBoxLeft,nBoxBottom,nBoxRight,BOX_SS)
  139. @ nBoxTop, nBoxLeft + 3 Say cTitle
  140. @ nBoxBottom, nBoxLeft + 3 Say cOptions
  141.  
  142. //  Show
  143. BEGIN SEQUENCE
  144.     MEMOEDIT(cHelpMessage,nBoxTop+2,nBoxLeft+2,nBoxBottom-1,nBoxRight-1,.F.)
  145. END SEQUENCE
  146.  
  147. //  Restore screen
  148. RESTSCREEN(00,00,MAXROW(),MAXCOL(),cScreen)
  149. @ nRow, nColumn SAY ''
  150. SETCURSOR(nCursor)
  151.  
  152. //  Flush the keyboard
  153. KEYBOARD CHR(0)
  154. INKEY()
  155.  
  156. /*
  157.     End of GT_Help()
  158. */
  159. RETURN(NIL)
  160.