home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Fresh Fish 8
/
FreshFishVol8-CD2.bin
/
bbs
/
dev
/
oberon-a-1.4ß.lha
/
Oberon-A
/
source
/
FPE
/
FPEDlg.mod
< prev
next >
Wrap
Text File
|
1994-08-21
|
26KB
|
905 lines
(***************************************************************************
$RCSfile: FPEDlg.mod $
Description: Displays and handles the main dialog for the FPE utility.
Created by: fjc (Frank Copeland)
$Revision: 1.9 $
$Author: fjc $
$Date: 1994/08/08 16:14:57 $
Copyright © 1993-1994, Frank Copeland.
This file is part of FPE.
See FPE.doc for conditions of use and distribution.
Log entries are at the end of the file.
***************************************************************************)
MODULE FPEDlg;
(*
** $C= CaseChk $I= IndexChk $L= LongAdr $N- NilChk
** $P- PortableCode $R= RangeChk $S= StackChk $T= TypeChk
** $V= OvflChk $Z= ZeroVars
**
** Compiler NIL checking is replaced by ASSERTs at the appropriate places.
*)
IMPORT
Errors, E := Exec, EU := ExecUtil, Dos, I := Intuition, ASL,
IU := IntuiUtil, Ev := Events, ARPUtil, ASLUtil, ISup := IntuiSup,
ISU := IntuiSupUtil, ISE := ISupEvents, Str := Strings, Data,
Tpl := FPETpl, SD := StringDialog, TD := ToolDlg, SYS := SYSTEM;
(* ===== Dialog Window ===== *)
CONST
(* Gadget IDs *)
ModuleID = 0;
FilesID = ModuleID + 1;
LastFilesID = ModuleID + Data.NumFiles;
ButtonsID = LastFilesID + 1;
LastButtonsID = LastFilesID + Data.NumTools;
(* Menu data indexes *)
FPEIdx = 0;
AboutItemIdx = 1;
QuitItemIdx = 2;
ProgramIdx = 3;
CreateDirIdx = 4;
OpenItemIdx = 5;
AddModuleItemIdx = 6;
RemoveModuleItemIdx = 7;
SaveItemIdx = 8;
SetupIdx = 9;
LoadItemIdx = 10;
LoadDefaultIdx = 11;
LoadAltIdx = 12;
LoadSelectIdx = 13;
SaveSetupItemIdx = 14;
SaveDefaultIdx = 15;
SaveAltIdx = 16;
SaveSelectIdx = 17;
ButtonsItemIdx = 18;
FirstButtonsSubItemIdx = ButtonsItemIdx + 1;
LastButtonsSubItemIdx = ButtonsItemIdx + Data.NumTools;
FilesItemIdx = LastButtonsSubItemIdx + 1;
FirstFilesSubItemIdx = FilesItemIdx + 1;
LastFilesSubItemIdx = FilesItemIdx + Data.NumFiles;
NumMenus = LastFilesSubItemIdx + 1;
(* Menu IDs *)
FPEID = 0;
AboutItemID = 0;
QuitItemID = 1;
ProgramID = 1;
CreateDirID = 0;
OpenItemID = 1;
AddModuleItemID = 2;
RemoveModuleItemID = 3;
SaveItemID = 4;
SetupID = 2;
LoadItemID = 0;
LoadDefaultID = 0;
LoadAltID = 1;
LoadSelectID = 2;
SaveSetupItemID = 1;
SaveDefaultID = 0;
SaveAltID = 1;
SaveSelectID = 2;
ButtonsItemID = 2;
FilesItemID = 3;
VAR
renderInfo : ISup.RenderInfoPtr;
newWindow : I.NewWindow;
window : I.WindowPtr;
programNameBuffer : ARRAY Data.FileChars + 1 OF CHAR;
template : Tpl.Template;
gadgetList : ISup.GadgetList;
menuData : ARRAY NumMenus + 1 OF ISup.MenuData;
menuList : ISup.MenuList;
CONST
WindowTitle = "FPE 1.6 (26 Jul 1994)";
ScreenTitle = "Frank's Programming Environment";
(* ===== Dialog Handler ===== *)
TYPE
Handler = POINTER TO HandlerRec;
HandlerRec = RECORD (ISE.ISupPortRec) END;
CONST
IDCMPFlags = Tpl.GadgetIDCMPFlags + {I.idcmpCloseWindow, I.idcmpMenuPick};
VAR
setupDir : Data.Path;
setupFile : Data.FileName;
handler : Handler;
(* ===== Miscellaneous ===== *)
CONST
OutOfMemory = "FPE : Out of memory";
(*------------------------------------------------------------------------*)
(* Local procedures *)
PROCEDURE* Cleanup ();
BEGIN (* Cleanup *)
IF menuList # NIL THEN ISup.base.FreeMenu (menuList) END;
IF gadgetList # NIL THEN ISup.base.FreeGadgets (gadgetList) END;
IF renderInfo # NIL THEN ISup.base.FreeRenderInfo (renderInfo) END;
Tpl.Cleanup (template);
END Cleanup;
(*------------------------------------------------------------------------*)
(* ===== Dialog window procedures ===== *)
(*------------------------------------*)
PROCEDURE Init * ();
PROCEDURE InitGadgets ();
VAR index, result : INTEGER;
BEGIN (* InitGadgets *)
index := 0;
WHILE index < Data.NumFiles DO
template.GadgetData.g1 [index].text :=
SYS.ADR (Data.extensions [index]);
INC (index);
END; (* WHILE *)
index := 0;
WHILE index < Data.NumTools DO
template.GadgetData.g2 [index].text :=
SYS.ADR (Data.tools [index].title);
INC (index)
END; (* WHILE *)
template.TextData[1].text := SYS.ADR(programNameBuffer);
renderInfo :=
ISup.base.GetRenderInfo (NIL, Tpl.RenderInfoFlags);
Errors.Assert (renderInfo # NIL, "FPE : failed to get render info");
gadgetList :=
ISup.base.CreateGadgets
(renderInfo, template.GadgetData.g0, 0, 0, NIL);
Errors.Assert (gadgetList # NIL, "FPE : failed to create gadgets");
END InitGadgets;
PROCEDURE InitMenus ();
CONST
On = {}; Off = {ISup.mdDisabled};
VAR index : INTEGER;
BEGIN (* InitMenus *)
menuData [FPEIdx].type := ISup.title;
menuData [FPEIdx].flags := On;
menuData [FPEIdx].name := SYS.ADR("FPE");
menuData [AboutItemIdx].type := ISup.item;
menuData [AboutItemIdx].flags := On;
menuData [AboutItemIdx].name := SYS.ADR("About ...");
menuData [QuitItemIdx].type := ISup.item;
menuData [QuitItemIdx].flags := On;
menuData [QuitItemIdx].name := SYS.ADR("Quit");
menuData [QuitItemIdx].commandKey := SYS.ADR("Q");
menuData [ProgramIdx].type := ISup.title;
menuData [ProgramIdx].flags := On;
menuData [ProgramIdx].name := SYS.ADR("Project");
menuData [CreateDirIdx].type := ISup.item;
menuData [CreateDirIdx].flags := On;
menuData [CreateDirIdx].name := SYS.ADR("Create Directory ...");
menuData [OpenItemIdx].type := ISup.item;
menuData [OpenItemIdx].flags := On;
menuData [OpenItemIdx].name := SYS.ADR("Select Project ...");
menuData [AddModuleItemIdx].type := ISup.item;
menuData [AddModuleItemIdx].flags := On;
menuData [AddModuleItemIdx].name := SYS.ADR("Add Module ...");
menuData [RemoveModuleItemIdx].type := ISup.item;
menuData [RemoveModuleItemIdx].flags := On;
menuData [RemoveModuleItemIdx].name := SYS.ADR("Remove Module ...");
menuData [SaveItemIdx].type := ISup.item;
menuData [SaveItemIdx].flags := On;
menuData [SaveItemIdx].name := SYS.ADR("Save Module List");
menuData [SetupIdx].type := ISup.title;
menuData [SetupIdx].flags := On;
menuData [SetupIdx].name := SYS.ADR("Setup");
menuData [LoadItemIdx].type := ISup.item;
menuData [LoadItemIdx].flags := On;
menuData [LoadItemIdx].name := SYS.ADR("Load Setup");
menuData [LoadDefaultIdx].type := ISup.subItem;
menuData [LoadDefaultIdx].flags := On;
menuData [LoadDefaultIdx].name := SYS.ADR ("Default Setup");
menuData [LoadAltIdx].type := ISup.subItem;
menuData [LoadAltIdx].flags := On;
menuData [LoadAltIdx].name := SYS.ADR ("Alternate Setup");
menuData [LoadSelectIdx].type := ISup.subItem;
menuData [LoadSelectIdx].flags := On;
menuData [LoadSelectIdx].name := SYS.ADR ("Select Setup ...");
menuData [SaveSetupItemIdx].type := ISup.item;
menuData [SaveSetupItemIdx].flags := On;
menuData [SaveSetupItemIdx].name := SYS.ADR("Save Setup");
menuData [SaveDefaultIdx].type := ISup.subItem;
menuData [SaveDefaultIdx].flags := On;
menuData [SaveDefaultIdx].name := SYS.ADR ("Default Setup");
menuData [SaveAltIdx].type := ISup.subItem;
menuData [SaveAltIdx].flags := On;
menuData [SaveAltIdx].name := SYS.ADR ("Alternate Setup");
menuData [SaveSelectIdx].type := ISup.subItem;
menuData [SaveSelectIdx].flags := On;
menuData [SaveSelectIdx].n