home *** CD-ROM | disk | FTP | other *** search
/ DP Tool Club 17 / CD_ASCQ_17_101194.iso / dos / prg / ghostlib / ghost.ch < prev    next >
Encoding:
Text File  |  1994-08-31  |  19.6 KB  |  443 lines

  1. /*****************************************************************************
  2. *  Header File : GHOST.CH                                                    *
  3. *                                                                            *
  4. *       Author : R.P.J. van Geest                                            *
  5. *    Copyright : 1993 - (c) GhostWare                                        *
  6. *                                                                            *
  7. *  Description : Header file for the GhostWare libraries GHOST.LIB,          *
  8. *                GHOSTHOL.LIB and GHOSTUSA.LIB                               *
  9. *                                                                            *
  10. * Date created : 13-05-92       updated : ■22-03-94                          *
  11. * Time created : 16:11:13       updated : ■16:07:06                          *
  12. *****************************************************************************/
  13.  
  14. // You can use this statement when compiling with Clipper 5.2
  15. #STDOUT Using GHOST.CH    - version 2.3 by GhostWare (c) 1991-1994
  16.  
  17. // If you used version 1.x, include the following line too.
  18. // #INCLUDE "CONV2GW.CH"
  19.  
  20. // Include this header file for pulldown MENU commands
  21. #INCLUDE "GWMENU.CH"
  22.  
  23. // Some handy defines **********************
  24. #DEFINE FOREVER         WHILE .T.
  25. #DEFINE EEUWIG          WHILE .T.
  26. #DEFINE TRUE            .T.
  27. #DEFINE FALSE           .F.
  28. #DEFINE WAAR            .T.
  29. #DEFINE ONWAAR          .F.
  30. #DEFINE EMPTYDATE       CTOD('  -  -    ')
  31. #DEFINE LEGEDATUM       CTOD('  -  -    ')
  32. #DEFINE legedatum       CTOD('  -  -    ')
  33. #DEFINE K_MINUS        45
  34. #DEFINE K_PLUS        43
  35.  
  36. // BOX border drawing characters
  37. // Thick border
  38. #DEFINE    B_THICK       ( '█▀███▄██' )
  39. #DEFINE    B_ZEER_VET    ( '█▀███▄██' )
  40. // Box border special FONT GHOSTEGA.FON or GHOSTVGA.FON
  41. #DEFINE    B_GHOST_FONT ( '╞╟╚▐╔╩╦▌' )
  42.  
  43. //------------------------------//
  44. // UDC's for GHOSTlib functions //
  45. //------------------------------//
  46. #COMMAND SET EXPLOSION [OFF]     => GWExplosion(.F.)
  47. #COMMAND SET EXPLOSION ON        => GWExplosion(.T.)
  48.  
  49. #COMMAND SET GRAPH [OFF]         => GWUseSpecial(.F.)
  50. #COMMAND SET GRAPH ON            => GWUseSpecial(.T.)
  51.  
  52. #COMMAND SET MOUSE [OFF]         => GWmUse(.F.)
  53. #COMMAND SET MOUSE ON            => GWmUse(.T.)
  54.  
  55. #COMMAND SET SCREENSAVER TO [<cSaver>] ;
  56.     [AFTER <nSeconds>]       => GWScreenSaver(<{cSaver}>, <nSeconds>)
  57.  
  58. #COMMAND SET SHADOWHEIGHT TO [<nHeight>] ;
  59.                              => GWShadowHeight(IIF(<.nHeight.>, <nHeight>, 1))
  60.  
  61. #COMMAND LOG ERRORS [OFF] => GWSaveErrors(.F.)
  62. #COMMAND LOG ERRORS ON    => GWSaveErrors(.T.)
  63.  
  64. #COMMAND HELPTOETS <nKey>       =>                                ;
  65.   SETKEY( <nKey>, { | cProcName,nProcLine,cProcVar |              ;
  66.                  GWHELP( cProcName, nProcLine, cProcVar, <nKey> ) ;
  67.                  } )
  68.  
  69. #COMMAND HELPTOETS              =>                            ;
  70.   SETKEY( 28   , { | cProcName,nProcLine,cProcVar |           ;
  71.                  GWHELP( cProcName, nProcLine, cProcVar, 28 ) ;
  72.                  } )
  73.  
  74. #XCOMMAND GWASKTHIS                             ;
  75.     [QUESTION <question>]                   ;
  76.     [[WITH] ANSWERS <answers>]              ;
  77.     [INITPOSITION <initpos>]                ;
  78.     [COLOR <color>]                         ;
  79.     [<vertical:VERTICAL>]                    ;
  80.     [<horizontal:HORIZONTAL>]               ;
  81.     [AT <top>[,<left>]]                     ;
  82.     [BORDER <border>]                       ;
  83.     [ALLOWED <allowed>]                     ;
  84.     [<vars:TO> <var>]                       ;
  85.     =>                            ;
  86.     [<var> :=] GWAsk(<question>, <answers>, ;
  87.         <initpos>, <color>,                     ;
  88.         IIF(<.vertical.>, "V", "H"),            ;
  89.     <top>, <left>, <border>, <allowed>)
  90.  
  91. #XCOMMAND ASKTHIS <*rest*> => GWASKTHIS <rest>  // Same as the above command
  92.  
  93. #XCOMMAND GWBOX                                 ;
  94.     [AT <top>, <left>, <bottom>, <right>]   ;
  95.     [COLOR <color>]                         ;
  96.     [LEVEL <level>]                         ;
  97.     [BORDER <border>]                       ;
  98.     [<explode:EXPLODE>]                     ;
  99.     [<vars:TO> <var>]                       ;
  100.     =>                            ;
  101.     [<var> :=] GWShadowBox(<top>, <left>,   ;
  102.     <bottom>, <right>, <color>, <level>,    ;
  103.     <border>, <.explode.>)
  104.  
  105. #XCOMMAND SHADOWBOX <*rest*> => GWBOX <rest>    // Same as the above command
  106.  
  107. #XCOMMAND GWDBFBROWSE                                     ;
  108.     [AT <top>,<left>,<bottom>,<right>]               ;
  109.     [FIELDS <fields>]                                 ;
  110.     [TITLES <tits>]                                     ;
  111.     [FREEZE <freeze>]                             ;
  112.     [<edit:EDIT>]                                 ;
  113.     [<del:DEL>]                                 ;
  114.     [<add:ADD>]                                 ;
  115.     [COLOR <color>]                                 ;
  116.     [<counter:COUNTER>]                             ;
  117.     [<vertical:VERTICAL>]                             ;
  118.     [<horizontal:HORIZONTAL>]                        ;
  119.     [<enterischoice:ENTERISCHOICE>]                  ;
  120.     [FUNCTION <function>]                             ;
  121.         [<sat:SAT> <stop>,<sleft>,<sbottom>,<sright>] ;
  122.         [SFIELDS <sflds>]                        ;
  123.         [STITLES <stits>]                        ;
  124.     [<special:SPECIAL>]                             ;
  125.     [<spaceedit:SPACEEDIT>]                             ;
  126.     [<printmag:PRINT>]                             ;
  127.     [KEYS <newkeys>]                             ;
  128.     [<restore:RESTORE>]                             ;
  129.     [STABLEBLOCK <stable>]                             ;
  130.     [<helpline:HELPLINE>]                             ;
  131.     [SEPARATORS <separators>]                        ;
  132.     [<noconfirm:NOCONFIRM>]                             ;
  133.     =>                                     ;
  134.     GWBrowseDBF(<top>, <left>, <bottom>, <right>,    ;
  135.     <fields>,                                     ;
  136.     IIF( <.tits.>, <tits> ,NIL ),                    ;
  137.     <freeze>,                                     ;
  138.     <.edit.>, <.del.>, <.add.>, <color>,             ;
  139.     <.counter.>, <.vertical.>,                       ;
  140.     <.horizontal.>,    <.enterischoice.>,               ;
  141.     <function>,                                  ;
  142.         IIF( <.sflds.> ,                         ;
  143.         { <stop>, <sleft>, <sbottom>,            ;
  144.         <sright>, IIF( <.sflds.>, <sflds>, NIL), ;
  145.         IIF( <.stits.>, <stits> ,NIL )           ;
  146.         },                                       ;
  147.         NIL),                                    ;
  148.     NIL, <.spaceedit.>, <.printmag.>,                ;
  149.     IIF( <.newkeys.>, <newkeys> ,NIL ), <.restore.>, ;
  150.     IIF( <.stable.>, <stable> ,NIL ), <.helpline.>,  ;
  151.     <separators>, <.noconfirm.> )
  152.  
  153. #XCOMMAND DBFBROWSE <*rest*> => GWDBFBROWSE <rest>  // Same as the above command
  154.  
  155. #XCOMMAND GWARRBROWSE                                       ;
  156.     [AT <top>,<left>,<bottom>,<right>]                  ;
  157.     [ARRAY <arrayname>]                            ;
  158.     [<titles:TITLES> <tits>]                            ;
  159.     [<vars:VAR> <var>]                                ;
  160.     [FREEZE <freeze>]                                ;
  161.     [COLOR <color>]                                    ;
  162.     [<counter:COUNTER>]                                ;
  163.     [<vertical:VERTICAL>]                                ;
  164.     [<horizontal:HORIZONTAL>]                           ;
  165.     [<enterischoice:ENTERISCHOICE>]                     ;
  166.     [<tag:TAG>]                                         ;
  167.     [<special:SPECIAL>]                                ;
  168.     [<printmag:PRINT>]                                ;
  169.     [<restore:RESTORE>]                                ;
  170.     [STABLEBLOCK <stable>]                                ;
  171.     [<helpline:HELPLINE>]                                ;
  172.     [SEPARATORS <separators>]                           ;
  173.     [KEYS <newkeys>]                                ;
  174.     =>                                        ;
  175.     [<var> :=] GWBrowseArray(<top>, <left>, <bottom>, <right>, ;
  176.     <arrayname>,                                        ;
  177.     IIF( <.titles.>, <tits> ,NIL ),                        ;
  178.     <freeze>,    <color>, <.counter.>, <.vertical.>, ;
  179.     <.horizontal.>,    <.enterischoice.>, <.tag.>,         ;
  180.     NIL, <.printmag.>, <.restore.>,                     ;
  181.     IIF( <.stable.>, <stable> ,NIL ), <.helpline.>,     ;
  182.     <separators>, <newkeys> )
  183.  
  184. #XCOMMAND ARRBROWSE <*rest*> => GWARRBROWSE <rest>  // Same as the above command
  185.  
  186. #XCOMMAND GWTXTBROWSE                ;
  187.     [FILE <file>]                      ;
  188.     [AT <top>,<left>,<bottom>,<right>] ;
  189.     [COLOR <color>]                         ;
  190.     [<linenum:LINENUM>]                   ;
  191.     [<special:SPECIAL>]                   ;
  192.     [<printmag:PRINT>]                   ;
  193.     [<restore:RESTORE>]                   ;
  194.     =>                                       ;
  195.     GWBrowseText(<file>, <top>, <left>, <bottom>, <right>, ;
  196.     <(color)>, <.linenum.>,    NIL, <.printmag.>, <.restore.>)
  197.  
  198. #XCOMMAND TXTBROWSE <*rest*> => GWTXTBROWSE <rest>  // Same as the above command
  199.  
  200. #XCOMMAND LABEL <xFields,...>          ;
  201.   [LINES <nLines>]                     ;
  202.   [WIDTH <nWidth>]                     ;
  203.   [HORIZONTAL [SPACE] <nHSpace>]       ;
  204.   [VERTICAL [SPACE] <nVSpace>]         ;
  205.   [COLUMNS <nColumns>]                 ;
  206.   [PAGELENGTH <nLength>]               ;
  207.   [LEFTMARGIN <nLMargin>]              ;
  208.   [TOPMARGIN <nTMargin>]               ;
  209.   [COPIES <nCopies>]                   ;
  210.   [<lSamples:SAMPLES>]                 ;
  211.   =>                                   ;
  212.   GWLabel({|| {<xFields>} }, <nLines>, ;
  213.   <nWidth>, <nHSpace>, <nVSpace>,      ;
  214.   <nColumns>, <nLength>, <nLMargin>,   ;
  215.   <nTMargin>, <nCopies>, <.lSamples.>)
  216.  
  217. /***
  218. *  Redefinition of @ ... GET ... for mouse sensitive GETs
  219. *
  220. *  This is a copy of @ ... GET ... from STD.CH
  221. */
  222. #command @ <row>, <col> GET <var>                                       ;
  223.                         [PICTURE <pic>]                                 ;
  224.                         [VALID <valid>]                                 ;
  225.                         [WHEN <when>]                                   ;
  226.                         [SEND <msg>]                                    ;
  227.                                                                         ;
  228.       => SetPos( <row>, <col> )                                         ;
  229.        ; GWmSet(.F.)                                                    ;
  230.        ; AAdd(                                                          ;
  231.            GetList,                                                     ;
  232.            _GET_( <var>, <(var)>, <pic>, <{valid}>, <{when}> ):display();
  233.              )                                                          ;
  234.        ; GWmSet(GWmPresent())                                           ;
  235.       [; ATail(GetList):<msg>]
  236.  
  237. // New GET command that does display the get field initially
  238. #command @ <row>, <col> GET <var> NODISPLAY                             ;
  239.                         [PICTURE <pic>]                                 ;
  240.                         [VALID <valid>]                                 ;
  241.                         [WHEN <when>]                                   ;
  242.                         [SEND <msg>]                                    ;
  243.                                                                         ;
  244.       => SetPos( <row>, <col> )                                         ;
  245.        ; GWmSet(.F.)                                                    ;
  246.        ; AAdd(                                                          ;
  247.            GetList,                                                     ;
  248.            _GET_( <var>, <(var)>, <pic>, <{valid}>, <{when}> )          ;
  249.              )                                                          ;
  250.        ; GWmSet(GWmPresent())                                           ;
  251.       [; ATail(GetList):<msg>]
  252.  
  253. // New GET command that does display the get field initially
  254. // @..GET..NODISPLAY COLOR
  255. #command @ <row>, <col> GET <var> NODISPLAY                             ;
  256.                         [<clauses,...>]                                 ;
  257.                         COLOR <color>                                   ;
  258.                         [<moreClauses,...>]                             ;
  259.                                                                         ;
  260.       => @ <row>, <col> GET <var> NODISPLAY                             ;
  261.                         [<clauses>]                                     ;
  262.                         SEND colorSpec:=<color>                         ;
  263.                         [<moreClauses>]
  264.  
  265. /***
  266. *  Redefinition of READ
  267. *
  268. *  This is a copy of READ from STD.CH
  269. */
  270.  
  271. #COMMAND READ SAVE [<validate:VALIDATE>]      ;
  272.       => READMODAL(GetList, , <.validate.>)
  273.  
  274. #COMMAND READ [<validate:VALIDATE>]           ;
  275.       => READMODAL(GetList, , <.validate.>)   ;
  276.        ; GetList := {}
  277.  
  278. //
  279. // New GET commands
  280. //
  281. // 'NODISPLAY' makes sure that the contents of <var> is NOT displayed
  282. // on the screen initially.
  283. //
  284.  
  285. #COMMAND @ <row>, <col> GET <var> RADIO <boxes>     ;
  286.            [<clauses,...>]                          ;
  287.            [ANSWERS <answers>]                      ;
  288.            [<horizontal:HORIZONTAL>]                ;
  289.            [CHECK <char>]                           ;
  290.            [RADIOCOLOR <color>]                     ;
  291.       => @ <row>, <col> GET <var> NODISPLAY            ;
  292.            [<clauses>]                                 ;
  293.            SEND cargo:={"RADIO", <boxes>, <answers>,   ;
  294.              NIL, <.horizontal.>, <char>, <color>, NIL, "NODISP"};
  295.            SEND reader:={|oGet| GWRadioReader(oGet)} ; ;
  296.            GWRadioDisp(ATAIL(Getlist), <var>)
  297.  
  298. #COMMAND @ <row>, <col> GET <var> CHECKBOX <boxes>  ;
  299.            [<clauses,...>]                          ;
  300.            [ANSWERS <answers>]                      ;
  301.            [<horizontal:HORIZONTAL>]                ;
  302.            [CHECK <char>]                           ;
  303.            [CHECKCOLOR <color>]                     ;
  304.       => @ <row>, <col> GET <var> NODISPLAY            ;
  305.            [<clauses>]                                 ;
  306.            SEND cargo:={"BOXES", <boxes>, <answers>,   ;
  307.              NIL, <.horizontal.>, <char>, <color>, NIL, "NODISP"};
  308.            SEND reader:={|oGet| GWCheckReader(oGet)} ; ;
  309.            GWCheckDisp(ATAIL(Getlist), <var>)
  310.  
  311. #COMMAND @ <row>, <col> GET MEMO <var>                 ;
  312.            [<clauses,...>]                             ;
  313.            [AT <t>, <l>, <b>, <r>]                     ;
  314.            [KEY <key>] [TITLE <title> ]                ;
  315.            [BLOCK <block>]                             ;
  316.       => @ <row>, <col> GET <var> NODISPLAY            ;
  317.            [<clauses>]                                 ;
  318.            SEND cargo:={"MEMO", {<t>, <l>, <b>, <r>}, <title>, <key>, <block>, "NODISP"} ;
  319.            SEND reader:={|oGet| GWMemoReader(oGet)}  ; ;
  320.            GWMDisp(ATAIL(Getlist))
  321.  
  322. #COMMAND @ <row>, <col> GET <var>                   ;
  323.            [<clauses,...>]                          ;
  324.            HISTORY <nMaxHistory>                    ;
  325.            [<moreclauses,...>]                      ;
  326.       => @ <row>, <col> GET <var>                   ;
  327.            [<clauses>]                              ;
  328.            SEND cargo  := <nMaxHistory>             ;
  329.            SEND reader := {|g| GWHistoryReader(g) } ;
  330.            [<moreclauses>]
  331.  
  332. #COMMAND @ <row>, <col> GET <var>              ;
  333.            [<clauses,...>]                     ;
  334.            PASSWORD                            ;
  335.            [<moreClauses,...>]                 ;
  336.       => @ <row>, <col> GET <var>              ;
  337.            [<clauses>]                         ;
  338.            SEND reader := {|g| GWPWReader(g)}  ;
  339.            [<moreClauses>]                   ; ;
  340.            GWPWDisp(ATAIL(GetList),<var>)
  341.  
  342. #COMMAND @ <row>, <col> GET <var>                ;
  343.            [<clauses,...>]                       ;
  344.            INITIALS                              ;
  345.            [<moreClauses>]                       ;
  346.       => @ <row>, <col> GET <var>                ;
  347.            [<clauses>]                           ;
  348.            SEND reader:={|g| GWInitialReader(g)} ;
  349.            [<moreClauses>]
  350.  
  351. #COMMAND @ <row>, <col> GET <var>                ;
  352.            [<clauses,...>]                       ;
  353.            CALENDER                              ;
  354.            [<moreClauses>]                       ;
  355.       => @ <row>, <col> GET <var>                ;
  356.            [<clauses>]                           ;
  357.            SEND reader:={|g| GWCalReader(g)}     ;
  358.            [<moreClauses>]
  359.  
  360. #COMMAND @ <row>, <col> GET <var>                ;
  361.            [<clauses,...>]                       ;
  362.            CALCULATOR                            ;
  363.            [<moreClauses>]                       ;
  364.       => @ <row>, <col> GET <var>                ;
  365.            [<clauses>]                           ;
  366.            SEND reader:={|g| GWCalcReader(g)}    ;
  367.            [<moreClauses>]
  368.  
  369. #COMMAND @ <row>, <col> GET <var>                      ;
  370.            [<clauses,...>]                             ;
  371.            BUTTON <text>                               ;
  372.            [<d1:DO, EXECUTE> <do> [<stay:STAY, KEEP>]] ;
  373.            [<exitread:EXITREAD, STOPREAD>]             ;
  374.            [<moreClauses>]                             ;
  375.       => @ <row>, <col> GET <var> NODISPLAY            ;
  376.            [<clauses>]                                 ;
  377.            SEND cargo:={"BUTTON", <text>, <{do}>, <.stay.>, <.exitread.>, "NODISP"} ;
  378.            SEND reader:={|g| GWButtonReader(g)}        ;
  379.            [<moreClauses>]                           ; ;
  380.            GWButDisp(ATAIL(GetList),<text>)
  381.  
  382. #COMMAND @ <row>, <col> GET <var>                      ;
  383.            [<clauses,...>]                             ;
  384.            PICK <aPickList>                            ;
  385.            [QUESTION <cQuest>]                         ;
  386.            [<moreClauses,...>]                         ;
  387.       => @ <row>, <col> GET <var>                      ;
  388.            [<clauses>]                                 ;
  389.            SEND reader:={|oGet| GWPickReader(oGet, <aPickList>, <cQuest>)} ;
  390.            [<moreClauses>]
  391.  
  392. //---------------------------------------//
  393. // End of : UDC's for GHOSTlib functions //
  394. //---------------------------------------//
  395.  
  396. // Subscripts for field structure array of GWDBStruct()
  397. #DEFINE GWS_NAME  1
  398. #DEFINE GWS_TYPE  2
  399. #DEFINE GWS_LEN      3
  400. #DEFINE GWS_DEC      4
  401. #DEFINE GWS_AREA  5
  402. #DEFINE GWS_ALIAS 6
  403.  
  404. // Subscripts for open files array of GWOpenDBF()
  405. #DEFINE GWOPENDBF_AREA       1
  406. #DEFINE GWOPENDBF_ALIAS      2
  407. #DEFINE GWOPENDBF_INDEX      3
  408. #DEFINE GWOPENDBF_CURR_INDEX 4
  409. #DEFINE GWOPENDBF_RDD        5
  410.  
  411. // Subscripts for program's call stack array of GWTrace()
  412. #DEFINE GWTRACE_PROC 1
  413. #DEFINE GWTRACE_LINE 2
  414.  
  415. // New commands
  416. #COMMAND REPEAT            => WHILE (.T.)
  417. #COMMAND UNTIL <*expr*>         => IF( <expr> ); EXIT; END; END
  418. #COMMAND SET DATE [TO] DUTCH    => _DFSET( "dd-mm-yyyy", "dd-mm-yy" )
  419.  
  420. // Preprocessor substitutes for in-line udfs
  421. #DEFINE    DEFAULT(para_nm,sw)    para_nm := IIF(para_nm==NIL, sw, para_nm)
  422.  
  423. #XTRANSLATE Center( <ry>,<msg>[,<kleur>] ) => ;
  424.     @<ry>,INT((MAXCOL()-LEN(<msg>))/2) SAY <msg> [COLOR <kleur>]
  425.  
  426. #XTRANSLATE ashrink( <a> )       => ASIZE( <a>, LEN( <a> ) - 1 )
  427. #XTRANSLATE OutaBounds()         => ( EOF() .or. BOF() )
  428. #XTRANSLATE ;
  429.   TestParm( <parm>, <default> ) => IIF( VALTYPE( <parm> ) ==      ;
  430.                                         VALTYPE( <default>),      ;
  431.                                         <parm>, <default> )
  432. #XTRANSLATE ;
  433.   KillFiles( <mask> )           => AEVAL( DIRECTORY( <mask> ),    ;
  434.                                           {|f| FERASE( f\[1] ) } )
  435. #XTRANSLATE ;
  436.   InsertCursor( <mode> )        => SETKEY( K_INS, IIF( <mode>,    ;
  437.                                            { || SETCURSOR(        ;
  438.                                            If( READINSERT( !READINSERT() ),;
  439.                                                1, 3) ) }, NIL ) )
  440.  
  441. #XTRANSLATE ;
  442.   InRange(<exp>,<lo>,<hi>)      => ( <exp>>=<lo> .AND. <exp><=<hi> )
  443.