home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Gold Fish 2
/
goldfish_vol2_cd1.bin
/
files
/
dev
/
obero
/
oberon-a
/
source
/
fpe
/
tooldlg.mod
< prev
next >
Wrap
Text File
|
1994-08-08
|
6KB
|
228 lines
(***************************************************************************
$RCSfile: ToolDlg.mod $
Description: Defines and implements the tool editor dialog.
Created by: fjc (Frank Copeland)
$Revision: 1.8 $
$Author: fjc $
$Date: 1994/08/08 16:14:16 $
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 ToolDlg;
(*
** $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
E := Exec, I := Intuition, Events, ISup := IntuiSup,
ISU := IntuiSupUtil, ISE := ISupEvents, Data, TDTpl := ToolDlgTpl,
SYS := SYSTEM;
(* ===== Dialog ===== *)
TYPE
Dialog *= POINTER TO DialogRec;
DialogRec = RECORD (ISE.ISupDialogRec)
accepted *: BOOLEAN;
template : TDTpl.Template;
toolInfo : Data.ToolInfo;
END; (* Dialog *)
DialogPort = POINTER TO DialogPortRec;
DialogPortRec = RECORD (ISE.ISupPortRec)
dlg : Dialog
END; (* DialogPortRec *)
CONST
(* Gadget ID's *)
ButtonID = 0;
CommandID = 1;
ArgumentsID = 2;
IsActiveID = 3;
HasConsoleID = 4;
ConsoleID = 5;
StackID = 6;
AcceptID = 7;
CancelID = 8;
(* Requester definitions *)
RequesterTitle = "Tool information";
(*------------------------------------*)
PROCEDURE (dp : DialogPort) HandleISup
( msg : I.IntuiMessagePtr )
: INTEGER;
VAR gadget : INTEGER; string : E.STRPTR; value : LONGINT;
gadgetList : ISup.GadgetList; result : INTEGER;
BEGIN (* HandleISup *)
result := Events.Continue;
gadget := msg.code;
string := msg.iAddress;
value := SYS.VAL (LONGINT, msg.iAddress);
gadgetList := SYS.VAL (ISup.GadgetList, msg.specialLink);
CASE gadget OF
ButtonID: COPY (string^, dp.dlg.toolInfo.title);
|
CommandID: COPY (string^, dp.dlg.toolInfo.command);
|
ArgumentsID: COPY (string^, dp.dlg.toolInfo.arguments);
|
IsActiveID:
IF value = 0 THEN dp.dlg.toolInfo.isActive := FALSE
ELSE dp.dlg.toolInfo.isActive := TRUE
END
|
HasConsoleID:
IF value = 0 THEN
dp.dlg.toolInfo.hasConsole := FALSE;
dp.dlg.toolInfo.console := "";
ISU.DisableGadget (gadgetList, ConsoleID, TRUE);
ELSE
dp.dlg.toolInfo.hasConsole := TRUE;
ISU.DisableGadget (gadgetList, ConsoleID, FALSE);
END
|
ConsoleID: COPY (string^, dp.dlg.toolInfo.console);
|
StackID: dp.dlg.toolInfo.stack := value;
|
AcceptID: dp.dlg.accepted := TRUE; result := Events.Stop
|
CancelID: dp.dlg.accepted := FALSE; result := Events.Stop
|
END; (* CASE gadget *)
ISup.base.ReplyMsg (msg);
RETURN result
END HandleISup;
(*------------------------------------*)
PROCEDURE MakeDialog * (VAR toolDlg : Dialog);
VAR dp : DialogPort;
BEGIN (* MakeDialog *)
NEW (toolDlg); TDTpl.InitTemplate (toolDlg.template);
toolDlg.title := SYS.ADR (RequesterTitle);
toolDlg.width := TDTpl.Width;
toolDlg.height := TDTpl.Height;
toolDlg.flags := {};
toolDlg.template.GadgetData.g0.default :=
SYS.ADR(toolDlg.toolInfo.title);
toolDlg.template.GadgetData.g1.default :=
SYS.ADR(toolDlg.toolInfo.command);
toolDlg.template.GadgetData.g2.default :=
SYS.ADR(toolDlg.toolInfo.arguments);
toolDlg.template.GadgetData.g6.default :=
SYS.ADR(toolDlg.toolInfo.console);
EXCL (toolDlg.flags, ISup.rdCenterWindow);
toolDlg.leftEdge := 40;
toolDlg.topEdge := 20;
toolDlg.gadgets :=
SYS.VAL (ISup.GadgetDataPtr, toolDlg.template.GadgetData);
NEW (dp); ASSERT (dp # NIL, 137);
dp.Init(); dp.dlg := toolDlg;
toolDlg.iSupPort := dp;
END MakeDialog;
(*------------------------------------*)
PROCEDURE FreeDialog * (VAR toolDlg : Dialog);
BEGIN (* FreeDialog *)
TDTpl.CleanupTemplate (toolDlg.template);
SYS.DISPOSE (toolDlg.iSupPort); SYS.DISPOSE (toolDlg)
END FreeDialog;
(*------------------------------------*)
PROCEDURE Activate *
( toolDlg : Dialog;
VAR toolInfo : Data.ToolInfo;
window : I.WindowPtr);
(*------------------------------------*)
PROCEDURE SetupGadgets ();
BEGIN (* SetupGadgets *)
IF toolInfo.isActive THEN
toolDlg.template.GadgetData.g3.selected := 1;
ELSE
toolDlg.template.GadgetData.g3.selected := 0;
END; (* ELSE *)
IF toolInfo.hasConsole THEN
toolDlg.template.GadgetData.g4.selected := 1;
EXCL (toolDlg.template.GadgetData.g6.flags, ISup.gdDisabled);
ELSE
toolDlg.template.GadgetData.g4.selected := 0;
INCL (toolDlg.template.GadgetData.g6.flags, ISup.gdDisabled);
toolInfo.console := "";
END; (* ELSE *)
toolDlg.template.GadgetData.g8.default :=
SYS.VAL (E.APTR, toolDlg.toolInfo.stack);
END SetupGadgets;
BEGIN (* Activate *)
ASSERT (toolDlg # NIL, 137);
toolDlg.toolInfo := toolInfo; toolDlg.accepted := FALSE;
SetupGadgets ();
IF ISE.Activate (toolDlg, window) THEN
IF toolDlg.accepted THEN toolInfo := toolDlg.toolInfo END
ELSE
ISU.DoNotice (NIL, SYS.ADR ("ToolDlg"), "Failed to open dialog")
END
END Activate;
END ToolDlg.
(***************************************************************************
$Log: ToolDlg.mod $
Revision 1.8 1994/08/08 16:14:16 fjc
Release 1.4
Revision 1.7 1994/06/21 22:06:36 fjc
- HandleISup was RETURNing without calling ReplyIMsg().
Revision 1.6 1994/06/17 17:26:27 fjc
- Updated for release
Revision 1.5 1994/06/09 13:46:29 fjc
- [bug] Event handler was using the cooked message from
IntuiSup *after* replying to it.
Revision 1.4 1994/06/04 23:49:52 fjc
- Changed to use new Amiga interface
Revision 1.3 1994/05/12 21:26:09 fjc
- Prepared for release
Revision 1.2 1994/01/24 14:33:33 fjc
Changed to conform with changes in Module Handlers:
Handler procedures now reply to any messages they handle
Revision 1.1 1994/01/15 17:32:38 fjc
Start of revision control
***************************************************************************)