(******************************************************************************
*                                                                             *
*    Programmname:  m2MakerMain                                               *
*                                                                             *
*    Stand:         20.11.89                            Uhrzeit:  21:28:12    *
*                                                                             *
*    Bearbeitet mit dem MODULETool V1.1         (©) by  Thomas Stolze 1989    *
*                                                                             *
******************************************************************************)

(* $R- *) (* $V- *) (* $S- *) (* $N- *) (* $F- *)
MODULE m2MakerMain;

FROM Arts             IMPORT Terminate,TermProcedure;
FROM SYSTEM           IMPORT ADR;
FROM Intuition        IMPORT GadgetPtr,IDCMPFlags,IDCMPFlagSet,IntuiMessagePtr;
FROM Exec             IMPORT GetMsg,ReplyMsg,WaitPort;
FROM Dos              IMPORT Delay;
FROM RequesterWindow  IMPORT DeleteDatei,InfoRequester,InstallTimerTask,
                             OptionenRequester,Printer,RenameDatei;
FROM m2Maker          IMPORT BufferString,Cleanupm2Maker,DirPtr,F1,F10,F2,F3,F4,
                             F5,F6,F7,F8,F9,GadgetFeldListe,GadgetNamen,
                             MemoryTask,projectFlag,SizeCLIWindow,Window,window;
FROM InputEvent       IMPORT Qualifiers,QualifierSet;
FROM Str              IMPORT Concat,Copy;
FROM DirectorySupport IMPORT Down,MasterControl,ModifyListDir,NewDir,Up;
FROM m2MakerRoutines  IMPORT Backup,BackupPfad,Clear,CompileProject,Compiler,
                             Convert,Editor,EditorTextGadget,ExecuteBatch,
                             Invers,Linker,LoadOpts,Make,NewCli,NewFile,Project,
                             ProjektPfad,ProjektSpeichern,Prueffile,Run,
                             SaveOpts,Saver,SelectedFile,SmallWindow,
                             StartDefMaker;

CONST cursorUp   = 4CH;
      cursorDown = 4DH;
      return     = 44H;

TYPE  IntuiParameterPtr = POINTER TO IntuiParameter;
      IntuiParameter    = RECORD
                            mousex,
                            mousey,
                            key    : INTEGER;
                          END;

VAR  dummy          : ARRAY [0..108] OF CHAR;
     class          : IDCMPFlagSet;
     qualifier      : QualifierSet;
     code,menu,item : CARDINAL;
     msg            : IntuiMessagePtr;
     gadgAuswahl    : GadgetPtr;
     erfolg,
     bigWindow      : BOOLEAN;

PROCEDURE Cleanup;
BEGIN
  Cleanupm2Maker;
END Cleanup;

BEGIN
  TermProcedure(Cleanup); SizeCLIWindow;
  window:=Window(); Delay(25);
  MemoryTask:=InstallTimerTask();
  Clear;
  LoadOpts;
  
  Copy(dummy,BufferString[9]); Concat(dummy,BufferString[3]);
  IF Prueffile(dummy,FALSE) THEN
     Copy(BufferString[9],DirPtr^.Pfad);
     Copy(BufferString[3],DirPtr^.Auswahl);
     NewDir(FALSE);
  END;
  
  ExecuteBatch;
  Convert(ADR(GadgetFeldListe[projectGadget])); Project;
  
    LOOP
      WaitPort(window^.userPort);
        msg:=GetMsg(window^.userPort);
        class:=msg^.class;
        code:=msg^.code;
        DirPtr^.intuipar.key:=msg^.code;
        DirPtr^.intuipar.mousex:=msg^.mouseX;
        DirPtr^.intuipar.mousey:=msg^.mouseY;
        qualifier:=msg^.qualifier;
        gadgAuswahl:=msg^.iAddress;
      ReplyMsg(msg);
        IF (closeWindow IN class) THEN
           EXIT;
        ELSIF (gadgetUp IN class) THEN
           CASE gadgAuswahl^.gadgetID OF
                0    :  Editor;
           |    1    :  erfolg:=Compiler();
           |    2    :  Linker;
           |    3    :  Run;
           |    4    :  Make;
           |    5    :  NewDir(FALSE);
           |    6    :  LoadOpts;
           |    7    :  SaveOpts;
           |    8    :  Backup;
           |    10   :  EditorTextGadget;
           |    13   :  Clear;
           |    14   :  Printer;
           |    15   :  BackupPfad;
           |    17   :  Project;
           |    18   :  ProjektPfad;
           |    21   :  ModifyListDir;
           |    22   :  IF projectFlag THEN 
                           Invers(ADR(GadgetFeldListe[projectGadget]));
                           Project
                        END; NewDir(TRUE);
           |    23   :  OptionenRequester;
           |    24   :  SmallWindow;
           |    25   :  DeleteDatei;
           |    26   :  NewFile;
           |    27   :  StartDefMaker;
           |    35   :  Down;
           |    36   :  Up;
           ELSE
           END;
        ELSIF (menuPick IN class) THEN
           menu:=(code MOD 32); item:=(code DIV 32) MOD 32;
           CASE menu OF
            0:
              CASE item OF
                0 : InfoRequester;
              | 1 : Saver;
              | 2 : ProjektSpeichern;
              | 3 : NewCli;
              | 4 : EXIT;
              END;
          |  1:  
              CASE item OF
                0 : Convert(ADR(GadgetFeldListe[editorGadget]));  Editor;
              | 1 : Convert(ADR(GadgetFeldListe[compilerGadget]));
                    erfolg:=Compiler();
              | 2 : Convert(ADR(GadgetFeldListe[linkerGadget]));  Linker;
              | 3 : Convert(ADR(GadgetFeldListe[runGadget]));     Run;
              | 4 : Convert(ADR(GadgetFeldListe[makeGadget]));    Make;
              | 5 : CompileProject;
              ELSE
              END;  
          |  2:
              CASE item OF
                0 : OptionenRequester;
              | 1 : LoadOpts;
              | 2 : SaveOpts;
              ELSE
              END;
          |  3: 
              CASE item OF
                0 : RenameDatei;
              | 1 : DeleteDatei;
              ELSE
              END;      
           ELSE
           END;
        ELSIF (mouseButtons IN class) OR (rawKey IN class) THEN
           IF MasterControl() THEN
              SelectedFile; 
           ELSE
              CASE code OF 
                F1 : Convert(ADR(GadgetFeldListe[editorGadget]));  Editor;
              | F2 : Convert(ADR(GadgetFeldListe[compilerGadget]));
                     erfolg:=Compiler();
              | F3 : Convert(ADR(GadgetFeldListe[linkerGadget]));  Linker;
              | F4 : Convert(ADR(GadgetFeldListe[runGadget]));     Run;
              | F5 : Convert(ADR(GadgetFeldListe[makeGadget]));    Make;
              | F6 : NewDir(FALSE);
              | F7 : OptionenRequester;
              | F8 : StartDefMaker;
              | F9 : Convert(ADR(GadgetFeldListe[copyGadget]));    Backup;
              | F10: Printer;
              ELSE
              END;
           END;
            
           IF (control IN qualifier) THEN
               CASE code OF 
                    33H : NewCli;
               |    10H : EXIT;
               ELSE
               END;
           END;
        ELSIF (refreshWindow IN class) THEN
        END;
    END;
    Terminate(0);
END m2MakerMain.
