1 line
4.8 KiB
OpenEdge ABL
Executable File
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. |