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 >
Text File  |  1994-08-21  |  26KB  |  905 lines

  1. (***************************************************************************
  2.  
  3.      $RCSfile: FPEDlg.mod $
  4.   Description: Displays and handles the main dialog for the FPE utility.
  5.  
  6.    Created by: fjc (Frank Copeland)
  7.     $Revision: 1.9 $
  8.       $Author: fjc $
  9.         $Date: 1994/08/08 16:14:57 $
  10.  
  11.   Copyright © 1993-1994, Frank Copeland.
  12.   This file is part of FPE.
  13.   See FPE.doc for conditions of use and distribution.
  14.  
  15.   Log entries are at the end of the file.
  16.  
  17. ***************************************************************************)
  18.  
  19. MODULE FPEDlg;
  20.  
  21. (*
  22. ** $C= CaseChk       $I= IndexChk  $L= LongAdr   $N- NilChk
  23. ** $P- PortableCode  $R= RangeChk  $S= StackChk  $T= TypeChk
  24. ** $V= OvflChk       $Z= ZeroVars
  25. **
  26. ** Compiler NIL checking is replaced by ASSERTs at the appropriate places.
  27. *)
  28.  
  29. IMPORT
  30.   Errors, E := Exec, EU := ExecUtil, Dos, I := Intuition, ASL,
  31.   IU := IntuiUtil, Ev := Events, ARPUtil, ASLUtil, ISup := IntuiSup,
  32.   ISU := IntuiSupUtil, ISE := ISupEvents, Str := Strings, Data,
  33.   Tpl := FPETpl, SD := StringDialog, TD := ToolDlg, SYS := SYSTEM;
  34.  
  35.  
  36. (* ===== Dialog Window ===== *)
  37.  
  38. CONST
  39.  
  40. (* Gadget IDs *)
  41.  
  42.   ModuleID      = 0;
  43.  
  44.   FilesID       = ModuleID + 1;
  45.   LastFilesID   = ModuleID + Data.NumFiles;
  46.  
  47.   ButtonsID     = LastFilesID + 1;
  48.   LastButtonsID = LastFilesID + Data.NumTools;
  49.  
  50. (* Menu data indexes *)
  51.  
  52.   FPEIdx                   = 0;
  53.     AboutItemIdx             = 1;
  54.     QuitItemIdx              = 2;
  55.  
  56.   ProgramIdx               = 3;
  57.     CreateDirIdx             = 4;
  58.     OpenItemIdx              = 5;
  59.     AddModuleItemIdx         = 6;
  60.     RemoveModuleItemIdx      = 7;
  61.     SaveItemIdx              = 8;
  62.  
  63.   SetupIdx                 = 9;
  64.     LoadItemIdx              = 10;
  65.       LoadDefaultIdx           = 11;
  66.       LoadAltIdx               = 12;
  67.       LoadSelectIdx            = 13;
  68.     SaveSetupItemIdx         = 14;
  69.       SaveDefaultIdx           = 15;
  70.       SaveAltIdx               = 16;
  71.       SaveSelectIdx            = 17;
  72.     ButtonsItemIdx           = 18;
  73.       FirstButtonsSubItemIdx   = ButtonsItemIdx + 1;
  74.       LastButtonsSubItemIdx    = ButtonsItemIdx + Data.NumTools;
  75.     FilesItemIdx             = LastButtonsSubItemIdx + 1;
  76.       FirstFilesSubItemIdx     = FilesItemIdx + 1;
  77.       LastFilesSubItemIdx      = FilesItemIdx + Data.NumFiles;
  78.  
  79.   NumMenus = LastFilesSubItemIdx + 1;
  80.  
  81. (* Menu IDs *)
  82.  
  83.   FPEID               = 0;
  84.     AboutItemID         = 0;
  85.     QuitItemID          = 1;
  86.  
  87.   ProgramID           = 1;
  88.     CreateDirID         = 0;
  89.     OpenItemID          = 1;
  90.     AddModuleItemID     = 2;
  91.     RemoveModuleItemID  = 3;
  92.     SaveItemID          = 4;
  93.  
  94.   SetupID             = 2;
  95.     LoadItemID          = 0;
  96.       LoadDefaultID       = 0;
  97.       LoadAltID           = 1;
  98.       LoadSelectID        = 2;
  99.     SaveSetupItemID     = 1;
  100.       SaveDefaultID       = 0;
  101.       SaveAltID           = 1;
  102.       SaveSelectID        = 2;
  103.     ButtonsItemID       = 2;
  104.     FilesItemID         = 3;
  105.  
  106. VAR
  107.  
  108.   renderInfo         : ISup.RenderInfoPtr;
  109.   newWindow          : I.NewWindow;
  110.   window             : I.WindowPtr;
  111.   programNameBuffer  : ARRAY Data.FileChars + 1 OF CHAR;
  112.   template           : Tpl.Template;
  113.   gadgetList         : ISup.GadgetList;
  114.   menuData           : ARRAY NumMenus + 1 OF ISup.MenuData;
  115.   menuList           : ISup.MenuList;
  116.  
  117.  
  118. CONST
  119.   WindowTitle = "FPE 1.6 (26 Jul 1994)";
  120.   ScreenTitle = "Frank's Programming Environment";
  121.  
  122.  
  123. (* ===== Dialog Handler ===== *)
  124.  
  125. TYPE
  126.  
  127.   Handler = POINTER TO HandlerRec;
  128.   HandlerRec = RECORD (ISE.ISupPortRec) END;
  129.  
  130. CONST
  131.   IDCMPFlags = Tpl.GadgetIDCMPFlags + {I.idcmpCloseWindow, I.idcmpMenuPick};
  132.  
  133. VAR
  134.   setupDir  : Data.Path;
  135.   setupFile : Data.FileName;
  136.   handler   : Handler;
  137.  
  138. (* ===== Miscellaneous ===== *)
  139.  
  140. CONST
  141.  
  142.   OutOfMemory = "FPE : Out of memory";
  143.  
  144.  
  145. (*------------------------------------------------------------------------*)
  146. (* Local procedures *)
  147.  
  148.  
  149. PROCEDURE* Cleanup ();
  150.  
  151. BEGIN (* Cleanup *)
  152.   IF menuList # NIL   THEN ISup.base.FreeMenu (menuList) END;
  153.   IF gadgetList # NIL THEN ISup.base.FreeGadgets (gadgetList) END;
  154.   IF renderInfo # NIL THEN ISup.base.FreeRenderInfo (renderInfo) END;
  155.   Tpl.Cleanup (template);
  156. END Cleanup;
  157.  
  158.  
  159. (*------------------------------------------------------------------------*)
  160. (* ===== Dialog window procedures ===== *)
  161.  
  162.  
  163. (*------------------------------------*)
  164. PROCEDURE Init * ();
  165.  
  166.   PROCEDURE InitGadgets ();
  167.  
  168.     VAR index, result : INTEGER;
  169.  
  170.   BEGIN (* InitGadgets *)
  171.     index := 0;
  172.     WHILE index < Data.NumFiles DO
  173.       template.GadgetData.g1 [index].text :=
  174.         SYS.ADR (Data.extensions [index]);
  175.       INC (index);
  176.     END; (* WHILE *)
  177.  
  178.     index := 0;
  179.     WHILE index < Data.NumTools DO
  180.       template.GadgetData.g2 [index].text  :=
  181.         SYS.ADR (Data.tools [index].title);
  182.       INC (index)
  183.     END; (* WHILE *)
  184.  
  185.     template.TextData[1].text := SYS.ADR(programNameBuffer);
  186.  
  187.     renderInfo :=
  188.       ISup.base.GetRenderInfo (NIL, Tpl.RenderInfoFlags);
  189.     Errors.Assert (renderInfo # NIL, "FPE : failed to get render info");
  190.  
  191.     gadgetList :=
  192.       ISup.base.CreateGadgets
  193.         (renderInfo, template.GadgetData.g0, 0, 0, NIL);
  194.     Errors.Assert (gadgetList # NIL, "FPE : failed to create gadgets");
  195.   END InitGadgets;
  196.  
  197.   PROCEDURE InitMenus ();
  198.  
  199.     CONST
  200.       On = {}; Off = {ISup.mdDisabled};
  201.  
  202.     VAR index : INTEGER;
  203.  
  204.   BEGIN (* InitMenus *)
  205.     menuData [FPEIdx].type := ISup.title;
  206.     menuData [FPEIdx].flags := On;
  207.     menuData [FPEIdx].name := SYS.ADR("FPE");
  208.  
  209.       menuData [AboutItemIdx].type := ISup.item;
  210.       menuData [AboutItemIdx].flags := On;
  211.       menuData [AboutItemIdx].name := SYS.ADR("About ...");
  212.  
  213.       menuData [QuitItemIdx].type := ISup.item;
  214.       menuData [QuitItemIdx].flags := On;
  215.       menuData [QuitItemIdx].name := SYS.ADR("Quit");
  216.       menuData [QuitItemIdx].commandKey := SYS.ADR("Q");
  217.  
  218.     menuData [ProgramIdx].type := ISup.title;
  219.     menuData [ProgramIdx].flags := On;
  220.     menuData [ProgramIdx].name := SYS.ADR("Project");
  221.  
  222.       menuData [CreateDirIdx].type := ISup.item;
  223.       menuData [CreateDirIdx].flags := On;
  224.       menuData [CreateDirIdx].name := SYS.ADR("Create Directory ...");
  225.  
  226.       menuData [OpenItemIdx].type := ISup.item;
  227.       menuData [OpenItemIdx].flags := On;
  228.       menuData [OpenItemIdx].name := SYS.ADR("Select Project ...");
  229.  
  230.       menuData [AddModuleItemIdx].type := ISup.item;
  231.       menuData [AddModuleItemIdx].flags := On;
  232.       menuData [AddModuleItemIdx].name := SYS.ADR("Add Module ...");
  233.  
  234.       menuData [RemoveModuleItemIdx].type := ISup.item;
  235.       menuData [RemoveModuleItemIdx].flags := On;
  236.       menuData [RemoveModuleItemIdx].name := SYS.ADR("Remove Module ...");
  237.  
  238.       menuData [SaveItemIdx].type := ISup.item;
  239.       menuData [SaveItemIdx].flags := On;
  240.       menuData [SaveItemIdx].name := SYS.ADR("Save Module List");
  241.  
  242.     menuData [SetupIdx].type := ISup.title;
  243.     menuData [SetupIdx].flags := On;
  244.     menuData [SetupIdx].name := SYS.ADR("Setup");
  245.  
  246.       menuData [LoadItemIdx].type := ISup.item;
  247.       menuData [LoadItemIdx].flags := On;
  248.       menuData [LoadItemIdx].name := SYS.ADR("Load Setup");
  249.  
  250.         menuData [LoadDefaultIdx].type := ISup.subItem;
  251.         menuData [LoadDefaultIdx].flags := On;
  252.         menuData [LoadDefaultIdx].name := SYS.ADR ("Default Setup");
  253.  
  254.         menuData [LoadAltIdx].type := ISup.subItem;
  255.         menuData [LoadAltIdx].flags := On;
  256.         menuData [LoadAltIdx].name := SYS.ADR ("Alternate Setup");
  257.  
  258.         menuData [LoadSelectIdx].type := ISup.subItem;
  259.         menuData [LoadSelectIdx].flags := On;
  260.         menuData [LoadSelectIdx].name := SYS.ADR ("Select Setup ...");
  261.  
  262.       menuData [SaveSetupItemIdx].type := ISup.item;
  263.       menuData [SaveSetupItemIdx].flags := On;
  264.       menuData [SaveSetupItemIdx].name := SYS.ADR("Save Setup");
  265.  
  266.         menuData [SaveDefaultIdx].type := ISup.subItem;
  267.         menuData [SaveDefaultIdx].flags := On;
  268.         menuData [SaveDefaultIdx].name := SYS.ADR ("Default Setup");
  269.  
  270.         menuData [SaveAltIdx].type := ISup.subItem;
  271.         menuData [SaveAltIdx].flags := On;
  272.         menuData [SaveAltIdx].name := SYS.ADR ("Alternate Setup");
  273.  
  274.         menuData [SaveSelectIdx].type := ISup.subItem;
  275.         menuData [SaveSelectIdx].flags := On;
  276.         menuData [SaveSelectIdx].n