home *** CD-ROM | disk | FTP | other *** search
-
- MODULE ODrvDemo;
- (*---------------------------------------------------------------------*)
- (* O C C U R - D R I V E R - D E M O *)
- (* for M 2 P R O L I B *)
- (* Copyright (C) 1987 Bühlmann Computer Software CH-8636 WALD *)
- (* -- All Rights Reserved -- *)
- (*---------------------------------------------------------------------*)
- (* Author: X. Bühlmann *)
- (* *)
- (* Version 1.0 Date: 05/02/88 *)
- (* Version 2.0 Date: 10/07/88 *)
- (* Version 2.1 Date: 28/09/88 Angepasst auf M2Prolib V3.03 *)
- (*---------------------------------------------------------------------*)
- FROM SYSTEM IMPORT ADR, SIZE;
- IMPORT Ascii, Screen, ByteString, HelpDriver;
- FROM KeyDriver IMPORT Further, eDirection, FKeys, DirecOnOff;
- FROM OccurDriver IMPORT OccurColor, DefineOccurField, CreateOccur,
- CloseOccurMask;
- FROM OccurMask IMPORT userFunc, bFieldNum, eLineMode, SetEditMode,
- CurLine, LastLine, FieldOK, SetField, GetField, LineOK, eEditMode,
- rFieldDescrip, rOccurDescrip, ActivateOccur, DefineField,
- TransferLines, InsertLine, EditFields, RestoreFields, EndOccur,
- eInputMode, InputMode, DisplayInputMode;
- FROM NumConv IMPORT CardToStr, StrToCard;
- FROM String IMPORT Move;
- (*[-CSYS
- FROM WinSupport IMPORT StatuslineColor;
- ]*)
- FROM SpecSupport IMPORT cOccurFields, MonitorType, eMonitorType;
- FROM SystemDef IMPORT eSwitch, eColor, rColor;
- FROM Windows IMPORT eActivate, rWinDescrip, tWindow, ActivateWindow,
- ActiveWindow, CreateWindow, ChangeWindowPos, DeleteWindow,
- ResetWindows;
- CONST
- cArrayLen = 25;
- TYPE
- aText = ARRAY [0..80] OF CHAR;
- rData = ARRAY [1..cOccurFields] OF aText;
- VAR
- PosY : INTEGER;
- Data : ARRAY [1..cArrayLen] OF rData;
- Ind, ActualPage, CursorSave, OccurFields, OccurLines : CARDINAL;
- editMode : BOOLEAN;
- (*
- *)
- PROCEDURE Funktion(w : eDirection; VAR W : eDirection): CARDINAL;
- VAR
- Ch : CARDINAL;
- BEGIN
- Ch := 0;
- W := not;
- CASE w OF
- | F1 :
- IF HelpDriver.CreateHelp('Ocr-HELP.HLP',1) THEN
- END;
- ELSE
- Ch := 0;
- W := w;
- END;
- RETURN Ch;
- END Funktion;
- PROCEDURE CharOK(fieldNum : bFieldNum; VAR ch : CHAR): BOOLEAN;
- VAR
- Flag : BOOLEAN;
- BEGIN
- RETURN TRUE;
- END CharOK;
- (*---------------------------------------------------------------------*)
- PROCEDURE fieldOK(fieldNum : bFieldNum; VAR field : ARRAY OF CHAR):
- BOOLEAN;
- VAR
- C : CARDINAL;
- BEGIN
- RETURN TRUE;
- END fieldOK;
- (*---------------------------------------------------------------------*)
- PROCEDURE lineOK(lineNum : CARDINAL): BOOLEAN;
- BEGIN
- RETURN TRUE;
- END lineOK;
- (*---------------------------------------------------------------------*)
- PROCEDURE GetComment(fieldNum : bFieldNum; VAR comment : ARRAY OF
- CHAR);
- BEGIN
- Move('│ F1 Help │', comment);
- END GetComment;
- (*---------------------------------------------------------------------*)
- PROCEDURE InsertProc(LineNum, CurLine : CARDINAL);
- VAR
- Ind : CARDINAL;
- BEGIN
- InsertLine(TRUE, CurLine, Data[LineNum][1]);
- FOR Ind := 2 TO OccurFields DO
- InsertLine(FALSE, CurLine, Data[LineNum][Ind]);
- END;
- END InsertProc;
- PROCEDURE TransferProc(LineNum, CurLine : CARDINAL);
- VAR
- Ind : CARDINAL;
- BEGIN
- TransferLines(TRUE, LineNum, CurLine, Data[LineNum][1]);
- FOR Ind := 2 TO OccurFields DO
- TransferLines(FALSE, LineNum, CurLine, Data[LineNum][Ind]);
- END;
- END TransferProc;
- PROCEDURE line(LineMode : eLineMode; CurLine, LineNum, PageNum :
- CARDINAL): BOOLEAN;
- VAR
- Ind, firstLine, lastLine : CARDINAL;
- BEGIN
- IF LineNum>cArrayLen THEN
- RETURN FALSE;
- END;
- CASE LineMode OF
- | nextLine, prevLine :
- TransferProc(LineNum, CurLine);
- RETURN TRUE;
- | prevPage :
- firstLine := (PageNum-1)*OccurLines;
- lastLine := OccurLines;
- IF (LastLine DIV OccurLines)<PageNum THEN
- lastLine := LastLine MOD OccurLines;
- END;
- FOR Ind := 1 TO lastLine DO
- InsertProc(Ind+firstLine, Ind);
- END;
- TransferProc(LineNum, CurLine);
- RETURN TRUE;
- | nextPage :
- firstLine := (PageNum-1)*OccurLines;
- lastLine := OccurLines;
- IF (LastLine DIV OccurLines)<PageNum THEN
- lastLine := LastLine MOD OccurLines;
- END;
- FOR Ind := 1 TO lastLine DO
- InsertProc(Ind+firstLine, Ind);
- END;
- TransferProc(LineNum, CurLine);
- RETURN TRUE;
- | newPage :
- INC(LastLine);
- ByteString.FillBytes(ADR(Data[LineNum]), SIZE(Data[LineNum]), 0C);
- TransferProc(LineNum, CurLine);
- RETURN TRUE;
- | insLineAbove :
- INC(LastLine);
- IF LineNum<LastLine THEN
- FOR Ind := LastLine TO LineNum+1 BY -1 DO
- Data[Ind] := Data[Ind-1];
- END;
- END;
- ByteString.FillBytes(ADR(Data[LineNum]), SIZE(Data[LineNum]), 0C);
- TransferProc(LineNum, CurLine);
- RETURN TRUE;
- | insLineBelow :
- INC(LastLine);
- IF LineNum<LastLine THEN
- FOR Ind := LastLine TO LineNum+1 BY -1 DO
- Data[Ind] := Data[Ind-1];
- END;
- END;
- ByteString.FillBytes(ADR(Data[LineNum]), SIZE(Data[LineNum]), 0C);
- TransferProc(LineNum, CurLine);
- RETURN TRUE;
- | delLine :
- FOR Ind := LineNum+1 TO LastLine DO
- Data[Ind-1] := Data[Ind];
- END;
- DEC(LastLine);
- RETURN TRUE;
- | updateCurPage :
- firstLine := (PageNum-1)*OccurLines;
- lastLine := OccurLines;
- IF (LastLine DIV OccurLines)<PageNum THEN
- lastLine := LastLine MOD OccurLines;
- END;
- FOR Ind := 1 TO lastLine DO
- InsertProc(Ind+firstLine, Ind);
- END;
- TransferProc(LineNum, CurLine);
- RETURN TRUE;
- ELSE
- END;
- RETURN FALSE;
- END line;
- PROCEDURE displayInputMode();
- BEGIN
- IF InputMode=overtype THEN
- Screen.SetCursorType(CursorSave);
- ELSE
- Screen.SetCursorType(0DH);
- END;
- END displayInputMode;
- (*-----------------------------------------------------------------------*)
- PROCEDURE ActualLine(line : CARDINAL);
- VAR
- LinePos : ARRAY [0..10] OF CHAR;
- BEGIN
- Screen.SetCursor(26, 3);
- CardToStr(line, 10, LinePos);
- Screen.ScrPutString(' ');
- Screen.SetCursor(26, 3);
- Screen.ScrPutString(LinePos);
- END ActualLine;
- PROCEDURE Colors();
- BEGIN
- CASE MonitorType OF
- | color :
- (*[-CSYS
- StatuslineColor(black, green);
- ]*)
- OccurColor(black, white, ltWhite, white, ltWhite, blue);
- | mono :
- (*[-CSYS
- StatuslineColor(black, white);
- ]*)
- OccurColor(white, black, ltWhite, black, black, white);
- | spec :
- (*[-CSYS
- StatuslineColor(black, white);
- ]*)
- OccurColor(white, black, ltWhite, black, black, white);
- END;
- END Colors;
- PROCEDURE Copyright();
- BEGIN
- Screen.ClearScrBound();
- Screen.ScrWriteLn();
- Screen.ScrPutString(
- ' O C C U R - D R I V E R - D E M O Version 2.1 ');
- Screen.ScrWriteLn();
- Screen.ScrPutString(
- ' 1 9 8 8 ');
- Screen.ScrWriteLn();
- Screen.ScrWriteLn();
- Screen.ScrPutString(
- ' Copyright by ');
- Screen.ScrWriteLn();
- Screen.ScrPutString(
- ' (c) Bühlmann Computer Software ');
- Screen.ScrWriteLn();
- Screen.ScrPutString(
- ' CH-8636 Wald ');
- Screen.ScrWriteLn();
- END Copyright;
- BEGIN
- Copyright();
- DisplayInputMode := displayInputMode;
- CursorSave := Screen.CursorType();
- CurLine := ActualLine;
- ByteString.FillBytes(ADR(Data), SIZE(Data), 0C);
- editMode := TRUE;
- LastLine := 1;
- ActualPage := 1;
- DirecOnOff := TRUE;
- FKeys := Funktion;
- LineOK := lineOK;
- FieldOK := fieldOK;
- Colors();
- (**)
- IF CreateOccur('DEMO.OCR',
- 1,OccurFields,OccurLines) & (OccurFields>0) & (OccurLines>1) THEN
- FOR Ind := 1 TO OccurFields DO
- DefineOccurField(80);
- END;
- (**)
- TransferProc(1, 1);
- EditFields(userFunc, CharOK, line, GetComment);
- CloseOccurMask();
- ELSE
- END;
- END ODrvDemo.