| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236 |
- IMPLEMENTATION MODULE GenEdt;
- (*
- * ModBase
- * Release 3.0
- * (c) Copyright 1986 - 1991 PMI
- Copyright 1988 - 1991 John McMonagle
- * P.O. Box 8402
- * Green Bay Wi 53308
- * All Rights Reserved
- * by Ed Ross
- *)
- FROM DataTypes IMPORT DataElmtRec,IndexElmtRec;
- FROM HandleIO IMPORT CreateFile,CloseHandle;
- FROM StringIO IMPORT ErrorMessage,WriteStr,WriteEol,outp;
- FROM StrConv IMPORT CardinalToStr,StrToCardinal;
- FROM StrEdit IMPORT Append,CrunchBlanks,SetLength,CAPstr,LowerStr;
- FROM PosUtils IMPORT Pos, Equal, Present;
- FROM GenLists IMPORT GenList,GetElmtAdr,ListLength;
- FROM Str IMPORT Copy;
- (* generate code for database acess (modbase stuff ) *)
- VAR
- FH : CARDINAL; (* file handle for def file *)
- Str : ARRAY[0..80] OF CHAR;
- Len : CARDINAL;
- LnCnt : CARDINAL;
- B : BOOLEAN;
- PROCEDURE GenEdtFile(FileName : ARRAY OF CHAR; FldList,IdxList : GenList);
- VAR
- FN : ARRAY[0..18] OF CHAR;
- IdxFld : ARRAY[0..7] OF CHAR;
- FH : CARDINAL;
- Cnt : CARDINAL;
- Size,Code : CARDINAL;
- FldPnt : POINTER TO DataElmtRec;
- IdxPnt : POINTER TO IndexElmtRec;
- EM : ErrorMessage;
-
- BEGIN
- Copy(FN , FileName);
- Append(FN,'.Edt'); (* make edt file file name *)
- (* FH := outp; *)
- EM := CreateFile(FH,FN);
- WriteEol(FH,'');
- (* gen the screen name *)
- WriteEol(FH,'===================================================');
- WriteEol(FH,':TopMenu');
- WriteEol(FH,' FrameBelow : FileMenu');
- WriteEol(FH,'Fields :{ ');
- WriteEol(FH,"(F) '' GoTo FileMenu");
- WriteEol(FH,"(E) '' GoTo EditMenu");
- WriteEol(FH,"(X) '' GoTo Exit");
- WriteEol(FH,"(H) '' GoTo Help");
- WriteEol(FH,'}');
- WriteEol(FH,'Window :{ ');
- WriteEol(FH,'Position:( 1,1,80,3)');
- WriteEol(FH,'}');
- WriteEol(FH,'--------------------------------------------------');
- WriteEol(FH,'');
- WriteEol(FH,' #File # #Edit # #eXit # #Help#');
- WriteEol(FH,'');
-
- (* Generate the file pulldown menu *)
-
- WriteEol(FH,'===================================================');
- WriteEol(FH,':FileMenu');
- WriteEol(FH,' ParentFrame : TopMenu');
- WriteEol(FH,' FrameLeft : EditMenu');
- WriteEol(FH,' FrameRight : EditMenu');
- WriteEol(FH,'Fields :{ ');
- (* *)
- (* Add a menu item for each indexed file *)
- (* *)
- LnCnt := 4;
- FOR Cnt := 1 TO ListLength(IdxList) DO (* create index for each indexed item*)
- GetElmtAdr(IdxList,Cnt,IdxPnt,Size,Code); (* get each field *)
- INC(LnCnt);
- CrunchBlanks(IdxPnt^.EdtName);
- WriteStr(FH,' (');
- WriteStr(FH,IdxPnt^.HighLight);
- WriteStr(FH,") '' GoTo ");
- WriteEol(FH,IdxPnt^.FldName);
- END;
- (* put in the standard menu items *)
- WriteEol(FH," (N) '' GoTo Next");
- WriteEol(FH," (P) '' GoTo Prev");
- WriteEol(FH," (F) '' GoTo First");
- WriteEol(FH," (L) '' GoTo Last");
- WriteEol(FH," (A) '' GoTo Add");
- WriteEol(FH,' } ');
- (* *)
- (* Put the window statment in *)
- (* *)
- WriteEol(FH,'Window:{');
- CardinalToStr(LnCnt+6,2,Str); (* this is how long the window should be*)
- WriteStr(FH ,' Position:( 2,3,25,');
- WriteStr(FH,Str);
- WriteEol(FH, ')');
- WriteEol(FH,'}');
- WriteEol(FH,'');
- WriteEol(FH,'');
- WriteEol(FH,'----------------------------------------------------');
- WriteEol(FH,'');
- FOR Cnt := 1 TO ListLength(IdxList) DO (* create index for each indexed item*)
- GetElmtAdr(IdxList,Cnt,IdxPnt,Size,Code); (* get each field *)
- WriteStr(FH,' # search by ');
- WriteStr(FH,IdxPnt^.EdtName);
- WriteEol(FH,' #');
- END;
- (* add standard menu items *)
- WriteEol(FH,' # Next # ');
- WriteEol(FH,' # Prev # ');
- WriteEol(FH,' # First # ');
- WriteEol(FH,' # Last # ');
- WriteEol(FH,' # Add # ');
-
- WriteEol(FH,'');
- WriteEol(FH,'');
-
- (* *)
- (* Generate the edit screen with *)
- (* update and delete menu items *)
- (* *)
- WriteEol(FH,'');
- WriteEol(FH,'====================================================');
- WriteEol(FH,':EditMenu');
- WriteEol(FH,' ParentFrame : TopMenu');
- WriteEol(FH,' FrameLeft : FileMenu');
- WriteEol(FH,' FrameRight : FileMenu');
- WriteEol(FH,'Fields:{');
- WriteEol(FH," (U) '' GoTo UpDate");
- WriteEol(FH," (D) '' GoTo Delete");
- WriteEol(FH,'}');
- WriteEol(FH,'Window:{');
- WriteEol(FH,' Position:(15,3,30,9)');
- WriteEol(FH,' }');
- WriteEol(FH,'------------------------------------------------------');
- WriteEol(FH,'');
- WriteEol(FH,' # Update #');
- WriteEol(FH,' # Delete #');
- WriteEol(FH,'');
-
- (* *)
- (* Generate a screen with all of the database*)
- (* fields for testing *)
- WriteEol(FH,'===================================================');
- WriteStr(FH,':');
- WriteEol(FH,FileName);
- WriteEol(FH,'Fields :{ ');
- (* *)
- (* Add a screen field for each database field *)
- (* *)
- LnCnt := 4;
- FOR Cnt := 1 TO ListLength(FldList) DO (* create index for each indexed item*)
- GetElmtAdr(FldList,Cnt,FldPnt,Size,Code); (* get each field *)
- CrunchBlanks(FldPnt^.Name);
- CAPstr(FldPnt^.Name);
- WriteStr(FH,"() '");
- CAPstr(FldPnt^.Name);
- WriteStr(FH,FldPnt^.Name);
- WriteStr(FH,"'");
- IF FldPnt^.Type = 'C'
- THEN WriteEol(FH,' String')
- ELSIF FldPnt^.Type = 'N'
- THEN
- IF FldPnt^.Len > 0
- THEN
- WriteEol(FH,' Real [0..99999]')
- ELSE
- WriteEol(FH,' INTEGER [0..9999]');
- END;
- ELSIF FldPnt^.Type = 'M' (* memo *)
- THEN WriteEol(FH, 'Editor; 2 lines');
- ELSIF FldPnt^.Type = 'D' (* date type *)
- THEN WriteEol(FH, ' Date');
- ELSE (* don't know what to do with choice fields Type 'L'*)
- WriteEol(FH,' String');
- END; (* end of if elsif *)
- END; (* end of for each field *)
- WriteEol(FH,'}'); (* end of field section *)
-
-
- WriteEol(FH,'');
- WriteEol(FH,'');
- WriteEol(FH,'Window :{');
- WriteEol(FH,'Position:(1,4,80,24)');
- WriteEol(FH,'}');
-
- WriteEol(FH,'-----------------------------------------------------');
-
-
- (* now paint the screen with each field *)
-
-
-
- WriteEol(FH,'');
- FOR Cnt := 1 TO ListLength(FldList) DO (* create index for each indexed item*)
- GetElmtAdr(FldList,Cnt,FldPnt,Size,Code); (* get each field *)
- IF FldPnt^.Type = 'D'
- THEN FldPnt^.Len := 8;
- END;
- WriteStr(FH,' ');
- WriteStr(FH, FldPnt^.Name);
- Str :=
- ' # ';
- SetLength(Str,FldPnt^.Len+4);
- WriteStr(FH,Str);
- WriteEol(FH,'#');
- END;
-
-
-
- EM := CloseHandle(FH);
-
- END GenEdtFile;
- END GenEdt.
|