| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156 |
- MODULE ScrnCompile;
- (*
- * REPERTOIRE
- * Release 1.6
- * By Charles Bradford and Cole Brecheen
- * (c) Copyright 1985-1990 PMI
- * Green Bay, WI
- * All rights reserved
- * (414) 468-6040
- *
- *)
- IMPORT BigSets;
- IMPORT ControlUtils;
- IMPORT DspFiles;
- IMPORT EnvironUtils;
- IMPORT ErrorManager;
- IMPORT HandleIO;
- IMPORT FrameManager;
- IMPORT FramePainter;
- IMPORT GenLists;
- IMPORT InputManager;
- IMPORT KbdInput;
- IMPORT ListUtils;
- IMPORT LowLevel;
- IMPORT M2Strings;
- IMPORT MakeFrame;
- IMPORT MsColors;
- IMPORT NdxBones;
- IMPORT NdxFiles;
- IMPORT NdxTypes;
- IMPORT NdxUtils;
- IMPORT PosUtils;
- IMPORT PrtFrame;
- IMPORT ScrnTypes;
- IMPORT ScrnUtl1;
- IMPORT ScrnUtl2;
- IMPORT StrConv;
- IMPORT StrEdit;
- IMPORT StringIO;
- IMPORT SYSTEM;
- IMPORT UserOps;
- IMPORT VEditor;
- IMPORT VWindows;
- IMPORT InitCompilerMods;
- TYPE
- ASyntaxChoice = (unknown, old, new);
- VAR
- LastFileName, LastFrameName, EdtFileName,
- DspFileName: ARRAY [0..80] OF CHAR;
- TopMenuList, FileList, CurrentFrameList, OutFrameList:
- GenLists.GenList;
- ErrStr: ARRAY [0..255] OF CHAR;
- FrameName, StartFrame, EndingFrame, NextFrame:
- ScrnTypes.AFrameName;
- ScrnCompDsp, CurrentDspFile: ScrnTypes.DisplayFile;
- ParamsRead, SavedCursorHeight, FileListLine, BadLine:
- CARDINAL;
- syntax : ASyntaxChoice;
- (*Determines the syntax rule in effect for the current .EDT
- file.*)
- CmdLineVersion, AtEndOfList, ListChanged: BOOLEAN;
- MovementKeys: KbdInput.KeyNumSet;
- SelChar: CHAR;
- (* These two new forms of the Input procedure will eventually be
- moved to ControlUtils. *)
- PROCEDURE Input2( TheFile: ScrnTypes.DisplayFile; VAR
- FrameName : ScrnTypes.AFrameName );
- VAR
- TmpFrame: ScrnTypes.DisplayFrame;
- BEGIN
- ScrnTypes.InitDisplayFrame( TmpFrame, VWindows.CurrentWindow );
- DspFiles.ReadFrame( TheFile, TmpFrame,
- FrameName );
- FramePainter.ShowDisplayFrame( TmpFrame, 0, 0, 0, 0 );
- InputManager.ControlFrame( TmpFrame, 1, '', FALSE, FrameName );
- ScrnUtl2.CloseDisplayFrame( TmpFrame );
- END Input2;
- PROCEDURE InputConst2( TheFile: ScrnTypes.DisplayFile;
- FrameName : ARRAY OF CHAR );
- VAR
- TmpName: ScrnTypes.AFrameName;
- TmpFrame: ScrnTypes.DisplayFrame;
- BEGIN
- ScrnTypes.InitDisplayFrame( TmpFrame, VWindows.CurrentWindow );
- M2Strings.Assign( FrameName, TmpName );
- DspFiles.ReadFrame( TheFile, TmpFrame,
- TmpName );
- FramePainter.ShowDisplayFrame( TmpFrame, 0, 0, 0, 0 );
- InputManager.ControlFrame( TmpFrame, 0, '', FALSE, TmpName );
- ScrnUtl2.CloseDisplayFrame( TmpFrame );
- END InputConst2;
- PROCEDURE UpdateStatus( StatusFrame: ScrnTypes.DisplayFrame;
- FieldName, NewStatus: ARRAY OF CHAR );
- VAR
- width, TmpFieldNum: CARDINAL;
- TmpStr: ARRAY [0..79] OF CHAR;
- BEGIN
- TmpFieldNum := ScrnUtl1.FieldNum(StatusFrame, FieldName );
- width := ScrnUtl1.FieldWidth( StatusFrame, TmpFieldNum );
- StrEdit.AssignStr( NewStatus, TmpStr );
- StrEdit.Center( TmpStr, width );
- ControlUtils.ChangeField( StatusFrame, TmpStr, FieldName, TRUE );
- FramePainter.RedrawField( StatusFrame, TmpFieldNum, FALSE );
- END UpdateStatus;
- PROCEDURE CommandLineSwitch(): BOOLEAN;
- VAR
- lngth: CARDINAL;
- ParamStr: ARRAY [0..127] OF CHAR;
- BEGIN
- EnvironUtils.GetProgParams( ParamStr );
- StrEdit.CrunchBlanks( ParamStr );
- lngth := M2Strings.Length( ParamStr );
- IF lngth < 2 THEN
- RETURN FALSE;
- END;
- IF (ParamStr[ lngth - 2 ] = '/') AND
- (CAP(ParamStr[ lngth - 1 ]) = 'C') THEN
- RETURN TRUE;
- ELSE
- RETURN FALSE;
- END;
- END CommandLineSwitch;
- PROCEDURE AddExtension( VAR FileName: ARRAY OF CHAR;
- Extension: ARRAY OF CHAR );
- BEGIN
- IF NOT PosUtils.Present( ".", FileName) THEN
- StrEdit.Append( FileName, Extension );
- END;
- END AddExtension;
- PROCEDURE AddMovementKeys( VAR TheKeySet: KbdInput.KeyNumSet );
- BEGIN
- BigSets.SetUnion( TheKeySet, MovementKeys, TheKeySet );
- END AddMovementKeys;
- PROCEDURE RemoveMovementKeys( VAR TheKeySet: KbdInput.KeyNumSet );
- BEGIN
- BigSets.SetDifference( TheKeySet, MovementKeys, TheKeySet );
- END RemoveMovementKeys;
- PROCEDURE CallEditor( VAR TheList: GenLists.GenList;
- VAR ControlRec: VEditor.AnEdControlRec );
- VAR
- TmpFrame: ScrnTypes.DisplayFrame;
- BEGIN
- ScrnTypes.InitDisplayFrame( TmpFrame, VWindows.CurrentWindow );
- ControlUtils.AddEditorField( TmpFrame, TheList, ControlRec );
- FrameManager.FrameActivated( TmpFrame );
- UserOps.DoPrompting := FALSE;
- RemoveMovementKeys( UserOps.FieldExitKeySet );
- VEditor.TheEditor( TheList, ControlRec );
- AddMovementKeys( UserOps.FieldExitKeySet );
- UserOps.DoPrompting := TRUE;
- GenLists.NilList( TmpFrame^.EdFieldList );
- GenLists.DisconnectLists( TheList, TmpFrame^.self );
- (* We have to disconnect TheList because it has become a sublist
- of TmpFrame's .self list, which is about to be disposed of. *)
- ScrnUtl2.CloseDisplayFrame( TmpFrame );
- VWindows.SetForeColor( VWindows.CurrentWindow, MsColors.lightgrey );
- VWindows.SetBackColor( VWindows.CurrentWindow, MsColors.black );
- VWindows.SetMonoAttr( VWindows.CurrentWindow, MsColors.plain );
- VWindows.ClearPart( VWindows.CurrentWindow, 1,1,
- VWindows.EndCol(VWindows.CurrentWindow),
- VWindows.EndRow(VWindows.CurrentWindow) );
- END CallEditor;
- PROCEDURE CloseCurrentDsp();
- BEGIN
- IF (CurrentDspFile # NIL) THEN
- NdxUtils.CrunchNdxFile( CurrentDspFile );
- NdxFiles.CloseNdxFile( CurrentDspFile );
- END;
- END CloseCurrentDsp;
- PROCEDURE Yes( Prompt: ARRAY OF CHAR ): BOOLEAN;
- BEGIN
- IF CmdLineVersion THEN
- StringIO.WriteEol( StringIO.outp, '' );
- StringIO.WriteStr( StringIO.outp, Prompt );
- StringIO.WriteStr( StringIO.outp, ' (Y/N): ' );
- RETURN KbdInput.CAPkey( KbdInput.KeyHit( KbdInput.YorN ) ) = ORD('Y');
- ELSE
- M2Strings.Assign( Prompt, NextFrame );
- ControlUtils.Input( DspFiles.MainFrame, NextFrame );
- RETURN CAP( ScrnUtl1.SelectedChar(DspFiles.MainFrame) ) = 'Y';
- END;
- END Yes;
- PROCEDURE NamesToFrame( DspFile: ScrnTypes.DisplayFile;
- VAR TheFrame: ScrnTypes.DisplayFrame );
- VAR
- NdxRec: NdxTypes.NdxElement;
- lngth, cnt, TypeCode: CARDINAL;
- BEGIN
- lngth := GenLists.ListLength( DspFile^.Ndx );
- FOR cnt := 1 TO lngth DO
- GenLists.GetElmt( DspFile^.Ndx, cnt, NdxRec, TypeCode );
- IF NdxRec.RecName[0] # 0C THEN
- IF NOT (PosUtils.Pos( 'RepVers', NdxRec.RecName ) = 0) THEN
- (* We don't want to write out the name of the version
- check record. *)
- ControlUtils.AddMenuItem( TheFrame, 2, 1 + cnt,
- NdxRec.RecName, 20, 0, NdxRec.RecName );
- END;
- END;
- END;
- END NamesToFrame;
- PROCEDURE InsertCommandDelims( VAR TheList: GenLists.GenList );
- VAR
- TmpStr: ARRAY [0..127] OF CHAR;
- BEGIN
- IF GenLists.ListLength( TheList ) = 0 THEN
- (*Get em started--command area delimiters are tedious to
- type in.*)
- LowLevel.Fill( SYSTEM.ADR(TmpStr), 80, '=' );
- GenLists.ListInsert( TmpStr, GenLists.StrCode,
- TheList, 1 );
- LowLevel.Fill( SYSTEM.ADR(TmpStr), 80, '-' );
- GenLists.ListInsert( ':[insert name here]',
- GenLists.StrCode, TheList, 2 );
- GenLists.ListInsert( TmpStr, GenLists.StrCode,
- TheList, 3 );
- END;
- END InsertCommandDelims;
- PROCEDURE GetStrResponse( Prompt, Default: ARRAY OF CHAR;
- VAR TheStr: ARRAY OF CHAR ): BOOLEAN;
- BEGIN
- IF CmdLineVersion THEN
- IF EnvironUtils.ParsedParam( ParamsRead + 1, TheStr ) THEN
- IF TheStr[0] # '/' THEN
- IF PosUtils.Present( '/c', TheStr ) OR
- PosUtils.Present( '/C', TheStr ) THEN
- M2Strings.Delete( TheStr, M2Strings.Length(TheStr) - 2, 2 );
- StrEdit.CrunchBlanks( TheStr );
- END;
- INC( ParamsRead );
- RETURN TRUE;
- END;
- END;
- StringIO.WriteStr( StringIO.outp, Prompt );
- StringIO.WriteStr( StringIO.outp, ': ' );
- StringIO.ReadStr( StringIO.inp, TheStr );
- IF TheStr[0] # 0C THEN
- RETURN TRUE;
- ELSE
- RETURN FALSE;
- END;
- END;
- M2Strings.Assign( Prompt, NextFrame );
- DspFiles.ReadDisplayFrame( ScrnCompDsp, DspFiles.MainFrame, NextFrame );
- ControlUtils.ChangeField( DspFiles.MainFrame, Default, 'TheStr', TRUE );
- FramePainter.ShowDisplayFrame( DspFiles.MainFrame, 0, 0, 0, 0 );
- InputManager.ControlFrame( DspFiles.MainFrame, 1, '', FALSE, NextFrame );
- IF PosUtils.Equal( DspFiles.MainFrame^.parent, NextFrame ) THEN
- RETURN FALSE;
- END;
- ControlUtils.ReadInput( DspFiles.MainFrame, TheStr, 'TheStr' );
- StrEdit.CrunchBlanks( TheStr );
- RETURN TRUE;
- END GetStrResponse;
- PROCEDURE ReadNewEdtFile(): BOOLEAN;
- BEGIN
- IF GenLists.Initialized( FileList ) THEN
- IF Yes('SaveEdt') THEN
- IF NOT GetStrResponse( 'EdtName', EdtFileName, EdtFileName ) THEN
- RETURN FALSE;
- END;
- AddExtension( EdtFileName, '.EDT' );
- IF StringIO.NoError # ListUtils.TextListToFile( FileList,
- EdtFileName ) THEN
- RETURN FALSE;
- END;
- END;
- GenLists.DisposeList( FileList );
- END;
- LOOP
- IF NOT GetStrResponse( 'EdtName', LastFileName, EdtFileName ) THEN
- RETURN FALSE;
- END;
- M2Strings.Assign( EdtFileName, LastFileName );
- AddExtension( EdtFileName, '.EDT' );
- GenLists.NewList( FileList );
- IF ListUtils.TextFileToList( EdtFileName, FileList)
- = StringIO.NoError THEN
- ListUtils.DeTabList( FileList, ListChanged );
- EXIT;
- ELSIF Yes( 'CreateQ' ) THEN
- GenLists.DisposeList( FileList );
- GenLists.CopyList( CurrentFrameList, FileList );
- InsertCommandDelims( FileList );
- (*Won't do anything if there's already something in
- CurrentFrameList.*)
- ELSE
- GenLists.DisposeList( FileList );
- IF NOT CmdLineVersion THEN
- InputConst2( ScrnCompDsp, 'FileError' );
- END;
- RETURN FALSE;
- END;
- END;
- FileListLine := 1;
- RETURN TRUE;
- END ReadNewEdtFile;
- PROCEDURE RightVersion( VAR dfile: ScrnTypes.DisplayFile ): BOOLEAN;
- VAR
- TypeCode: CARDINAL;
- tmpstr: ScrnTypes.AFrameName;
- BEGIN
- IF NdxBones.InitBuffer( dfile, 'RepVers' ) THEN
- GenLists.GetElmt( dfile^.ListBuf, 1, tmpstr, TypeCode );
- IF PosUtils.Equal( '1.5c', tmpstr ) THEN
- RETURN TRUE;
- ELSE
- DspFiles.CloseDisplayFile( dfile );
- RETURN FALSE;
- END;
- ELSE
- DspFiles.CloseDisplayFile( dfile );
- RETURN FALSE;
- END;
- END RightVersion;
- PROCEDURE OpenNewDspFile(): BOOLEAN;
- BEGIN
- IF CurrentDspFile # NIL THEN
- DspFiles.CloseDisplayFile( CurrentDspFile );
- END;
- LOOP
- IF NOT GetStrResponse( 'DspName', LastFileName, DspFileName ) THEN
- RETURN FALSE;
- END;
- M2Strings.Assign( DspFileName, LastFileName );
- AddExtension( DspFileName, ".DSP" );
- IF DspFiles.OpenDisplayFile( CurrentDspFile, DspFileName )
- AND RightVersion(CurrentDspFile) THEN
- (*Don't let them open a .DSP file created by an
- incompatible version of the screen compiler. Make them
- start over.*)
- EXIT;
- ELSIF CmdLineVersion THEN
- NdxFiles.CreateNdxFile( CurrentDspFile, DspFileName, "" );
- IF NdxFiles.PutField( CurrentDspFile, 'RepVers',
- 'RECORD', GenLists.StrCode, '1.5c' ) AND
- NdxFiles.WriteRecord( CurrentDspFile, 'RepVers' ) THEN
- EXIT;
- END
- ELSE
- IF Yes( 'CreateQ' ) THEN
- NdxFiles.CreateNdxFile( CurrentDspFile, DspFileName, "" );
- IF NdxFiles.PutField( CurrentDspFile, 'RepVers',
- 'RECORD', GenLists.StrCode, '1.5c' ) AND
- NdxFiles.WriteRecord( CurrentDspFile, 'RepVers' ) THEN
- EXIT;
- END
- ELSE
- CurrentDspFile := NIL;
- RETURN FALSE;
- END;
- END;
- END;
- ErrorManager.AddTermProc( CloseCurrentDsp );
- RETURN TRUE;
- END OpenNewDspFile;
- PROCEDURE FrameStart( VAR str: ARRAY OF CHAR ): BOOLEAN;
- BEGIN
- IF (M2Strings.Length(str) = 0) THEN
- RETURN FALSE;
- END;
- IF (PosUtils.Present( MakeFrame.CommandBeginStr, str)) THEN
- IF (syntax = new) THEN
- RETURN TRUE;
- END;
- IF (syntax = unknown) THEN
- syntax := new;
- RETURN TRUE;
- END;
- END;
- IF (str[0] = ":") THEN
- IF (syntax = old) THEN
- RETURN TRUE;
- END;
- IF (syntax = unknown) THEN
- syntax := old;
- RETURN TRUE;
- END;
- END;
- RETURN FALSE;
- END FrameStart;
- PROCEDURE GetNextFrame( FileList: GenLists.GenList; VAR FrameList:
- GenLists.GenList; VAR StartLine: CARDINAL ): BOOLEAN;
- (* Gets next frame list out of file list.*)
- VAR
- text: ARRAY [0..255] OF CHAR;
- type: CARDINAL;
- BEGIN
- syntax := unknown;
- GenLists.DisposeList( FrameList);
- GenLists.NewList( FrameList);
- (* first, skip until we get to CommandBeginStr or a colon in
- column one *)
- REPEAT
- IF StartLine > GenLists.ListLength( FileList) THEN
- RETURN FALSE;
- END;
- GenLists.GetElmt( FileList, StartLine, text, type);
- INC( StartLine);
- UNTIL FrameStart(text);
- (* now copy elements until another FrameStart*)
- REPEAT
- GenLists.ListInsert( text, type, FrameList, 65535);
- (* insert in frame *)
- IF StartLine > GenLists.ListLength( FileList) THEN
- RETURN FALSE;
- END;
- GenLists.GetElmt( FileList, StartLine, text, type);
- INC( StartLine);
- UNTIL FrameStart( text );
- DEC( StartLine);
- RETURN TRUE;
- END GetNextFrame;
- PROCEDURE FindFrame( FileList: GenLists.GenList;
- FrameName: ARRAY OF CHAR; VAR StartLine: CARDINAL ): BOOLEAN;
- VAR
- text: ARRAY [0..255] OF CHAR;
- FoundSpot, type: CARDINAL;
- TmpName: ScrnTypes.AFrameName;
- BEGIN
- IF NOT GenLists.Initialized( FileList ) THEN
- RETURN FALSE;
- END;
- M2Strings.Assign( FrameName, TmpName );
- M2Strings.Assign( FrameName, LastFrameName );
- IF TmpName[0] # ':' THEN
- M2Strings.Insert( ':', TmpName, 0 );
- END;
- StartLine := 0;
- REPEAT
- (*This is John McMonagle's fix for a problem that was
- causing FindFrame to return FALSE when frame names
- appeared by accident in other parts of the frame.*)
- StartLine := GenLists.ScanList( TmpName, FileList, StartLine + 1,
- GenLists.ListLength(FileList), FoundSpot );
- IF (StartLine = 0) THEN
- RETURN FALSE;
- END;
- UNTIL FoundSpot = 0;
- syntax := unknown;
- GenLists.GetElmt( FileList, StartLine + 1, text, type);
- IF FrameStart( text ) THEN
- (* The name was outside the frame. *)
- syntax := old;
- RETURN TRUE;
- ELSE
- (* Back up until we get to CommandBeginStr or a colon in
- column one.*)
- syntax := new;
- REPEAT
- DEC( StartLine );
- IF StartLine = 0 THEN
- RETURN FALSE;
- END;
- GenLists.GetElmt( FileList, StartLine, text, type );
- UNTIL FrameStart(text);
- RETURN TRUE;
- END;
- END FindFrame;
- PROCEDURE GetSpecificFrame( FileList: GenLists.GenList;
- FrameName: ARRAY OF CHAR; VAR FrameList: GenLists.GenList): BOOLEAN;
- VAR
- StartLine: CARDINAL;
- BEGIN
- IF NOT FindFrame( FileList, FrameName, StartLine ) THEN
- RETURN FALSE;
- END;
- IF NOT GetNextFrame( FileList, FrameList, StartLine ) THEN
- (*It was probably the last frame in the FileList, but we
- don't care about that.*)
- END;
- RETURN TRUE;
- END GetSpecificFrame;
- PROCEDURE DeleteFrame( FileList: GenLists.GenList;
- FrameName: ARRAY OF CHAR; VAR EndLine: CARDINAL ): BOOLEAN;
- VAR
- type: CARDINAL;
- text: ARRAY [0..255] OF CHAR;
- BEGIN
- IF NOT FindFrame( FileList, FrameName, EndLine ) THEN
- RETURN FALSE;
- END;
- LOOP
- GenLists.ListDelete( FileList, EndLine, 1 );
- IF (EndLine > GenLists.ListLength(FileList)) THEN
- EXIT;
- END;
- GenLists.GetElmt( FileList, EndLine, text, type);
- IF FrameStart( text ) THEN
- EXIT;
- END;
- END;
- RETURN TRUE;
- END DeleteFrame;
- PROCEDURE ShowError( FrameList: GenLists.GenList;
- FrameName, ErrStr: ARRAY OF CHAR; BadLine: CARDINAL);
- VAR
- text: ARRAY [0..255] OF CHAR;
- caption, numstr: ARRAY [0..15] OF CHAR;
- dumc: CARDINAL;
- BEGIN
- text := "Frame: ";
- IF M2Strings.Length( FrameName) = 0 THEN
- StrEdit.Append( text, "Unknown" );
- ELSE
- StrEdit.Append( text, FrameName );
- END;
- StrEdit.Append( text, ", Line: " );
- StrConv.CardinalToStr( BadLine, 0, numstr);
- StrEdit.Append( text, numstr );
- StrEdit.Append( text, '.' );
- StrEdit.Append( text, ErrStr );
- caption := 'Error';
- dumc := VWindows.MessageBox( VWindows.CurrentWindow, SYSTEM.ADR(text),
- SYSTEM.ADR(caption), 0 );
- END ShowError;
- PROCEDURE AddToFile( VAR file: NdxTypes.NdxFileType; OutList: GenLists.GenList;
- name: ScrnTypes.AFrameName);
- VAR
- ErrStr: ARRAY [0..80] OF CHAR;
- BEGIN
- IF (NOT NdxFiles.PutField( file, name, "RECORD", GenLists.ListCode,
- OutList)) OR
- (NOT NdxFiles.WriteRecord( file, name)) THEN
- StrEdit.AssignStr( "Can't add to file frame: ", ErrStr);
- StrEdit.Append( ErrStr, name);
- ErrorManager.WARN( ErrStr);
- END;
- END AddToFile;
- PROCEDURE DoFileMenu( SelectedChar: CHAR );
- BEGIN
- CASE CAP(SelectedChar) OF
- 'E':
- IF NOT ReadNewEdtFile() THEN END;
- | 'D':
- IF NOT OpenNewDspFile() THEN END;
- | 'F':
- IF CurrentDspFile = NIL THEN
- IF NOT OpenNewDspFile() THEN
- RETURN;
- END;
- END;
- IF GetStrResponse( 'FramePrompt', LastFrameName, FrameName ) THEN
- LOOP
- M2Strings.Assign( FrameName, LastFrameName );
- IF NOT ControlUtils.FrameExists( CurrentDspFile, FrameName ) THEN
- IF NOT GetStrResponse( 'NewEntry', FrameName, FrameName ) THEN
- EXIT
- END;
- ELSE
- IF NdxFiles.DeleteRecord( CurrentDspFile, FrameName ) THEN
- EXIT;
- END;
- END;
- END;
- END;
- | 'C':
- IF CurrentDspFile = NIL THEN
- IF NOT OpenNewDspFile() THEN
- RETURN;
- END;
- END;
- NdxUtils.CrunchNdxFile( CurrentDspFile );
- END;
- END DoFileMenu;
- PROCEDURE DoEditMenu( SelectedChar: CHAR );
- VAR
- TmpRec: VEditor.AnEdControlRec;
- FrameName: ScrnTypes.AFrameName;
- FileName: ARRAY [0..79] OF CHAR;
- LineTotalStr: ARRAY [0..15] OF CHAR;
- TmpList: GenLists.GenList;
- EndLine, BadLine: CARDINAL;
- WorkFrame: ScrnTypes.DisplayFrame;
- StatusFrame: ScrnTypes.DisplayFrame;
- SavedMessage: CARDINAL;
- BEGIN
- VEditor.InitEdRec( TmpRec );
- TmpRec.DoCounting := FALSE;
- CASE CAP(SelectedChar) OF
- 'E':
- IF NOT GenLists.Initialized( FileList ) THEN
- IF NOT ReadNewEdtFile() THEN
- RETURN;
- END;
- END;
- CallEditor( FileList, TmpRec );
- IF TmpRec.ChangeMade THEN
- IF Yes( 'SaveQ' ) THEN
- IF StringIO.NoError # ListUtils.TextListToFile( FileList,
- EdtFileName ) THEN
- InputConst2( ScrnCompDsp, 'FileError' );
- END;
- END;
- END;
- | 'S':
- IF GetStrResponse( 'FramePrompt', LastFrameName, FrameName ) THEN
- M2Strings.Assign( FrameName, LastFrameName );
- IF GetSpecificFrame( FileList, FrameName, CurrentFrameList ) THEN
- CallEditor( CurrentFrameList, TmpRec );
- IF TmpRec.ChangeMade THEN
- IF DeleteFrame( FileList, FrameName, EndLine ) THEN
- ListUtils.InsertElmtsOf( CurrentFrameList, 1, 65535,
- FileList, EndLine );
- END;
- IF Yes( 'DisplayQ' ) THEN
- ScrnTypes.InitDisplayFrame( WorkFrame,
- VWindows.CurrentWindow );
- WorkFrame^.FromFile := CurrentDspFile;
- MakeFrame.CompileFrame( CurrentFrameList,
- OutFrameList, FrameName, ErrStr, BadLine);
- M2Strings.Assign( FrameName, LastFrameName );
- IF BadLine = 0 THEN
- DspFiles.GetFrameFromList( OutFrameList, WorkFrame );
- FramePainter.ShowDisplayFrame( WorkFrame, 0, 0, 0, 0 );
- InputManager.ControlFrame( WorkFrame, 1, '',
- FALSE, NextFrame );
- ELSE
- ShowError( CurrentFrameList, FrameName, ErrStr, BadLine);
- END;
- ScrnUtl2.CloseDisplayFrame( WorkFrame );
- END;
- IF Yes( 'SaveQ' ) THEN
- IF StringIO.NoError # ListUtils.TextListToFile( FileList,
- EdtFileName ) THEN
- InputConst2( ScrnCompDsp, 'FileError' );
- END;
- END;
- END;
- END;
- END;
- | 'F':
- IF CurrentDspFile = NIL THEN
- IF NOT OpenNewDspFile() THEN
- RETURN;
- END;
- END;
- ScrnTypes.InitDisplayFrame( WorkFrame, VWindows.CurrentWindow );
- WorkFrame^.FromFile := CurrentDspFile;
- LOOP
- InsertCommandDelims( CurrentFrameList );
- CallEditor( CurrentFrameList, TmpRec );
- IF TmpRec.ChangeMade THEN
- IF DeleteFrame( FileList, LastFrameName, EndLine ) THEN
- ListUtils.InsertElmtsOf( CurrentFrameList, 1,
- 65535, FileList, EndLine );
- END;
- END;
- IF NOT Yes( 'DisplayQ' ) THEN
- EXIT;
- END;
- MakeFrame.CompileFrame( CurrentFrameList,
- OutFrameList, FrameName, ErrStr, BadLine);
- M2Strings.Assign( FrameName, LastFrameName );
- IF BadLine = 0 THEN
- DspFiles.GetFrameFromList( OutFrameList, WorkFrame );
- FramePainter.ShowDisplayFrame( WorkFrame, 0, 0, 0, 0 );
- InputManager.ControlFrame( WorkFrame, 1, '', FALSE, NextFrame );
- ELSE
- ShowError( CurrentFrameList, FrameName, ErrStr, BadLine);
- END;
- END;
- IF Yes( 'SaveQ' ) THEN
- IF StringIO.NoError # ListUtils.TextListToFile( FileList,
- EdtFileName ) THEN
- InputConst2( ScrnCompDsp, 'FileError' );
- END;
- END;
- ScrnUtl2.CloseDisplayFrame( WorkFrame );
- | 'A':
- IF GetStrResponse( 'FileName', LastFileName, FileName ) THEN
- M2Strings.Assign( FileName, LastFileName );
- GenLists.NewList( TmpList );
- SavedMessage := ListUtils.TextFileToList( FileName,
- TmpList );
- IF (SavedMessage # StringIO.NoError) AND
- (SavedMessage # StringIO.FileNotFound) THEN
- InputConst2( ScrnCompDsp, 'FileError' );
- ELSE
- IF SavedMessage = StringIO.FileNotFound THEN
- IF NOT Yes( 'CreateQ' ) THEN
- RETURN;
- END;
- END;
- ListUtils.DeTabList( TmpList, ListChanged );
- CallEditor( TmpList, TmpRec );
- IF TmpRec.ChangeMade THEN
- IF Yes( 'SaveQ' ) THEN
- ScrnTypes.InitDisplayFrame( StatusFrame,
- VWindows.CurrentWindow );
- ScrnUtl2.ReadAndShow( ScrnCompDsp, StatusFrame,
- 'StatusFrame' );
- UpdateStatus( StatusFrame, 'line1',
- 'Writing' );
- StrConv.CardinalToStr(
- GenLists.ListLength(TmpList), 0,
- LineTotalStr );
- UpdateStatus( StatusFrame, 'line2',
- LineTotalStr );
- UpdateStatus( StatusFrame, 'line3',
- 'lines.' );
- IF StringIO.NoError # ListUtils.TextListToFile(
- TmpList, FileName ) THEN
- InputConst2( ScrnCompDsp, 'FileError' );
- END;
- FrameManager.EraseFrame( StatusFrame );
- ScrnUtl2.CloseDisplayFrame( StatusFrame );
- END;
- END;
- END;
- GenLists.DisposeList( TmpList );
- END;
- END;
- END DoEditMenu;
- PROCEDURE DoCompMenu( SelectedChar: CHAR );
- VAR
- TmpRec: VEditor.AnEdControlRec;
- ChangeMade : BOOLEAN;
- EndLine: CARDINAL;
- StatusFrame: ScrnTypes.DisplayFrame;
- BEGIN
- IF CurrentDspFile = NIL THEN
- IF NOT OpenNewDspFile() THEN
- RETURN;
- END;
- END;
- VEditor.InitEdRec( TmpRec );
- TmpRec.DoCounting := FALSE;
- ChangeMade := FALSE;
- CASE CAP(SelectedChar) OF
- 'E' :
- IF NOT GenLists.Initialized( FileList ) THEN
- IF NOT ReadNewEdtFile() THEN
- RETURN;
- END;
- END;
- AtEndOfList := FALSE;
- FileListLine := 1;
- ScrnTypes.InitDisplayFrame( StatusFrame, VWindows.CurrentWindow );
- ScrnUtl2.ReadAndShow( ScrnCompDsp, StatusFrame, 'StatusFrame' );
- UpdateStatus( StatusFrame, 'line1', 'Processing' );
- WHILE NOT AtEndOfList DO
- AtEndOfList := NOT GetNextFrame( FileList,
- CurrentFrameList, FileListLine );
- IF GenLists.ListLength( CurrentFrameList) > 0 THEN
- BadLine := 1;
- WHILE BadLine # 0 DO
- MakeFrame.CompileFrame( CurrentFrameList,
- OutFrameList, FrameName, ErrStr, BadLine);
- M2Strings.Assign( FrameName, LastFrameName );
- UpdateStatus( StatusFrame, 'line2', FrameName );
- IF BadLine # 0 THEN
- ShowError( CurrentFrameList, FrameName, ErrStr, BadLine);
- IF Yes( 'EditQ' ) THEN
- TmpRec.CursorRow := BadLine;
- CallEditor( CurrentFrameList, TmpRec );
- IF TmpRec.ChangeMade THEN
- IF DeleteFrame( FileList, LastFrameName, EndLine ) THEN
- ListUtils.InsertElmtsOf( CurrentFrameList, 1, 65535,
- FileList, EndLine );
- END;
- END;
- BadLine := 0;
- IF TmpRec.ChangeMade THEN
- ChangeMade := TRUE;
- END;
- END;
- ELSE
- AddToFile( CurrentDspFile, OutFrameList, FrameName);
- END;
- END;
- END;
- END;
- FrameManager.EraseFrame( StatusFrame );
- ScrnUtl2.CloseDisplayFrame( StatusFrame );
- IF ChangeMade THEN
- IF Yes( 'SaveQ' ) THEN
- IF StringIO.NoError # ListUtils.TextListToFile( FileList,
- EdtFileName ) THEN
- InputConst2( ScrnCompDsp, 'FileError' );
- END;
- END;
- END;
- | 'S' :
- IF NOT GenLists.Initialized( FileList ) THEN
- IF NOT ReadNewEdtFile() THEN
- RETURN;
- END;
- END;
- IF GetStrResponse( 'FramePrompt', LastFrameName, FrameName ) THEN
- M2Strings.Assign( FrameName, LastFrameName );
- IF GetSpecificFrame( FileList, FrameName, CurrentFrameList ) THEN
- MakeFrame.CompileFrame( CurrentFrameList,
- OutFrameList, FrameName, ErrStr, BadLine);
- M2Strings.Assign( FrameName, LastFrameName );
- IF BadLine = 0 THEN
- IF Yes( 'StoreQ' ) THEN
- AddToFile( CurrentDspFile, OutFrameList, FrameName);
- END;
- ELSE
- ShowError( CurrentFrameList, FrameName, ErrStr, BadLine);
- IF Yes( 'EditQ' ) THEN
- TmpRec.CursorRow := BadLine;
- CallEditor( CurrentFrameList, TmpRec );
- IF TmpRec.ChangeMade THEN
- IF DeleteFrame( FileList, LastFrameName, EndLine ) THEN
- ListUtils.InsertElmtsOf( CurrentFrameList, 1, 65535,
- FileList, EndLine );
- END;
- END;
- END;
- END;
- END;
- END;
- | 'C' :
- IF GenLists.ListLength( CurrentFrameList ) = 0 THEN
- InputConst2( ScrnCompDsp, 'NoCurrent' );
- RETURN;
- END;
- MakeFrame.CompileFrame( CurrentFrameList, OutFrameList, FrameName,
- ErrStr, BadLine);
- M2Strings.Assign( FrameName, LastFrameName );
- IF BadLine = 0 THEN
- IF Yes( 'StoreQ' ) THEN
- AddToFile( CurrentDspFile, OutFrameList, FrameName);
- END;
- ELSE
- ShowError( CurrentFrameList, FrameName, ErrStr, BadLine);
- IF Yes( 'EditQ' ) THEN
- TmpRec.CursorRow := BadLine;
- CallEditor( CurrentFrameList, TmpRec );
- IF TmpRec.ChangeMade THEN
- IF DeleteFrame( FileList, LastFrameName, EndLine ) THEN
- ListUtils.InsertElmtsOf( CurrentFrameList, 1, 65535,
- FileList, EndLine );
- END;
- END;
- END;
- END;
- END;
- END DoCompMenu;
- PROCEDURE DoDisplayMenu( SelectedChar: CHAR );
- VAR
- WorkFrame, ListFrame: ScrnTypes.DisplayFrame;
- BEGIN
- IF CurrentDspFile = NIL THEN
- IF NOT OpenNewDspFile() THEN
- RETURN;
- END;
- END;
- ScrnTypes.InitDisplayFrame( WorkFrame, VWindows.CurrentWindow );
- WorkFrame^.FromFile := CurrentDspFile;
- CASE CAP(SelectedChar) OF
- 'C' :
- IF GenLists.Initialized( OutFrameList ) THEN
- DspFiles.GetFrameFromList( OutFrameList, WorkFrame );
- FramePainter.ShowDisplayFrame( WorkFrame, 0, 0, 0, 0 );
- InputManager.ControlFrame( WorkFrame, 1, '', FALSE, NextFrame );
- ELSIF GenLists.ListLength( CurrentFrameList ) > 0 THEN
- MakeFrame.CompileFrame( CurrentFrameList,
- OutFrameList, FrameName, ErrStr, BadLine);
- M2Strings.Assign( FrameName, LastFrameName );
- IF BadLine = 0 THEN
- DspFiles.GetFrameFromList( OutFrameList, WorkFrame );
- FramePainter.ShowDisplayFrame( WorkFrame, 0, 0, 0, 0 );
- InputManager.ControlFrame( WorkFrame, 1, '', FALSE, NextFrame );
- ELSE
- ShowError( CurrentFrameList, FrameName, ErrStr, BadLine);
- END;
- ELSE
- InputConst2( ScrnCompDsp, 'NoCurrent' );
- END;
- | 'S' :
- IF GetStrResponse( 'FramePrompt', LastFrameName, FrameName ) THEN
- M2Strings.Assign( FrameName, LastFrameName );
- IF ControlUtils.FrameExists( CurrentDspFile, FrameName ) THEN
- ControlUtils.Input( WorkFrame, FrameName );
- END;
- END;
- | 'L' :
- ScrnTypes.InitDisplayFrame( ListFrame, VWindows.CurrentWindow );
- DspFiles.ReadDisplayFrame( ScrnCompDsp, ListFrame,
- 'ListBox' );
- ScrnUtl1.SetNormalColors( ListFrame );
- NamesToFrame( CurrentDspFile, ListFrame );
- FramePainter.ShowDisplayFrame( ListFrame, 0, 0, 0, 0 );
- IF ScrnUtl1.FieldListTotal( ListFrame ) > 0 THEN
- InputManager.ControlFrame( ListFrame, 1, '', FALSE,
- NextFrame );
- ScrnUtl1.GetFieldText( ListFrame,
- ListFrame^.CurrentField, LastFrameName );
- END;
- ScrnUtl2.CloseDisplayFrame( ListFrame );
- END;
- ScrnUtl2.CloseDisplayFrame( WorkFrame );
- END DoDisplayMenu;
- PROCEDURE DoPrintDialog();
- VAR
- WorkFrame, ListFrame: ScrnTypes.DisplayFrame;
- FrameName: ScrnTypes.AFrameName;
- DeviceName: ARRAY [0..79] OF CHAR;
- TmpHandle: CARDINAL;
- BEGIN
- IF CurrentDspFile = NIL THEN
- IF NOT OpenNewDspFile() THEN
- RETURN;
- END;
- END;
- ScrnTypes.InitDisplayFrame( WorkFrame, VWindows.CurrentWindow );
- WorkFrame^.FromFile := CurrentDspFile;
- LOOP
- DspFiles.ReadDisplayFrame( ScrnCompDsp, WorkFrame, 'PrintDialog' );
- ControlUtils.ChangeField( WorkFrame, LastFrameName, 'FrameName', TRUE );
- FramePainter.ShowDisplayFrame( WorkFrame, 0, 0, 0, 0 );
- InputManager.ControlFrame( WorkFrame, 1, '', FALSE, FrameName );
- IF PosUtils.Equal( FrameName, WorkFrame^.parent ) THEN
- EXIT;
- END;
- ControlUtils.ReadInput( WorkFrame, FrameName, 'FrameName' );
- ControlUtils.ReadInput( WorkFrame, DeviceName, 'DeviceName' );
- StrEdit.CrunchBlanks( FrameName );
- StrEdit.CrunchBlanks( DeviceName );
- IF ControlUtils.FrameExists( CurrentDspFile, FrameName ) THEN
- DspFiles.ReadDisplayFrame( CurrentDspFile, WorkFrame, FrameName );
- HandleIO.OpenForAppending( DeviceName, TmpHandle );
- PrtFrame.PrintDisplayFrame( WorkFrame, TmpHandle, 0 );
- IF StringIO.NoError # HandleIO.CloseHandle( TmpHandle ) THEN
- EXIT;
- END;
- END;
- M2Strings.Assign( FrameName, LastFrameName );
- END;
- ScrnUtl2.CloseDisplayFrame( WorkFrame );
- END DoPrintDialog;
- PROCEDURE DoFrameSeq();
- VAR
- WorkFrame: ScrnTypes.DisplayFrame;
- EntryFrame: ScrnTypes.AFrameName;
- BEGIN
- IF CurrentDspFile = NIL THEN
- IF NOT OpenNewDspFile() THEN
- RETURN;
- END;
- END;
- IF GetStrResponse( 'EntryPrompt', LastFrameName, EntryFrame ) THEN
- M2Strings.Assign( EntryFrame, LastFrameName );
- IF NOT ControlUtils.FrameExists( CurrentDspFile, EntryFrame ) THEN
- IF NOT GetStrResponse( 'NewEntry', EntryFrame, EntryFrame ) THEN
- RETURN;
- END;
- END;
- ScrnTypes.InitDisplayFrame( WorkFrame, VWindows.CurrentWindow );
- WorkFrame^.FromFile := CurrentDspFile;
- LOOP
- ControlUtils.FrameSeq2( CurrentDspFile, 'QNOCHECKQ', EntryFrame );
- (* We don't want any checking for circular sequences
- at this level, so we use a value for the
- CheckFrame parameter that we hope you will never
- need as a frame name. *)
- IF NOT PosUtils.Equal( EntryFrame, ScrnTypes.ProgramExit ) THEN
- (*We exited from FrameSequence prematurely because of an
- unfound frame name.*)
- IF NOT GetStrResponse( 'NewEntry', EntryFrame, EntryFrame ) THEN
- EXIT;
- END;
- ELSE
- EXIT;
- END;
- END;
- ScrnUtl2.CloseDisplayFrame( WorkFrame );
- END;
- END DoFrameSeq;
- PROCEDURE RestoreDisplay();
- BEGIN
- VWindows.SetForeColor( VWindows.CurrentWindow, MsColors.lightgrey );
- VWindows.SetBackColor( VWindows.CurrentWindow, MsColors.black );
- VWindows.SetMonoAttr( VWindows.CurrentWindow, MsColors.plain );
- VWindows.ClearPart( VWindows.CurrentWindow, 1, 1,
- VWindows.EndCol(VWindows.CurrentWindow),
- VWindows.EndRow(VWindows.CurrentWindow) );
- VWindows.SetCursorHeight( VWindows.CurrentWindow, SavedCursorHeight );
- END RestoreDisplay;
- BEGIN
- (* ScrnCompile *)
- MakeFrame.Init();
- (* We initialize MakeFrame explicitly because there are cases where
- we could reference its global data without first calling one of
- its functions. Our new initialization scheme is triggered only
- when a function is called. *)
- GenLists.NilList( FileList );
- GenLists.NilList( OutFrameList );
- GenLists.NewList( CurrentFrameList );
- CurrentDspFile := NIL;
- AtEndOfList := FALSE;
- LastFileName := '';
- LastFrameName := '';
- CmdLineVersion := FALSE;
- FileListLine := 1;
- BigSets.InitSet( MovementKeys );
- BigSets.AppendSet( MovementKeys, '{9, 271, 328, 331, 333, 336, 329, 337}' );
- (*Arrow keys plus tab, backtab, PgUp, and PgDn*)
- IF CommandLineSwitch() OR
- (NOT DspFiles.OpenDisplayFile( ScrnCompDsp, 'ScrnComp.dsp' )) THEN
- CmdLineVersion := TRUE;
- ParamsRead := 0;
- IF NOT ReadNewEdtFile() THEN
- RETURN;
- END;
- IF NOT OpenNewDspFile() THEN
- RETURN;
- END;
- WHILE NOT AtEndOfList DO
- AtEndOfList := NOT GetNextFrame( FileList,
- CurrentFrameList, FileListLine );
- IF GenLists.ListLength( CurrentFrameList) > 0 THEN
- MakeFrame.CompileFrame( CurrentFrameList, OutFrameList, FrameName,
- ErrStr, BadLine);
- IF BadLine # 0 THEN
- ShowError( CurrentFrameList, FrameName, ErrStr, BadLine);
- END;
- AddToFile( CurrentDspFile, OutFrameList, FrameName);
- StrEdit.RightJustify( FrameName, 20 );
- StringIO.WriteStr( StringIO.outp, FrameName );
- StringIO.WriteStr( StringIO.outp, ' added to ' );
- StringIO.WriteStr( StringIO.outp, DspFileName );
- StringIO.WriteEol( StringIO.outp, '.' );
- END;
- END;
- RETURN;
- END;
- SavedCursorHeight := VWindows.GetCursorHeight( VWindows.CurrentWindow );
- VWindows.SetCursorHeight( VWindows.CurrentWindow, 0 );
- ErrorManager.AddTermProc( RestoreDisplay );
- GenLists.NewList( TopMenuList );
- ControlUtils.LoadFrameList( ScrnCompDsp, 'TopMenu', TopMenuList );
- (*This keeps the TopMenu in memory.*)
- UserOps.DoPrompting := FALSE;
- ControlUtils.InputConst( DspFiles.MainFrame, 'Banner' );
- UserOps.DoPrompting := TRUE;
- UserOps.PromptRow := VWindows.EndRow(VWindows.CurrentWindow) - 1;
- ScrnUtl2.Display( DspFiles.MainFrame, 'BlankScreen' );
- LOOP
- NextFrame := 'TopMenu';
- ControlUtils.ControlSeparately( TopMenuList,
- NextFrame, SelChar, EndingFrame );
- IF PosUtils.Equal( ScrnTypes.ProgramExit, NextFrame ) THEN
- EXIT;
- ELSIF PosUtils.Equal( EndingFrame, 'FileMenu' ) THEN
- (*User has made a selection from the FileMenu.*)
- DoFileMenu( SelChar );
- ELSIF PosUtils.Equal( EndingFrame, 'EditMenu' ) THEN
- DoEditMenu( SelChar );
- ELSIF PosUtils.Equal( EndingFrame, 'CompMenu' ) THEN
- DoCompMenu( SelChar );
- ELSIF PosUtils.Equal( EndingFrame, 'DispMenu' ) THEN
- DoDisplayMenu( SelChar );
- ELSIF PosUtils.Equal( EndingFrame, 'TopMenu' ) THEN
- IF (NOT PosUtils.Equal(NextFrame, ScrnTypes.ProgramExit)) AND
- (NOT PosUtils.Equal(NextFrame, 'Banner') ) THEN
- CASE SelChar OF
- 'R': DoFrameSeq();
- | 'x': EXIT;
- | 'P': DoPrintDialog();
- | 's': ScrnUtl2.Display( DspFiles.MainFrame, 'BlankScreen' );
- ELSE
- (*fall through*)
- END;
- END;
- ELSE
- ErrorManager.WARN('Error in TopMenu loop logic');
- END;
- END;
- GenLists.DisposeList( TopMenuList );
- DspFiles.CloseDisplayFile( ScrnCompDsp );
- ErrorManager.DoTermProcs();
- END ScrnCompile.
|