mirror of
https://github.com/byteworksinc/ORCA-C.git
synced 2024-12-22 23:29:27 +00:00
430 lines
17 KiB
C
430 lines
17 KiB
C
/********************************************
|
|
*
|
|
* Control Manager
|
|
*
|
|
* Copyright Apple Computer, Inc.1986-91
|
|
* All Rights Reserved
|
|
*
|
|
* Copyright 1992, 1993, Byte Works, Inc.
|
|
*
|
|
********************************************/
|
|
|
|
#ifndef __TYPES__
|
|
#include <TYPES.h>
|
|
#endif
|
|
|
|
#ifndef __CONTROL__
|
|
#define __CONTROL__
|
|
|
|
/* Axis Parameters */
|
|
#define noConstraint 0x0000 /* No constraint on movement. */
|
|
#define hAxisOnly 0x0001 /* Horizontal axis only. */
|
|
#define vAxisOnly 0x0002 /* Vertical axis only. */
|
|
|
|
/* CtlFlag */
|
|
#define simpRound 0x0000 /* Simple button flag */
|
|
#define upFlag 0x0001 /* Scroll bar flag. */
|
|
#define boldButton 0x0001 /* Bold round cornered outlined button. */
|
|
#define simpBRound 0x0001 /* Simple button flag */
|
|
#define downFlag 0x0002 /* Scroll bar flag. */
|
|
#define simpSquare 0x0002 /* Simple button flag */
|
|
#define simpDropSquare 0x0003 /* Simple button flag */
|
|
#define leftFlag 0x0004 /* Scroll bar flag. */
|
|
#define rightFlag 0x0008 /* Scroll bar flag. */
|
|
#define dirScroll 0x0010 /* Scroll bar flag. */
|
|
#define horScroll 0x0010 /* Scroll bar flag. */
|
|
#define family 0x007F /* Mask for radio button family number */
|
|
#define ctlInVis 0x0080 /* invisible mask for any type of control */
|
|
#define fCallWindowMgr 0x0001 /* Control Template flag value */
|
|
#define fSubstituteText 0x0002
|
|
#define fSubTextType 0x0001
|
|
#define inListBox 0x88
|
|
#define fBlastText 0x0004 /* static text control */
|
|
#define fTextCanDim 0x0008 /* static text control */
|
|
#define fSquishText 0x0010 /* static text control */
|
|
#define fNoTrackIcon 0x0008 /* make Icon Button play dead */
|
|
|
|
/* CtlProc Codes */
|
|
#define simpleProc 0x00000000L
|
|
#define checkProc 0x02000000L
|
|
#define radioProc 0x04000000L
|
|
#define scrollProc 0x06000000L
|
|
#define growProc 0x08000000L
|
|
|
|
/* DefProc Commands */
|
|
#define drawCtl 0x0000 /* Draw control command. */
|
|
#define calcCRect 0x0001 /* Compute drag RECT command. */
|
|
#define testCtl 0x0002 /* Hit test command. */
|
|
#define initCtl 0x0003 /* Initialize command. */
|
|
#define dispCtl 0x0004 /* Dispose command. */
|
|
#define posCtl 0x0005 /* Move indicator command. */
|
|
#define thumbCtl 0x0006 /* Compute drag parameters command. */
|
|
#define dragCtl 0x0007 /* Drag command. */
|
|
#define autoTrack 0x0008 /* Action command. */
|
|
#define newValue 0x0009 /* Set new value command. */
|
|
#define setParams 0x000A /* Set new parameters command. */
|
|
#define moveCtl 0x000B /* Move command. */
|
|
#define recSize 0x000C /* Return record size command. */
|
|
#define ctlHandleEvent 0x000D /* Handle a keystroke or menu selection */
|
|
#define ctlChangeTarget 0x000E /* Issued when control's target status has changed */
|
|
#define ctlChangeBounds 0x000F /* Issued when control's boundary rectangle has changed */
|
|
#define ctlWindChangeSize 0x0010 /* Window has been grown or zoomed */
|
|
#define ctlHandleTab 0x0011 /* Control has been tabbed to */
|
|
#define ctlNotifyMultiPart 0x0012 /* A multipart control has been hidden, drawn or shown */
|
|
#define ctlWinStateChange 0x0013 /* Window state has changed */
|
|
|
|
/* hiliteState Codes */
|
|
#define noHilite 0x0000 /* Param to HiliteControl */
|
|
#define inactiveHilite 0x00FF /* Param to HiliteControl */
|
|
|
|
/* PartCode Numbers */
|
|
#define noPart 0x0000
|
|
#define simpleButton 0x0002
|
|
#define checkBox 0x0003
|
|
#define radioButton 0x0004
|
|
#define upArrow 0x0005
|
|
#define downArrow 0x0006
|
|
#define pageUp 0x0007
|
|
#define pageDown 0x0008
|
|
#define growBox 0x000A
|
|
#define thumb 0x0081
|
|
|
|
/* moreFlags Codes */
|
|
#define fCtlTarget 0x8000 /* is current target of typing commands */
|
|
#define fCtlCanBeTarget 0x4000 /* can be made the target control */
|
|
#define fCtlWantEvent 0x2000 /* control can be called view SendEventToCtl */
|
|
#define fCtlWantsEvent 0x2000 /* control can be called view SendEventToCtl */
|
|
#define fCtlWantEvents 0x2000 /* control can be called view SendEventToCtl */
|
|
#define fCtlWantsEvents 0x2000 /* control can be called view SendEventToCtl */
|
|
#define fCtlProcRefNotPtr 0x1000 /* set = ID of defproc, clear = pointer to defproc */
|
|
#define fCtlTellAboutSize 0x0800 /* set if ctl needs notification when size of owning window changes */
|
|
#define fCtlIsMultiPart 0x0400 /* set if ctl needs notification to be hidden */
|
|
#define fMenuDefIsText 0x0004
|
|
#define fDrawIconInResult 0x0020
|
|
#define fDrawPopDownIcon 0x0080
|
|
#define colorDescriptor 0x000C /* indicates type of reference in colorRef */
|
|
#define styleDescriptor 0x0003 /* indicates type of reference in styleRef */
|
|
|
|
/* Ctl Verbs */
|
|
#define titleIsPtr 0x00
|
|
#define titleIsHandle 0x01
|
|
#define titleIsResource 0x02
|
|
#define colorTableIsPtr 0x00
|
|
#define colorTableIsHandle 0x04
|
|
#define colorTableIsResource 0x08
|
|
#define ctlHideCtl 0x12
|
|
|
|
/* InputVerb Codes */
|
|
#define singlePtr 0x0000
|
|
#define singleHandle 0x0001
|
|
#define singleResource 0x0002
|
|
#define ptrToPtr 0x0003
|
|
#define ptrToHandle 0x0004
|
|
#define ptrToResource 0x0005
|
|
#define handleToPtr 0x0006
|
|
#define handleToHandle 0x0007
|
|
#define handleToResource 0x0008
|
|
#define resourceToResource 0x0009
|
|
|
|
/* ProcRefs */
|
|
#define simpleButtonControl 0x80000000L
|
|
#define checkControl 0x82000000L
|
|
#define radioControl 0x84000000L
|
|
#define scrollBarControl 0x86000000L
|
|
#define growControl 0x88000000L
|
|
#define statTextControl 0x81000000L
|
|
#define editLineControl 0x83000000L
|
|
#define editTextControl 0x85000000L
|
|
#define popUpControl 0x87000000L
|
|
#define listControl 0x89000000L
|
|
#define pictureControl 0x8D000000L
|
|
#define iconButtonControl 0x87FF0001L
|
|
#define thermometerControl 0x87FF0002L
|
|
#define rectangleControl 0x87FF0003L
|
|
|
|
/* Error Codes */
|
|
#define wmNotStartedUp 0x1001 /* Window manager was not initialized */
|
|
#define cmNotInitialized 0x1002 /* Control manager was not initialized */
|
|
#define noCtlInList 0x1003 /* Control not in window list */
|
|
#define noCtlError 0x1004 /* no controls in window */
|
|
#define noSuperCtlError 0x1005 /* no super controls in window */
|
|
#define noCtlTargetError 0x1006 /* no target super control */
|
|
#define notSuperCtlError 0x1007 /* action can only be done on super control */
|
|
#define canNotBeTargetError 0x1008 /* conrol cannot be made target */
|
|
#define noSuchIDError 0x1009 /* specified ID cannot be found */
|
|
#define tooFewParmsError 0x100A /* not enough params specified */
|
|
#define noCtlToBeTargetError 0x100B /* NextCtl call, no ctl could be target */
|
|
#define noFrontWindowError 0x100C /* there is no front window */
|
|
|
|
/* displayMode flags */
|
|
#define selectedIcon 0x0001
|
|
#define openIcon 0x0002
|
|
#define offline 0x0004
|
|
|
|
/* listType values */
|
|
#define fListString 0x0001
|
|
#define fListSelect 0x0002
|
|
#define fListScrollBar 0x0004
|
|
|
|
/* PopUp control flag values */
|
|
#define fRightJustifyResult 0x0001
|
|
#define fRightJustifyTitle 0x0002
|
|
#define fInWindowOnly 0x0004
|
|
#define fDontDrawResult 0x0008
|
|
#define fDontDrawTitle 0x0010
|
|
#define fDontHiliteTitle 0x0020
|
|
#define fType2PopUp 0x0040
|
|
|
|
struct BoxColors {
|
|
Word boxReserved; /* reserved */
|
|
Word boxNor; /* color of box when not checked */
|
|
Word boxSel; /* color of box when checked */
|
|
Word boxTitle; /* color of check box's title */
|
|
};
|
|
typedef struct BoxColors BoxColors, *BoxColorsPtr, **BoxColorsHndl;
|
|
|
|
struct BttnColors {
|
|
Word bttnOutline; /* color of outline */
|
|
Word bttnNorBack; /* color of background when not selected */
|
|
Word bttnSelBack; /* color of background when selected */
|
|
Word bttnNorText; /* color of title's text when not selected */
|
|
Word bttnSelText; /* color of title's text when selected */
|
|
};
|
|
typedef struct BttnColors BttnColors, *BttnColorsPtr, **BttnColorsHndl;
|
|
|
|
struct LimitBlk {
|
|
Rect boundRect; /* Drag bounds. */
|
|
Rect slopRect; /* Cursor bounds. */
|
|
Word axisParam; /* Movement constrains. */
|
|
Pointer dragPatt; /* Pointer to 32 byte Pattern for drag outline. */
|
|
};
|
|
typedef struct LimitBlk LimitBlk, *LimitBlkPtr, **LimitBlkHndl;
|
|
|
|
struct RadioColors {
|
|
Word radReserved; /* reserved */
|
|
Word radNor; /* color of radio button when off */
|
|
Word radSel; /* color of radio button when on */
|
|
Word radTitle; /* color of radio button's title text */
|
|
};
|
|
typedef struct RadioColors RadioColors, *RadioColorsPtr, **RadioColorsHndl;
|
|
|
|
struct KeystrokeRec {
|
|
Byte key1;
|
|
Byte key2;
|
|
Word keyModifiers;
|
|
Word keyCareBits;
|
|
};
|
|
typedef struct KeystrokeRec KeystrokeRec;
|
|
|
|
struct ControlTemplate {
|
|
Word pCount;
|
|
LongWord ID;
|
|
Rect rect;
|
|
LongWord procRef;
|
|
Word flag;
|
|
Word moreFlags;
|
|
LongWord refCon;
|
|
};
|
|
typedef struct ControlTemplate ControlTemplate;
|
|
|
|
struct SimpleButtonTemplate {
|
|
ControlTemplate ctlTemplate;
|
|
Ref titleRef;
|
|
Ref colorTableRef;
|
|
KeystrokeRec keyEquivalent;
|
|
};
|
|
typedef struct SimpleButtonTemplate SimpleButtonTemplate;
|
|
|
|
struct CheckBoxTemplate {
|
|
ControlTemplate ctlTemplate;
|
|
Ref titleRef;
|
|
Word initalValue;
|
|
Ref colorTableRef;
|
|
KeystrokeRec keyEquivalent;
|
|
};
|
|
typedef struct CheckBoxTemplate CheckBoxTemplate;
|
|
|
|
struct IconButtonTemplate {
|
|
ControlTemplate ctlTemplate;
|
|
Ref iconRef;
|
|
Ref titleRef;
|
|
Ref colorTableRef;
|
|
Word displayMode;
|
|
KeystrokeRec keyEquivalent;
|
|
};
|
|
typedef struct IconButtonTemplate IconButtonTemplate;
|
|
|
|
struct LineEditTemplate {
|
|
ControlTemplate ctlTemplate;
|
|
Word maxSize;
|
|
Ref defaultRef;
|
|
Word passwordChar;
|
|
};
|
|
typedef struct LineEditTemplate LineEditTemplate;
|
|
|
|
struct ListTemplate {
|
|
ControlTemplate ctlTemplate;
|
|
Word listSize;
|
|
Word listView;
|
|
Word listType;
|
|
Word listStart;
|
|
ProcPtr listDraw;
|
|
Word listMemHeight;
|
|
Word listMemSize;
|
|
Ref listRef;
|
|
Ref colorTableRef;
|
|
};
|
|
typedef struct ListTemplate ListTemplate;
|
|
|
|
struct PictureTemplate {
|
|
ControlTemplate ctlTemplate;
|
|
Ref pictureRef;
|
|
};
|
|
typedef struct PictureTemplate PictureTemplate;
|
|
|
|
struct PopupTemplate {
|
|
ControlTemplate ctlTemplate;
|
|
Word titleWidth;
|
|
Ref menuRef;
|
|
Word initialValue;
|
|
Ref colorTableRef;
|
|
};
|
|
typedef struct PopupTemplate PopupTemplate;
|
|
|
|
struct RadioButtonTemplate {
|
|
ControlTemplate ctlTemplate;
|
|
Ref titleRef;
|
|
Word initalValue;
|
|
Ref colorTableRef;
|
|
KeystrokeRec keyEquivalent;
|
|
};
|
|
typedef struct RadioButtonTemplate RadioButtonTemplate;
|
|
|
|
struct RectangleTemplate {
|
|
ControlTemplate ctlTemplate;
|
|
Word penHeight;
|
|
Word penWidth;
|
|
Mask penMask;
|
|
Pattern penPattern;
|
|
};
|
|
typedef struct RectangleTemplate RectangleTemplate;
|
|
|
|
struct ScrollBarTemplate {
|
|
ControlTemplate ctlTemplate;
|
|
Word maxSize;
|
|
Word viewSize;
|
|
Word initalValue;
|
|
Ref colorTableRef;
|
|
};
|
|
typedef struct ScrollBarTemplate ScrollBarTemplate;
|
|
|
|
struct SizeBoxTemplate {
|
|
ControlTemplate ctlTemplate;
|
|
Ref colorTableRef;
|
|
};
|
|
typedef struct SizeBoxTemplate SizeBoxTemplate;
|
|
|
|
struct StaticTextTemplate {
|
|
ControlTemplate ctlTemplate;
|
|
Ref textRef;
|
|
Word textSize;
|
|
Word just;
|
|
};
|
|
typedef struct StaticTextTemplate StaticTextTemplate;
|
|
|
|
struct TextEditTemplate {
|
|
ControlTemplate ctlTemplate;
|
|
LongWord textFlags;
|
|
Rect indentRect;
|
|
CtlRecHndl vertBar;
|
|
Word vertAmount;
|
|
CtlRecHndl horzBar;
|
|
Word horzAmount;
|
|
Ref styleRef;
|
|
Word textDescriptor;
|
|
Ref textRef;
|
|
LongWord textLength;
|
|
LongWord maxChars;
|
|
LongWord maxLines;
|
|
Word maxCharsPerLine;
|
|
Word maxHeight;
|
|
Ref colorRef;
|
|
Word drawMode;
|
|
ProcPtr filterProcPtr;
|
|
};
|
|
typedef struct TextEditTemplate TextEditTemplate;
|
|
|
|
struct ThermometerTemplate {
|
|
ControlTemplate ctlTemplate;
|
|
Word value;
|
|
Word data;
|
|
Ref colorTableRef;
|
|
};
|
|
typedef struct ThermometerTemplate ThermometerTemplate;
|
|
|
|
extern pascal void CtlBootInit(void) inline(0x0110,dispatcher);
|
|
extern pascal void CtlStartUp(Word, Word) inline(0x0210,dispatcher);
|
|
extern pascal void CtlShutDown(void) inline(0x0310,dispatcher);
|
|
extern pascal Word CtlVersion(void) inline(0x0410,dispatcher);
|
|
extern pascal void CtlReset(void) inline(0x0510,dispatcher);
|
|
extern pascal Boolean CtlStatus(void) inline(0x0610,dispatcher);
|
|
extern pascal void CtlNewRes(void) inline(0x1210,dispatcher);
|
|
extern pascal void DisposeControl(CtlRecHndl) inline(0x0A10,dispatcher);
|
|
extern pascal void DragControl(Integer, Integer, Rect *, Rect *, Word, CtlRecHndl) inline(0x1710,dispatcher);
|
|
extern pascal Point DragRect(VoidProcPtr, Pattern, Integer, Integer, Rect *, Rect *, Rect *, Word) inline(0x1D10,dispatcher);
|
|
extern pascal void DrawControls(GrafPortPtr) inline(0x1010,dispatcher);
|
|
extern pascal void DrawOneCtl(CtlRecHndl) inline(0x2510,dispatcher);
|
|
extern pascal void EraseControl(CtlRecHndl) inline(0x2410,dispatcher);
|
|
extern pascal Word FindControl(CtlRecHndl *, Integer, Integer, GrafPortPtr) inline(0x1310,dispatcher);
|
|
extern pascal LongProcPtr GetCtlAction(CtlRecHndl) inline(0x2110,dispatcher);
|
|
extern pascal Word GetCtlDPage(void) inline(0x1F10,dispatcher);
|
|
extern pascal LongWord GetCtlParams(CtlRecHndl) inline(0x1C10,dispatcher);
|
|
extern pascal LongWord GetCtlRefCon(CtlRecHndl) inline(0x2310,dispatcher);
|
|
extern pascal Pointer GetCtlTitle(CtlRecHndl) inline(0x0D10,dispatcher);
|
|
extern pascal Word GetCtlValue(CtlRecHndl) inline(0x1A10,dispatcher);
|
|
extern pascal LongWord GrowSize(void) inline(0x1E10,dispatcher);
|
|
extern pascal void HideControl(CtlRecHndl) inline(0x0E10,dispatcher);
|
|
extern pascal void HiliteControl(Word, CtlRecHndl) inline(0x1110,dispatcher);
|
|
extern pascal void KillControls(GrafPortPtr) inline(0x0B10,dispatcher);
|
|
extern pascal void MoveControl(Integer, Integer, CtlRecHndl) inline(0x1610,dispatcher);
|
|
extern pascal CtlRecHndl NewControl(GrafPortPtr, Rect *, Pointer, Word, Word, Word, Word, LongProcPtr, Longint, Pointer) inline(0x0910,dispatcher);
|
|
extern pascal void SetCtlAction(LongProcPtr, CtlRecHndl) inline(0x2010,dispatcher);
|
|
extern pascal FontHndl SetCtlIcons(FontHndl) inline(0x1810,dispatcher);
|
|
extern pascal void SetCtlParams(Word, Word, CtlRecHndl) inline(0x1B10,dispatcher);
|
|
extern pascal void SetCtlRefCon(Longint, CtlRecHndl) inline(0x2210,dispatcher);
|
|
extern pascal void SetCtlTitle(Pointer, Handle) inline(0x0C10,dispatcher);
|
|
extern pascal void SetCtlValue(Word, CtlRecHndl) inline(0x1910,dispatcher);
|
|
extern pascal void ShowControl(CtlRecHndl) inline(0x0F10,dispatcher);
|
|
extern pascal Word TestControl(Integer, Integer, CtlRecHndl) inline(0x1410,dispatcher);
|
|
extern pascal Word TrackControl(Integer, Integer, LongProcPtr, CtlRecHndl) inline(0x1510,dispatcher);
|
|
|
|
extern pascal LongWord CallCtlDefProc(CtlRecHndl, Word, Long) inline(0x2C10,dispatcher);
|
|
extern pascal Handle CMLoadResource(Word, Long) inline(0x3210,dispatcher);
|
|
extern pascal void CMReleaseResource(Word, Long) inline(0x3310,dispatcher);
|
|
extern pascal CtlRecHndl FindTargetCtl(void) inline(0x2610,dispatcher);
|
|
extern pascal CtlRecHndl GetCtlHandleFromID(WindowPtr, Long) inline(0x3010,dispatcher);
|
|
extern pascal LongWord GetCtlID(CtlRecHndl) inline(0x2A10,dispatcher);
|
|
extern pascal Word GetCtlMoreFlags(CtlRecHndl) inline(0x2E10,dispatcher);
|
|
extern pascal Pointer GetCtlParamPtr(void) inline(0x3510,dispatcher);
|
|
extern pascal void InvalCtls(WindowPtr) inline(0x3710,dispatcher);
|
|
extern pascal CtlRecHndl MakeNextCtlTarget(void) inline(0x2710,dispatcher);
|
|
extern pascal void MakeThisCtlTarget(CtlRecHndl) inline(0x2810,dispatcher);
|
|
extern pascal CtlRecHndl NewControl2(WindowPtr, Word, Ref) inline(0x3110,dispatcher);
|
|
extern pascal void NotifyControls(Word, Word, Long, WindowPtr) inline(0x2D10,dispatcher);
|
|
extern pascal void NotifyCtls(Word, Word, Long, WindowPtr) inline(0x2D10,dispatcher);
|
|
extern pascal Boolean SendEventToCtl(Boolean, WindowPtr, EventRecordPtr) inline(0x2910,dispatcher);
|
|
extern pascal void SetCtlID(Long, CtlRecHndl) inline(0x2B10,dispatcher);
|
|
extern pascal void SetCtlMoreFlags(Word, CtlRecHndl) inline(0x2F10,dispatcher);
|
|
extern pascal void SetCtlParamPtr(Pointer) inline(0x3410,dispatcher);
|
|
|
|
extern pascal Word FindRadioButton(WindowPtr, Word) inline(0x3910,dispatcher);
|
|
extern pascal void GetLETextByID(WindowPtr, Long, StringPtr) inline(0x3B10,dispatcher);
|
|
extern pascal void SetLETextByID(WindowPtr, Long, StringPtr) inline(0x3A10,dispatcher);
|
|
|
|
extern pascal void SetCtlValueByID(Word, GrafPortPtr, Long) inline(0x3C10,dispatcher);
|
|
extern pascal Word GetCtlValueByID(GrafPortPtr, Long) inline(0x3D10,dispatcher);
|
|
extern pascal void InvalOneCtlByID(GrafPortPtr, Long) inline(0x3E10,dispatcher);
|
|
extern pascal void HiliteCtlByID(Word, GrafPortPtr, Long) inline(0x3F10,dispatcher);
|
|
|
|
#endif
|