Glider4/RoomEditor_103/Sources/About… 2.1 Intf.p

1 line
4.8 KiB
OpenEdge ABL
Executable File

unit About; { version 2.1 last update: 1/1/92 }
{}
{}
{ AboutÉ is copyrighted, and I reserve all rights to it; both source and}
{ compiled versions. Please do not distribute this source without my}
{ permission, or remove this notice. Thanks.}
{}
{ Jon Wind (AboutÉ)}
{ 2374 Hillwood Drive}
{ Maplewood, MN 55119}
{}
{ 2.1 Changes }
{ Updated demo to work properly with System 7.0 and added popup menu for window types }
{ Improved overall stability of AboutÉ unit, especially in tight memory situations }
{ Added support for movableDBoxProc window type }
{ Added support for plainDBox window type to be drawn with only scrollable text }
{}
{ 2.0 Changes }
{ Created Modal and Modeless versions }
{ Added optional support for display of styled text }
{ Added support for copying styled text }
{ Added ability to specify how window will be centered instead of just center or not center }
{ Improved error checking in low memory conditions }
{ Shift-command-c will now also copy text }
{ Method of obtaining main window rect should now work for DAs, cdevs, etc }
{ Window dragging now gets bounds from GrayRgn }
{ Window centering routines now shift the window as neccessary to keep it entirely onscreen }
{ Option clicking in the window displays the version instead of option clicking anywhere }
{ OK button is now horizontally centered if MainIcon = NoIcon & Length(WinMsg) = 0; set WinMsg to an invisible character to not center it }
{ OK button is disabled and default roundrect is drawn in gray if the (modeless) About window is not in front }
{ Added support for close box instead of OK button for noGrowDocProc or rDocProc windows }
{ Scrolling text area is extended downward if MainIcon = NoIcon & Length(WinMsg) = 0 }
{ Control and window auxRecs are now used for frame and background colors }
{}
{$R-}
interface
const
AboutVersion = 'AboutÉ 2.1';
AboutNoIcon = -1;
AboutNoCenter = -1;
AboutTopCenter = 0;
AboutMainCenter = 1;
AboutMsg = 0;
AboutTEXT = 1;
movableDBoxProc = 5;
type
AboutFontRec = record
Font, Size: Integer;
Face: Style;
Color: Integer;
end;
AboutRec = record
FontInfo: array[AboutMsg..AboutTEXT] of AboutFontRec;
TEXTCopy, KeyEquivs, CloseBox, Styled: Boolean;
CenterMode, MainIcon, ClickIcon: Integer;
ClickMsg: Str255;
end;
{ Note: font color(s) must be blackColor, whiteColor, redColor, greenColor, blueColor, cyanColor, magentaColor, or yellowColor }
{ Note: if MainIcon = AboutNoIcon then no icon will be drawn }
{ Note: if ClickIcon = AboutNoIcon then no icon will be drawn when original icon is clicked on }
{ Note: if CenterMode = AboutNoCenter the window will use the supplied coordinates and will not be centered }
{ Note: if CenterMode = AboutTopCenter the window will be centered on the front window or the main monitor if there is no front window }
{ Note: if CenterMode = AboutMainCenter the window will be centered on the main monitor }
{ Note: if Length(ClickMsg) = 0 then no message will be drawn when original icon is clicked on }
{ Note: CloseBox will be ignored for dBoxProc, altDBoxProc, and movableDBoxProc windows }
{ Modal procedure: }
{ this routine does everything, returning to calling proc only after the window is dismissed... }
procedure BuildAbout (WinRect: Rect;
WinProc, TEXTid: Integer;
WinTitle, WinMsg: Str255;
WinMisc: AboutRec);
{ Modeless procedures: }
{ returns true if the specified window is an About window; otherwise returns false }
function IsAboutWindow (theWindow: WindowPtr): Boolean;
{ open About window and return pointer to it - returns NIL if window is not created }
{ Note: you should keep track of this pointer only if you wish to keep specific track of it }
function OpenAbout (WinRect: Rect;
WinProc, TEXTid: Integer;
WinTitle, WinMsg: Str255;
WinMisc: AboutRec): WindowPtr;
{ handle event relating to About window, ie updateEvt, activateEvt, mouseDown, keyDown, etcÉ }
{ Note: this proc should be called after every event for each About window for everything to work correctly }
{ Note: this proc calls the CloseAbout proc if the OK button or close box is selected }
{ Note: you can filter events passed to it to simulate a modal dialog }
procedure HandleAbout (var theWindow: WindowPtr;
var theEvent: EventRecord);
{ close the specified About window, kill data structures associated with it, and set theWindow to NILÉ }
{ Note: this proc is called by the HandleAbout proc when an About window is dismissed by selecting its OK button }
{ Note: this proc should be called when the program needs to remove an About window }
procedure CloseAbout (var theWindow: WindowPtr);
implementation
procedure BuildAbout;
external;
function IsAboutWindow;
external;
function OpenAbout;
external;
procedure HandleAbout;
external;
procedure CloseAbout;
external;
end.