ORCA-Pascal/Tool.Interface/ControlMgr.pas

548 lines
20 KiB
ObjectPascal

{$keep 'ControlMgr'}
unit ControlMgr;
interface
{********************************************************
*
* Control Manager Interface File
*
* Other USES files needed: Common
*
* Other Tool Sets Needed: Tool Locator, Memory Manager,
* Miscellaneous Tool Set, Quick Draw II,
* Event Manager, Window Manager,
* LineEdit Tool Set (if using StatTextControl
* or LineEditControl), QDAuxilliary Tool Set
* (if using PictureControl or IconButtonControl),
* TextEdit Tool Set (if using TextEditControl),
* Menu Manager (if using PopUpControl), List
* Manager (if using ListControl).
*
*
* Copyright 1987-1992, 1993
* By the Byte Works, Inc.
* All Rights Reserved
*
*********************************************************}
uses
Common;
const
ctlInVis = $0080; (* invisible mask for any type ctl *)
(* Simple button control flag values *)
simpRound = $0000; (* single outlined, round cornered *)
simpBRound = $0001; (* bold outlined, round cornered *)
simpSquare = $0002; (* single outlined, square cornered *)
simpDropSquare = $0003; (* single outlined, square cornered,*)
(* drop shadowed *)
family = $007F; (* radio button family number *)
(* Scroll bar control flag values *)
upFlag = $0001; (* up arrow on scroll bar *)
downFlag = $0002; (* down arrow on scroll bar *)
leftFlag = $0004; (* left arrow on scroll bar *)
rightFlag = $0008; (* right arrow on scroll bar *)
horScroll = $0010; (* horizontal scroll bar *)
(* Standard Control procedures *)
SimpleProc = $00000000; (* simple button standard control *)
CheckProc = $02000000; (* simple check-box std control *)
RadioProc = $04000000; (* radio button standard control *)
ScrollProc = $06000000; (* scroll bar standard control *)
GrowProc = $08000000; (* size box standard control *)
(* NewControl2 procRef values for standard control types *)
cSimpleButtonControl = $80000000;
cCheckControl = $82000000;
cRadioControl = $84000000;
cScrollBarControl = $86000000;
cGrowControl = $88000000;
cStatTextControl = $81000000;
cEditLineControl = $83000000;
cEditTextControl = $85000000;
cPopUpControl = $87000000;
cListControl = $89000000;
cIconButtonControl = $07FF0001;
cPictureControl = $8D000000;
(* DefProc message parameters *)
drawCtl = $00; (* draw the control *)
calcCRect = $01; (* compute the rectangle to drag *)
testCtl = $02; (* test where mouse button pressed *)
initCtl = $03; (* perform additional control init *)
dispCtl = $04; (* take additional disposal actions *)
posCtl = $05; (* move control's indicator *)
thumbCtl = $06; (* compute parms for dragging indic. *)
dragCtl = $07; (* drag either indicator or control *)
autoTrack = $08; (* called while dragging if -1 passed *)
(* to TrackControl *)
newValue = $09; (* called when ctl gets new value *)
setParams = $0A; (* called when ctl gets add. parms *)
moveCtl = $0B; (* called when control moves *)
recSize = $0C; (* return ctl record size in bytes *)
ctlHandleEvent = $0D; (* handle keystrokes/menu selections *)
ctlChangeTarget = $0E; (* make control active/inactive *)
ctlChangeBounds = $0F; (* change bounds rectangle of control *)
ctlWindChangeSize = $10; (* window has grown or been zoomed *)
ctlHandleTab = $11; (* control was tabbed to *)
ctlNotifyMultiPart = $12; (* multipart control must be hidden, *)
(* drawn, or shown *)
ctlWinStateChange = $13; (* window state has changed *)
(* axis parameters *)
noConstraint = $0000; (* no movement constraint *)
hAxisOnly = $0001; (* constrain movement to horiz. axis *)
vAxisOnly = $0002; (* constrain movement to vertical axis *)
(* part codes *)
NoPart = $00; (* no part *)
SimpleButton = $02; (* simple button *)
CheckBox = $03; (* check box *)
RadioButton = $04; (* radio button *)
UpArrow = $05; (* up arrow on scroll bar *)
DownArrow = $06; (* down arrow on scroll bar *)
PageUp = $07; (* page up *)
PageDown = $08; (* page down *)
GrowBox = $0A; (* size box *)
Thumb = $81; (* thumb *)
(* Hilite control parameters *)
noHilite = $0000; (* hilight control *)
inactiveHilite = $00FF; (* remove hilighting from control *)
(* Control Manager constants (upper 8 bits) of ctlMoreFlags field *)
fCtlTarget = $8000; (* ctl is currently active control *)
fCtlCanBeTarget = $4000; (* ctl can be made active control *)
fCtlWantEvents = $2000; (* call ctl when SendEventToCtl activated *)
fCtlProcRefNotPtr = $1000; (* if set, ProcRef = ID of def proc rtn, *)
(* else ProcRef = ptr to defproc rtn *)
fCtlTellAboutSize = $0800; (* notify ctl when window size changes *)
fCtlIsMultiPart = $0400; (* notify ctl needs to be hidden *)
(* defProc constants (lower 8 bits) of ctlMoreFlags field *)
(* Bits 0 and 1 describe title reference: *)
titleIsPtr = $0;
titleIsHandle = $1;
titleIsResource = $2;
(* Bits 2 and 3 describe the color table reference: *)
colorTableIsPtr = $0;
colorTableIsHandle = $4;
colorTableIsResource = $8;
type
(* Control record is defined in the Common.intf interface file *)
(* Scroll bar color table is defined in the Common.intf interface file *)
boxColors = record (* check box color table *)
boxReserved: integer;
boxNor: integer;
boxSel: integer;
boxTitle: integer;
end;
bttnColors = record (* button color table *)
bttnOutline: integer;
bttnNorBack: integer;
bttnSelBack: integer;
bttnNorText: integer;
bttnSelText: integer;
end;
limitBlk = record (* limit block *)
boundRect: rect;
slopRect: rect;
axisParam: integer;
dragPatt: ptr;
end;
radioColors = record (* radio button color table *)
radReserved: integer;
radNor: integer;
radSel: integer;
radTitle: integer;
end;
(* Control templates *)
customControl = record
pCount: integer;
ID: longint;
boundsRect: rect;
procRef: longint;
flag: integer;
moreFlags: integer;
refCon: longint;
(* This block is user-defined: set your own limit. *)
data: packed array [0..255] of byte;
end;
simpleButtonControl = record
pCount: integer;
ID: longint;
boundsRect: rect;
procRef: longint;
flag: integer;
moreFlags: integer;
refCon: longint;
titleRef: longint;
colorTblRef: longint; (* optional *)
keyEquiv: keyEquivRec; (* optional *)
end;
checkOrRadioControl = record
pCount: integer;
ID: longint;
boundsRect: rect;
procRef: longint;
flag: integer;
moreFlags: integer;
refCon: longint;
titleRef: longint;
initialValue: integer;
colorTblRef: longint; (* optional *)
keyEquiv: keyEquivRec; (* optional *)
end;
scrollControl = record
pCount: integer;
ID: longint;
boundsRect: rect;
procRef: longint;
flag: integer;
moreFlags: integer;
refCon: longint;
maxSize: integer;
viewSize: integer;
initialValue: integer;
colorTblRef: longint; (* optional *)
end;
statTextControl = record
pCount: integer;
ID: longint;
boundsRect: rect;
procRef: longint;
flag: integer;
moreFlags: integer;
refCon: longint;
textRef: longint;
textSize: integer; (* optional *)
just: integer; (* optional *)
end;
editLineControl = record
pCount: integer;
ID: longint;
boundsRect: rect;
procRef: longint;
flag: integer;
moreFlags: integer;
refCon: longint;
maxSize: integer;
defaultRef: longint;
end;
editTextControl = record
pCount: integer;
controlID: longint;
boundsRect: rect;
procRef: longint; (* must be $85000000 *)
flags: integer;
moreflags: integer;
refCon: longint;
textFlags: longint;
indentRect: rect; (* this, and the rest of the fields, *)
vertBar: longint; (* are optional *)
vertAmount: integer;
horzBar: longint; (* reserved - set to nil *)
horzAmount: integer; (* reserved - set to 0 *)
styleRef: longint;
textDescriptor: integer;
textRef: longint;
textLength: longint;
maxChars: longint;
maxLines: longint;
maxCharsPerLine: integer;
maxHeight: integer;
colorRef: longint;
drawMode: integer;
filterProcPtr: procPtr;
end;
popUpControl = record
pCount: integer;
ID: longint;
boundsRect: rect;
procRef: longint;
flag: integer;
moreFlags: integer;
refCon: longint;
titleWidth: integer;
menuRef: longint;
initialValue: integer;
colorRef: longint; (* optional *)
end;
listControl = record
pCount: integer;
ID: longint;
boundsRect: rect;
procRef: longint;
flag: integer;
moreFlags: integer;
refCon: longint;
listSize: integer;
listView: integer;
listType: integer;
listStart: integer;
listDraw: procPtr;
listMemHeight: integer;
listMemSize: integer;
listRef: longint;
colorRef: longint;
end;
growControl = record
pCount: integer;
ID: longint;
boundsRect: rect;
procRef: longint;
flag: integer;
moreFlags: integer;
refCon: longint;
colorRef: longint; (* optional *)
end;
pictureControl = record
pCount: integer;
ID: longint;
boundsRect: rect;
procRef: longint;
flag: integer;
moreFlags: integer;
refCon: longint;
pictureRef: longint;
end;
iconButtonControl = record
pCount: integer;
ID: longint;
boundsRect: rect;
procRef: longint;
flag: integer;
moreFlags: integer;
refCon: longint;
iconRef: longint;
titleRef: longint; (* optional *)
colorTblRef: longint; (* optional *)
displayMode: integer; (* optional *)
keyEquiv: keyEquivRec; (* optional *)
end;
rectangleControl = record
pCount: integer;
ID: longint;
boundsRect: rect;
procRef: longint;
flag: integer;
moreFlags: integer;
refCon: longint;
penHeight: integer;
penWidth: integer;
penMask: mask;
penPattern: pattern;
end;
thermometerControl = record
pCount: integer;
ID: longint;
boundsRect: rect;
procRef: longint;
flag: integer;
moreFlags: integer;
refCon: longint;
value: integer;
data: integer;
colorTblRef: longint; (* optional *)
end;
procedure CtlBootInit; tool ($10, $01); (* WARNING: an application should
NEVER make this call *)
procedure CtlStartup (userID, dPageAddr: integer); tool ($10, $02);
procedure CtlShutDown; tool ($10, $03);
function CtlVersion: integer; tool ($10, $04);
procedure CtlReset; tool ($10, $05); (* WARNING: an application should
NEVER make this call *)
function CtlStatus: boolean; tool ($10, $06);
function CallCtlDefProc (theControl: ctlRecHndl; message: integer;
param: univ longint): longint; tool ($10, $2C);
function CMLoadResource (resourceType: integer; resourceID: longint): handle;
tool ($10, $32); (* WARNING: an application should
NEVER make this call *)
procedure CMReleaseResource (resourceType: integer; resourceID: longint);
tool ($10, $33); (* WARNING: an application should
NEVER make this call *)
procedure CtlNewRes; tool ($10, $12);
procedure DisposeControl (theControl: ctlRecHndl); tool ($10, $0A);
procedure DragControl (startX, startY: integer;
var limitRectPtr, slopRectPtr: rect; axis: integer;
theControl: ctlRecHndl); tool ($10, $17);
(* DragRect returns 2 integers; the hi word = amt X changed; *)
(* the lo word = amt Y changed *)
function DragRect (actionProc: procPtr; var dragPattern: pattern;
startX, startY: integer;
var dragRect, limitRect, slopRect: rect;
dragFlag: integer): longint; tool ($10, $1D);
procedure DrawControls (theWindow: grafPortPtr); tool ($10, $10);
procedure DrawOneCtl (theControl: ctlRecHndl); tool ($10, $25);
procedure EraseControl (theControl: ctlRecHndl); tool ($10, $24);
function FindControl (var foundCtlPtr: ctlRecHndl; pointX, pointY: integer;
theWindow: grafPortPtr): integer; tool ($10, $13);
function FindRadioButton (theWindow: grafPortPtr; famNum: integer): integer;
tool ($10, $39);
function FindTargetCtl: ctlRecHndl; tool ($10, $26);
function GetCtlAction (theControl: ctlRecHndl): procPtr; tool ($10, $21);
function GetCtlHandleFromID (theWindow: grafPortPtr; ctlID: univ longint):
ctlRecHndl; tool ($10, $30);
function GetCtlID (theControl: ctlRecHndl): longint; tool ($10, $2A);
function GetCtlDPage: integer; tool ($10, $1F);
function GetCtlMoreFlags (theControl: ctlRecHndl): integer; tool ($10, $2E);
function GetCtlParamPtr: longint; tool ($10, $35);
(* GetCtlParams returns 2 integers: both are values of additional ctl parms *)
function GetCtlParams (theControl: ctlRecHndl): longint; tool ($10, $1C);
function GetCtlRefCon (theControl: ctlRecHndl): longint; tool ($10, $23);
function GetCtlTitle (theControl: ctlRecHndl): pStringPtr; tool ($10, $0D);
function GetCtlValue (theControl: ctlRecHndl): integer; tool ($10, $1A);
procedure GetLETextByID (theWindow: grafPortPtr; controlID: longint;
var text: pString); tool ($10, $3B);
(* GrowSize returns 2 integers: lo word = height; hi word = width *)
function GrowSize: longint; tool ($10, $1E);
procedure HideControl (theControl: ctlRecHndl); tool ($10, $0E);
procedure HiliteControl (hiliteState: integer; theControl: ctlRecHndl);
tool ($10, $11);
procedure InvalCtls (theWindow: grafPortPtr); tool ($10, $37);
procedure KillControls (theWindow: grafPortPtr); tool ($10, $0B);
function MakeNextCtlTarget: ctlRecHndl; tool ($10, $27);
procedure MakeThisCtlTarget (theControl: ctlRecHndl); tool ($10, $28);
procedure MoveControl (newX, newY: integer; theControl: ctlRecHndl);
tool ($10, $16);
function NewControl (theWindow: grafPortPtr; var boundsRect: rect;
title: univ pStringPtr;
flag, value, param1, param2: integer;
defProc: univ longint; refCon: longint;
ctlColorTable: colorTblPtr): ctlRecHndl;
tool ($10, $09);
function NewControl2 (theWindow: grafPortPtr; referenceDesc: integer;
reference: univ longint): ctlRecHndl; tool ($10, $31);
procedure NotifyCtls (mask, message: integer; param: univ longint;
theWindow: grafportptr); tool ($10, $2D);
function SendEventToCtl (targetOnlyFlag: boolean; theWindow: grafPortPtr;
var eTaskRecPtr: eventRecord): boolean;
tool ($10, $29);
procedure SetCtlAction (newAction: procPtr; theControl: ctlRecHndl);
tool ($10, $20);
function SetCtlIcons (newFontHandle: fontHndl): fontHndl; tool ($10, $18);
procedure SetCtlID (newID: longint; theControl: ctlRecHndl); tool ($10, $2B);
procedure SetCtlMoreFlags (newMoreFlags: integer; theControl: ctlRecHndl);
tool ($10, $2F);
procedure SetCtlParamPtr (subArrayptr: univ longint); tool ($10, $34);
procedure SetCtlParams (param2, param1: integer; theControl: ctlRecHndl);
tool ($10, $1B);
procedure SetCtlRefCon (newRefCon: longint; theControl: ctlRecHndl);
tool ($10, $22);
procedure SetCtlTitle (titlePtr: univ pStringPtr; theControl: ctlRecHndl);
tool($10, $0C);
procedure SetCtlValue (curValue: integer; theControl: ctlRecHndl);
tool ($10, $19);
procedure SetLETextByID (windPtr: grafPortPtr; leCtlID: longint;
text: pString); tool ($10, $3A);
procedure ShowControl (theControl: ctlRecHndl); tool ($10, $0F);
function TestControl (pointX, pointY: integer; theControl: ctlRecHndl): integer;
tool ($10, $14);
function TrackControl (startX, startY: integer; actionProc: procPtr;
theControl: ctlRecHndl): integer; tool ($10, $15);
{new in 6.0.1}
procedure SetCtlValueByID (curValue: integer; theWindow: grafPortPtr;
theID: longint); tool ($10, $3C);
function GetCtlValueByID (theWindow: grafPortPtr; theID: longint): integer;
tool ($10, $3D);
procedure InvalOneCtlByID (theWindow: grafPortPtr; theID: longint);
tool ($10, $3E);
procedure HiliteCtlByID (hiliteState: integer; theWindow: grafPortPtr;
theID:longint); tool ($10, $3F);
implementation
end.