home *** CD-ROM | disk | FTP | other *** search
/ swCHIP 1991 January / swCHIP_95-1.bin / chip / tvgenpas / demo3pas.exe / TEMPLATE / APP.ATF next >
Text File  |  1995-02-04  |  18KB  |  751 lines

  1. \ ********************************************************
  2. \     Standard application template file for TVGen 3.0
  3. \               (c) 1994 BOCIAN Software
  4. \ ********************************************************
  5.  
  6. \ Procedures LineProc and ObjParams are used in dialogs. Placing them
  7. \ here eliminates redefining when each dialog is about to be generated
  8.  
  9. \ Recursively called procedure building up the cluster string lists
  10. @DEFPROC LineProc
  11. @IF!EQUAL %_LINETEXT% ''
  12.   @IFOPTION STR_IN_RSC
  13.          NewSItem(%_LINETEXT%,
  14.     @ELSE
  15.          NewSItem('%_LINETEXT%',
  16.   @ENDIF
  17.   @NEXTLINE Lines
  18.   @CALL LineProc
  19.   @NOCR )
  20.   @ELSE
  21.   @NOCR             nil
  22. @ENDIF (if!equal)
  23. @ENDPROC
  24. \ End of procedure LineProc
  25.  
  26. \ Recursively called procedure building up the cluster hints list
  27. @DEFPROC HintsProc
  28. @IF!EQUAL %_LINETEXT% ''
  29.   @IFOPTION HELP
  30.     @IF!EQUAL %__HELPFLAG% 0
  31.       @PUSHFILE 4
  32.       @NOCR ,%_SUBSTR(__HCVAL,1,2)%%__HCCOUNTER%
  33.       @POPFILE
  34.     @ENDIF (if!equal)
  35.   @ENDIF
  36.   S.Put(hc_D_%_DLGFUNC(_DLGNUM)%+%__HCCOUNTER%,'%_LINETEXT%');
  37.     @INC __HCCOUNTER  
  38.     @INC __HINTCOUNTER
  39.   @NEXTLINE Hints
  40.   @CALL HintsProc
  41. @ENDIF (if!equal)
  42. @ENDPROC
  43. \ End of procedure HintsProc
  44.  
  45. \ Procedure for object flags redefinition
  46. @DEFPROC ObjParams
  47. @IF!DEFAULT Options
  48.       %_PARAMETER(1)%.Options:=%OPTIONS%;
  49. @ENDIF
  50. @IF!DEFAULT DragMode
  51.       %_PARAMETER(1)%.DragMode:=%DRAGMODE%;
  52. @ENDIF
  53. @IF!DEFAULT GrowMode
  54.       %_PARAMETER(1)%.GrowMode:=%GROWMODE%;
  55. @ENDIF
  56. @IF!DEFAULT EventMask
  57.       %_PARAMETER(1)%.EventMask:=%EVENTMASK%;
  58. @ENDIF
  59. \ Has the object defined HINT field?
  60. @IFFIELD HINT
  61.   @IFOPTION HELP
  62.     @IF!EQUAL %__HELPFLAG% 0
  63.       @PUSHFILE 4
  64.       @NOCR ,%_SUBSTR(__HCVAL,1,2)%%__HCCOUNTER%
  65.       @POPFILE
  66.     @ENDIF (if!equal)
  67.   @ENDIF
  68.   \ Differs hint-text from the null string?
  69.   @IF!EQUAL %HINT% ''
  70.     \ File @5 is the application resource maker
  71.       %_PARAMETER(1)%.HelpCTX:=hc_D_%_DLGFUNC(_DLGNUM)%+%__HCCOUNTER%;
  72.     @PUSHFILE 5
  73.   S.Put(hc_D_%_DLGFUNC(_DLGNUM)%+%__HCCOUNTER%,%HINT%);
  74.     @INC __HCCOUNTER  
  75.     @INC __HINTCOUNTER
  76.     @POPFILE
  77.   @ENDIF (if!equal)
  78. @ENDIF (iffield)
  79. \ Has the object defined HINTS field?
  80. @IFFIELD HINTS
  81.       %_PARAMETER(1)%.HelpCTX:=hc_D_%_DLGFUNC(_DLGNUM)%+%__HCCOUNTER%;
  82.   @FIRSTLINE Hints
  83.   @PUSHFILE 5
  84.   @CALL HintsProc
  85.   @POPFILE
  86. @ENDIF
  87. @ENDPROC
  88. \ End of procedure ObjParams
  89. \
  90. \
  91. @DEFPROC AppDialogCall
  92.   @ASSIGN __DLGNUMBER %_GETDLGNUM(_PARAMETER(1))%
  93.   @IF!EQUAL %__DLGNUMBER% 0
  94.     @IFEQUAL %_DLGDATAFLAG(__DLGNUMBER)% 0
  95. Result:=%_DLGFUNC(__DLGNUMBER)%;
  96.     @ELSE
  97. Result:=%_DLGFUNC(__DLGNUMBER)%(%_PARAMETER(2)%,False);
  98.     @ENDIF
  99.   @ENDIF  
  100. @ENDPROC
  101. \ End of procedure AppDialogCall
  102. \
  103. @DEFPROC AppDialogData
  104.   @ASSIGN __DLGNUMBER %_GETDLGNUM(_PARAMETER(1))%
  105. var Result : Word;
  106.   @IF!EQUAL %__DLGNUMBER% 0
  107.     @IF!EQUAL %_DLGDATAFLAG(__DLGNUMBER)% 0
  108.     %_PARAMETER(2)% : T%_DLGFUNC(__DLGNUMBER)%Data;
  109.     @ENDIF
  110.   @ENDIF  
  111. @ENDPROC
  112. \ End of procedure AppDialogData
  113. \
  114. \                           END OF PROCEDURE SECTION
  115. \
  116. \
  117. @ASSIGN __HINTCOUNTER 0
  118. @ASSIGN __MAKEIDLE 0
  119. @ASSIGN __LOADGADGETS 0
  120. @IFOPTION CLOCK
  121.   @INC __MAKEIDLE
  122.   @INC __LOADGADGETS
  123. @ENDIF
  124. @IFOPTION HEAPVIEW
  125.   @INC __MAKEIDLE
  126.   @INC __LOADGADGETS
  127. @ENDIF
  128. @IFOPTION ScreenSaver
  129.   @INC __MAKEIDLE
  130. @ENDIF
  131. @DEFINEFILE 2 %_OUTFILE%.PAS
  132. @DEFINEFILE 3 %_SUBSTR(_OUTFILE,1,6)%_D.PAS
  133. @IFOPTION HELP
  134.   @DEFINEFILE 4 %_OUTFILE%.TXT
  135. @ENDIF
  136. @DEFINEFILE 5 %_SUBSTR(_OUTFILE,1,6)%_R.PAS
  137. @IFOPTION DLG_IN_RSC
  138.   @DEFINEFILE 6 %_SUBSTR(_OUTFILE,1,6)%_R.INC
  139.   @ASSIGN __OBJTYPES 0
  140. @ENDIF
  141. \ Dialog data exchange types
  142. @FILE 3
  143. unit %_SUBSTR(_OUTFILE,1,6)%_D;
  144.  
  145. interface
  146. uses Objects;
  147.  
  148. \ Resource maker
  149. @FILE 5
  150. program Resource_Maker;
  151. @NOCR uses App, Dialogs, Drivers, Editors, Objects, Menus, %_SUBSTR(_OUTFILE,1,6)%_H, %_SUBSTR(_OUTFILE,1,6)%_C, Views, Supply3
  152. @IF!EQUAL %_UNITS% ''
  153. ,
  154.       %_UNITS%;
  155. @ELSE
  156. ;
  157. @ENDIF
  158.  
  159. {$DEFINE RscMaker}
  160.  
  161. var
  162.   ResFile    : TResourceFile;
  163.   S          : TStrListMaker;
  164.   R          : TRect;
  165.  
  166. const 
  167.   AverageHintSize = 70;  { 70 bytes per hint text }  
  168.  
  169. procedure DefineHints(var S : TStrListMaker);
  170. begin
  171. \ Dialogs
  172. @DEFINEFILE 7 %_SUBSTR(_OUTFILE,1,6)%_K.INC
  173. @FORALLDIALOGS
  174.   @DIALOG
  175. @ENDFOR
  176. @CLOSEFILE 7
  177. \ Main program file
  178. @FILE 2
  179. {$X+}
  180. program %_OUTFILE%;
  181. uses App, Dialogs, Dos, Drivers, Editors, Menus, MsgBox, Objects, 
  182. @NOCR      StdDlg, Supply3, Views, HelpFile,
  183. @IF!EQUAL %_UNITS% ''
  184. @NOCR %_UNITS%,
  185. @ENDIF
  186.  
  187. @IFOPTION ASK_FOR_UNITS
  188.   @ASKFOR __USERUNITS '' 'User units'
  189.   @IFEQUAL %__USERUNITS% ''
  190.     @NOCR      %_SUBSTR(_OUTFILE,1,6)%_H, %_SUBSTR(_OUTFILE,1,6)%_C, %_SUBSTR(_OUTFILE,1,6)%_D
  191.   @ELSE
  192.     @NOCR      %__USERUNITS%, %_SUBSTR(_OUTFILE,1,6)%_H, %_SUBSTR(_OUTFILE,1,6)%_C, %_SUBSTR(_OUTFILE,1,6)%_D
  193.   @ENDIF
  194. @ELSE
  195.   @NOCR      %_SUBSTR(_OUTFILE,1,6)%_H, %_SUBSTR(_OUTFILE,1,6)%_C, %_SUBSTR(_OUTFILE,1,6)%_D
  196. @ENDIF (ifoption)
  197. @IF!EQUAL %__LOADGADGETS% 0
  198.   @NOCR  ,Gadgets
  199. @ENDIF
  200. ;
  201.  
  202. type 
  203.      %_APPTYPE% = object(TApplication)
  204. @IFOPTION Clock
  205.                     Clock       : PClockView;
  206. @ENDIF
  207. @IFOPTION HeapView
  208.                     HeapView    : PHeapView;
  209. @ENDIF
  210. @IFOPTION ScreenSaver
  211.                     ScreenSaver : PScreenSaver;
  212. @ENDIF
  213. @IFSNIPPET MTD_INIT
  214.             constructor Init;
  215. @ENDIF     
  216. \ AdditionalInit method handles setup of Clock, HeapView, ScreenSaver, etc.
  217.                     procedure AdditionalInit;
  218. @IFSNIPPET MTD_DONE
  219.             destructor Done; virtual;
  220. @ENDIF
  221. \ Always override HandleEvent and InitStatusLine methods
  222.             procedure HandleEvent(var Event : TEvent); virtual;
  223.             procedure InitStatusLine; virtual;
  224. @IFMENUBAR
  225.                     procedure InitMenuBar; virtual;
  226. @ENDIF
  227. @IFOPTION HELP
  228.                     procedure GetEvent(var Event : TEvent); virtual;
  229. @ELSE
  230.   @IFOPTION ScreenSaver
  231.                     procedure GetEvent(var Event : TEvent); virtual;
  232.   @ENDIF
  233. @ENDIF
  234. @IF!EQUAL %__MAKEIDLE% 0
  235.                     procedure Idle; virtual;
  236. @ENDIF
  237. @IFOPTION HELP
  238.                     function GetPalette : PPalette; virtual;
  239. @ELSE                    
  240.   @IFOPTION COLOR
  241.                     function GetPalette : PPalette; virtual;
  242.   @ENDIF                    
  243. @ENDIF
  244. @FORCALLEDDIALOGS
  245.                     procedure Call%_DLGFUNC(_DLGNUM)%;
  246. @ENDFOR
  247. @ASSIGN __SECTION 'HEADER'
  248. @SNIPPETS LIKE USR_*
  249. @ASSIGN __SECTION 'MAIN'
  250.          end;
  251.          
  252. var  ResFile : TResourceFile;         
  253.  
  254. @FORALLDIALOGS
  255.   @IF!EQUAL %_DLGDATAFLAG(_DLGNUM)% 0
  256. function %_DLGFUNC(_DLGNUM)%(var _Data : T%_DLGFUNC(_DLGNUM)%Data; _SetData : Boolean): Word; forward;
  257.   @ELSE
  258. function %_DLGFUNC(_DLGNUM)%: Word; forward;
  259.   @ENDIF
  260. @ENDFOR
  261.  
  262. \ Generate StatusLine
  263. @IFSTATUS
  264.   @PUSHFILE
  265.   @STATUSLINE
  266.   @POPFILE
  267.   @IF!OPTION STATUS_IN_RSC
  268.   {$I %__STATUSFILE%}
  269.     @ELSE
  270. procedure %_APPTYPE%.InitStatusLine;
  271. var R : TRect;
  272. begin
  273.   GetExtent(R);
  274.   R.A.Y:=R.B.Y-1;
  275.   StatusLine:=PHintStatusLine(ResFile.Get('STATUSLINE'));
  276.   if StatusLine<>nil then
  277.     begin
  278.       StatusLine^.ChangeBounds(R);
  279.       PHintStatusLine(StatusLine)^.NewHintList(PStringList(ResFile.Get('HINTS')));
  280.     end;
  281. end;
  282.  
  283.   @ENDIF (if!option)
  284. @ELSE  
  285. \ StatusLine is not defined - initialize THintStatusLine with standard keys
  286. procedure %_APPTYPE%.InitStatusLine;
  287. var R : TRect;
  288. begin
  289.   GetExtent(R);
  290.   R.A.Y:=R.B.Y-1;
  291.   StatusLine:=New(PHintStatusLine, Init(R,
  292.     NewStatusDef(0, $FFFF,
  293.       NewStatusKey('~Alt-X~ Exit', kbAltX, cmQuit,
  294. @IFOPTION TP6
  295.       NewStatusKey('', kbF10, cmMenu,
  296.       NewStatusKey('', kbAltF3, cmClose,
  297.       NewStatusKey('', kbF5, cmZoom,
  298.       NewStatusKey('', kbCtrlF5, cmResize,
  299.       NewStatusKey('', kbF6, cmNext,nil)))))),nil)));
  300. @ELSE
  301.       StdStatusKeys(nil)), nil)));
  302. @ENDIF
  303.   PHintStatusLine(StatusLine)^.NewHintList(PStringList(ResFile.Get('HINTS')));
  304. end;
  305.  
  306. @ENDIF (ifstatus)
  307. \ Generate MenuBar
  308. @IFMENUBAR
  309.   @PUSHFILE
  310.   @MENUBAR
  311.   @POPFILE
  312.   @IF!OPTION MENU_IN_RSC
  313. {$I %__MENUFILE%}
  314.     @ELSE
  315. procedure %_APPTYPE%.InitMenuBar;
  316. var R : TRect;
  317. begin
  318.   GetExtent(R);
  319.   R.B.Y:=R.A.Y+1;
  320.   MenuBar:=PMenuBar(ResFile.Get('MENUBAR'));
  321.   if MenuBar<>nil then MenuBar^.ChangeBounds(R);
  322. end;
  323.  
  324.   @ENDIF (if!option)
  325. @ENDIF (ifmenubar)
  326. @IF!EQUAL %__MAKEIDLE% 0
  327. procedure %_APPTYPE%.Idle;
  328. begin
  329.   @IFOPTION TP6
  330.   TApplication.Idle;
  331.   @ELSE
  332.   inherited Idle;
  333.   @ENDIF
  334.   @IFOPTION CLOCK
  335.   Clock^.Update;
  336.   @ENDIF
  337.   @IFOPTION HEAPVIEW
  338.   HeapView^.Update;
  339.   @ENDIF
  340.   @IFOPTION ScreenSaver
  341.   ScreenSaver^.Update;
  342.   @ENDIF
  343. end;
  344. @ENDIF
  345.  
  346. procedure %_APPTYPE%.AdditionalInit;
  347. var R : TRect;
  348. begin
  349. @IFOPTION ScreenSaver
  350.   GetExtent(R);
  351.   @ASKFOR __SSDelay '60' 'Screen saver delay in seconds'
  352.   @IFEQUAL %__SSDelay% ''
  353.   New(ScreenSaver,Init(R,60));
  354.   @ELSE
  355.   New(ScreenSaver,Init(R,%__SSDELAY%));
  356.   @ENDIF
  357.   Insert(ScreenSaver);
  358. @ENDIF
  359. @IFOPTION CLOCK
  360.   GetExtent(R);
  361.   R.A.X:=R.B.X-9;
  362.   R.B.Y:=R.A.Y+1;
  363.   Clock:=New(PClockView,Init(R));
  364.   Insert(Clock);
  365. @ENDIF
  366. @IFOPTION HEAPVIEW
  367.   GetExtent(R);
  368.   R.A.X:=R.B.X-7;
  369.   R.A.Y:=R.B.Y-1;
  370.   R.Move(-1,0);
  371.   HeapView:=New(PHeapView,Init(R));
  372.   Insert(HeapView);
  373. @ENDIF
  374. end;
  375.  
  376. @IFOPTION HELP
  377. procedure %_APPTYPE%.GetEvent;
  378. var
  379.   W: PWindow;
  380.   HFile: PHelpFile;
  381.   HelpStrm: PDosStream;
  382.   C : Word;
  383. const
  384.   HelpInUse: Boolean = False;
  385.  
  386. function CalcHelpName: PathStr;
  387. var
  388.   EXEName: PathStr;
  389.   Dir: DirStr;
  390.   Name: NameStr;
  391.   Ext: ExtStr;
  392. begin
  393.   EXEName := ParamStr(0);
  394.   FSplit(EXEName, Dir, Name, Ext);
  395.   if Dir[Length(Dir)] = '\' then Dec(Dir[0]);
  396.   CalcHelpName := FSearch('%_OUTFILE%.HLP', Dir);
  397. end;
  398.  
  399. begin
  400.   TApplication.GetEvent(Event);
  401. @IFOPTION ScreenSaver
  402.   ScreenSaver^.CheckEvent(Event);
  403. @ENDIF
  404.     case Event.What of
  405.       evCommand:
  406.        if (Event.Command = cmHelp) and not HelpInUse then
  407.          begin
  408.            HelpInUse := True;
  409.            HelpStrm := New(PDosStream, Init(CalcHelpName, stOpenRead));
  410.            HFile := New(PHelpFile, Init(HelpStrm));
  411.            if HelpStrm^.Status <> stOk then
  412.              begin
  413.                MessageBox('Could not open help file.', nil, mfError + mfOkButton);
  414.                Dispose(HFile, Done);
  415.              end
  416.                else
  417.              begin
  418.                W := New(PHelpWindow,Init(HFile, GetHelpCtx));
  419.                if ValidView(W) <> nil then
  420.                  begin
  421.            W^.HelpCTX:=hcHelpWindowActive;
  422.                    ExecView(W);
  423.                    Dispose(W, Done);
  424.                  end;
  425.                ClearEvent(Event);
  426.              end;
  427.            HelpInUse := False;
  428.          end;
  429.    end;
  430. end;
  431.  
  432. function %_APPTYPE%.GetPalette : PPalette;
  433. const
  434. @IFOPTION TP6
  435.   @IFOPTION COLOR
  436.   @NOCR   CNewColor =
  437.   @TPCOLORS 1 '             '
  438.   @ELSE
  439.   CNewColor = CColor + CHelpColor;
  440.   @ENDIF
  441.   CNewBlackWhite = CBlackWhite + CHelpBlackWhite;
  442.   CNewMonochrome = CMonochrome + CHelpMonochrome;
  443. @ELSE
  444.   @IFOPTION COLOR
  445.   @NOCR   CNewColor =
  446.   @TPCOLORS 2 '             '
  447.   @ELSE
  448.   CNewColor = CAppColor + CHelpColor;
  449.   @ENDIF
  450.   CNewBlackWhite = CAppBlackWhite + CHelpBlackWhite;
  451.   CNewMonochrome = CAppMonochrome + CHelpMonochrome;
  452. @ENDIF  
  453.   P: array[apColor..apMonochrome] of string[Length(CNewColor)] =
  454.     (CNewColor, CNewBlackWhite, CNewMonochrome);
  455. begin
  456.   GetPalette := @P[AppPalette];
  457. end;
  458.  
  459. @ELSE (ifoption help)
  460.   @IFOPTION ScreenSaver
  461. procedure %_APPTYPE%.GetEvent;
  462. begin
  463.     @IFOPTION TP6
  464.   TApplication.GetEvent(Event);
  465.     @ELSE
  466.   inherited GetEvent(Event);
  467.     @ENDIF
  468.   ScreenSaver^.CheckEvent(Event);
  469. end;
  470.  
  471.   @ENDIF
  472.   @IFOPTION COLOR
  473. function %_APPTYPE%.GetPalette : PPalette;
  474. const
  475.     @IFOPTION TP6
  476.       @IFOPTION COLOR
  477.       @NOCR   CNewColor =
  478.       @TPCOLORS 1 '             '
  479.       @ELSE
  480.   CNewColor = CColor + CHelpColor;
  481.       @ENDIF
  482.   CNewBlackWhite = CBlackWhite + CHelpBlackWhite;
  483.   CNewMonochrome = CMonochrome + CHelpMonochrome;
  484.     @ELSE
  485.       @IFOPTION COLOR
  486.       @NOCR   CNewColor =
  487.       @TPCOLORS 2 '             '
  488.       @ELSE
  489.   CNewColor = CAppColor + CHelpColor;
  490.       @ENDIF
  491.   CNewBlackWhite = CAppBlackWhite + CHelpBlackWhite;
  492.   CNewMonochrome = CAppMonochrome + CHelpMonochrome;
  493.     @ENDIF  
  494.   P: array[apColor..apMonochrome] of string[Length(CNewColor)] =
  495.     (CNewColor, CNewBlackWhite, CNewMonochrome);
  496. begin
  497.   GetPalette := @P[AppPalette];
  498. end;
  499.  
  500.   @ENDIF
  501. @ENDIF (ifoption help)
  502. @SNIPPETS LIKE MTD_*
  503. @IF!SNIPPET MTD_HAND
  504. procedure %_APPTYPE%.HandleEvent; 
  505. begin
  506. @IFOPTION TP6
  507.   TApplication.HandleEvent(Event);
  508. @ELSE  
  509.   inherited HandleEvent(Event);
  510. @ENDIF  
  511.   if Event.What and evMessage <> 0 then
  512.     begin
  513.       case Event.Command of
  514. @ASSIGN __SECTION 'CALLING'
  515. @FORCALLEDITEMS
  516.   @IFEQUAL %_APPITEMTYPE% 'DLG'
  517.           %_PADR(_APPITEMCOMMAND,25,' ')% : Call%_DLGFUNC(_DLGNUM)%;
  518.   @ENDIF
  519.   @IFEQUAL %_APPITEMTYPE% 'MTD'
  520.     @NOCR           %_PADR(_APPITEMCOMMAND,25,' ')% : 
  521.     @SNIPPET %_APPITEMFILE%
  522.   @ENDIF
  523. @ENDFOR
  524. @ASSIGN __SECTION 'MAIN'
  525.       else Exit;
  526.       end;
  527.       ClearEvent(Event); 
  528.     end;
  529. end;
  530.  
  531. @ENDIF
  532. @SNIPPETS LIKE USR_*
  533.  
  534. {$I %_SUBSTR(_OUTFILE,1,6)%_K.INC}
  535.  
  536. \ Dialog includes
  537. @FORALLDIALOGS
  538. {$I %__DLGFILE[_DLGNUM]%}
  539. @ENDFOR
  540.  
  541. @IFOPTION DLG_IN_RSC
  542. {$I %_SUBSTR(_OUTFILE,1,6)%_R.INC}
  543. @ENDIF
  544. @PUSHFILE 5
  545. end;
  546.  
  547. @POPFILE
  548. @FORCALLEDDIALOGS
  549.  
  550. @IFSNIPPET %_CALLINGSNIPPET%
  551.   @SNIPPET %_CALLINGSNIPPET%
  552. @ELSE
  553. procedure %_APPTYPE%.Call%_DLGFUNC(_DLGNUM)%;
  554. var Result : Word;
  555. @IF!EQUAL %_DLGDATAFLAG(_DLGNUM)% 0
  556.     D      : T%_DLGFUNC(_DLGNUM)%Data;
  557. @ENDIF
  558. begin
  559. @IFEQUAL %_DLGDATAFLAG(_DLGNUM)% 0
  560.   Result:=%_DLGFUNC(_DLGNUM)%;
  561.   @ELSE
  562.   Result:=%_DLGFUNC(_DLGNUM)%(D,False);
  563. @ENDIF
  564. end;
  565. @ENDIF  
  566. @ENDFOR
  567.  
  568. @FILE 5
  569. @IFMENUBAR
  570.   @IFOPTION MENU_IN_RSC
  571. {$I %__MENUFILE%}
  572.   @ENDIF (ifoption)
  573. @ENDIF (ifmenubar)
  574. @IFSTATUS
  575.   @IFOPTION STATUS_IN_RSC
  576. {$I %__STATUSFILE%}
  577.   @ENDIF (ifoption)
  578. @ENDIF (ifmenubar)
  579. @IFOPTION DLG_IN_RSC
  580.  
  581.   @FORALLDIALOGS
  582.     @IFEQUAL %__DLGTYPE[_DLGNUM]% 'TDialog'
  583. {$I %__DLGFILE[_DLGNUM]%}
  584.     @ENDIF
  585.   @ENDFOR
  586. {$I %_SUBSTR(_OUTFILE,1,6)%_R.INC}
  587. @ENDIF
  588.  
  589. begin
  590.   Writeln('Running resource maker...');
  591.   RegisterType(RStrListMaker);
  592.   RegisterType(RMenuBar);
  593.   RegisterType(RHintStatusLine);
  594. @IFOPTION DLG_IN_RSC
  595.   RegisterDialogs;
  596.   RegisterSupply3;
  597.   RegisterEditors;
  598.   RegisterViews;
  599. @ENDIF
  600.   MenuBar:=nil;
  601.   StatusLine:=nil;
  602.   ResFile.Init(New(PBufStream,Init('%_SUBSTR(_OUTFILE,1,6)%_R.RSC',stCreate,1024)));
  603. @IF!EQUAL %__HINTCOUNTER% 0
  604.   S.Init(%__HINTCOUNTER%*AverageHintSize,%__HINTCOUNTER%);
  605.   DefineHints(S);
  606. @ENDIF  
  607. @IFMENUBAR
  608. @IFOPTION MENU_IN_RSC
  609.   DefineMenuBar;
  610.   ResFile.Put(MenuBar,'MENUBAR');
  611. @ENDIF (ifoption)
  612. @ENDIF (ifmenubar)
  613. @IFSTATUS
  614.   @IFOPTION STATUS_IN_RSC
  615.   DefineStatusLine;
  616.   ResFile.Put(StatusLine,'STATUSLINE');
  617.   @ENDIF (ifoption)
  618. @ENDIF (ifstatus)
  619. @IF!EQUAL %__HINTCOUNTER% 0
  620.   ResFile.Put(@S,'HINTS');
  621.   S.Done;
  622. @ENDIF
  623. @IFOPTION DLG_IN_RSC
  624.   @FORALLDIALOGS
  625.     @IFEQUAL %__DLGTYPE[_DLGNUM]% 'TDialog'
  626.   Define%_DLGFUNC(_DLGNUM)%;
  627.     @ENDIF
  628.   @ENDFOR
  629. @ENDIF
  630. @IFOPTION STR_IN_RSC
  631.   ResFile.Put(MakeStringList('%_SUBSTR(_OUTFILE,1,6)%_T.TXT'),'TEXTS');
  632. @ENDIF
  633.   if MenuBar<>nil then Dispose(MenuBar,Done);
  634.   if StatusLine<>nil then Dispose(StatusLine,Done);
  635.   if ResFile.Stream^.Status<>stOk then Writeln('Error #',ResFile.Stream^.Status,' while creating resource file.');
  636.   ResFile.Done;
  637.   Writeln('Resource done.');
  638. end.  
  639. \ Close resource maker program file
  640. @CLOSEFILE 5
  641. @FILE 2
  642.  
  643. procedure InitResource;
  644. var D : DirStr;
  645.     N : NameStr;
  646.     E : ExtStr;
  647. begin
  648.   FSplit(ParamStr(0),D,N,E);
  649.   RegisterType(RHintStatusLine);
  650.   RegisterType(RMenuBar);
  651.   RegisterType(RStringList);
  652. @IFOPTION DLG_IN_RSC
  653.   RegisterDialogs;
  654.   RegisterSupply3;
  655.   RegisterEditors;
  656.   RegisterViews;
  657. @ENDIF  
  658. @IFOPTION HELP
  659.   RegisterHelpFile;
  660. @ENDIF    
  661.   ResFile.Init(New(PBufStream,Init(D+'%_SUBSTR(_OUTFILE,1,6)%_R.RSC',stOpenRead,1024)));
  662.   if ResFile.Stream^.Status<>stOk then
  663.     begin
  664.       Writeln('Error loading resource file...');
  665.       Halt(1);
  666.     end;
  667. @IFOPTION STR_IN_RSC
  668.   RscStringList:=PStringList(ResFile.Get('TEXTS'));
  669. @ENDIF
  670. end;
  671.  
  672. var AppInstance : %_APPTYPE%;
  673.  
  674. begin
  675.   InitResource;
  676.   AppInstance.Init;
  677.   AppInstance.AdditionalInit;
  678.   AppInstance.Run;
  679.   AppInstance.Done;
  680.   ResFile.Done;
  681. end.
  682.  
  683. { ************ Generated by TVGen 3.0 ************** }
  684. \ Close main program file
  685. @CLOSEFILE 2
  686. @FILE 3
  687.  
  688. implementation
  689.  
  690. end.
  691.  
  692. { ************ Generated by TVGen 3.0 ************** }
  693. @DEFINEFILE 3 %_SUBSTR(_OUTFILE,1,6)%_H.PAS
  694. @FILE 3
  695. unit %_SUBSTR(_OUTFILE,1,6)%_H;
  696.  
  697. interface
  698.  
  699. const
  700. @HELPCONSTANTS  %_PADR([NAME],60,' ')%  =  [VALUE];
  701.  
  702. implementation
  703.  
  704. end.
  705.  
  706. { ************ Generated by TVGen 3.0 ************** }
  707. \ Close Help Constants Unit file and open file for Command Constants
  708. @DEFINEFILE 3 %_SUBSTR(_OUTFILE,1,6)%_C.PAS
  709. @FILE 3
  710. unit %_SUBSTR(_OUTFILE,1,6)%_C;
  711.  
  712. interface
  713.  
  714. const
  715.  
  716. @CMDCONSTANTS      %_PADR([NAME],50,' ')%  =  [VALUE];
  717.  
  718. implementation
  719.  
  720. end.
  721.  
  722. { ************ Generated by TVGen 3.0 ************** }
  723. \ Close Command Constants Unit file
  724. @CLOSEFILE 3
  725. \ Close help text file
  726. @IFOPTION HELP
  727.   @CLOSEFILE 4
  728. @ENDIF
  729. @IFOPTION STR_IN_RSC
  730.   @DEFINEFILE 3 %_SUBSTR(_OUTFILE,1,6)%_T.TXT
  731.   @FILE 3
  732.   @RESOURCESTRINGS
  733.   @CLOSEFILE 3
  734. @ENDIF  
  735. \ Create batch file
  736. @DEFINEFILE 3 %_OUTFILE%.BAT
  737. @FILE 3
  738. TPC /M %_SUBSTR(_OUTFILE,1,6)%_R
  739. %_SUBSTR(_OUTFILE,1,6)%_R
  740. TPC /M %_OUTFILE%
  741. @IFOPTION HELP
  742. TVHC %_OUTFILE%.TXT %_OUTFILE%.HLP %_SUBSTR(_OUTFILE,1,6)%_X.PAS
  743. @ENDIF
  744. @IFOPTION RUN_FROM_BAT
  745. pause
  746. %_OUTFILE%.EXE
  747. @ENDIF
  748. @CLOSEFILE 3
  749. @IFOPTION DLG_IN_RSC
  750.   @CLOSEFILE 6
  751. @ENDIF