318 lines
13 KiB
ObjectPascal
318 lines
13 KiB
ObjectPascal
{ BePascal - A pascal wrapper around the BeOS API
|
|
Copyright (C) 2003 Olivier Coursiere
|
|
Eric Jourde
|
|
Oscar Lesta
|
|
|
|
This library is free software; you can redistribute it and/or
|
|
modify it under the terms of the GNU Library General Public
|
|
License as published by the Free Software Foundation; either
|
|
version 2 of the License, or (at your option) any later version.
|
|
|
|
This library is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
Library General Public License for more details.
|
|
|
|
You should have received a copy of the GNU Library General Public
|
|
License along with this library; if not, write to the Free
|
|
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
}
|
|
unit Alert;
|
|
|
|
interface
|
|
|
|
uses
|
|
BeObj, Archivable, Button, InterfaceDefs, Invoker, Handler,
|
|
Message, Rect, SupportDefs, TextView, Window;
|
|
|
|
type
|
|
{ enum for flavors of alert }
|
|
// enum alert_type
|
|
TAlert_Type = (B_EMPTY_ALERT, B_INFO_ALERT, B_IDEA_ALERT, B_WARNING_ALERT,
|
|
B_STOP_ALERT);
|
|
|
|
//enum button_spacing
|
|
TButton_Spacing = (B_EVEN_SPACING, B_OFFSET_SPACING);
|
|
|
|
TAlert = class(TWindow)
|
|
private
|
|
public
|
|
// Here we have this name colition: type --> kind
|
|
constructor Create(title : PChar; text : PChar; button1 : PChar;
|
|
button2 : PChar; button3 : PChar; width : TButton_Width;
|
|
kind{type} : TAlert_Type);
|
|
constructor Create(title : PChar; text : PChar; button1 : PChar;
|
|
button2 : PChar; button3 : PChar; width : TButton_Width;
|
|
spacing : TButton_Spacing; kind{type} : TAlert_Type);
|
|
constructor Create(data : TMessage);
|
|
|
|
destructor Destroy; override;
|
|
|
|
function Instantiate(data : TMessage) : TArchivable;
|
|
function Archive(data : TMessage; deep : boolean) : TStatus_t;
|
|
procedure SetShortcut(button_index : integer; key : Char);
|
|
function Shortcut(button_index : integer) : Char;
|
|
function Go : integer;
|
|
function Go(invoker : TInvoker) : TStatus_t;
|
|
procedure MessageReceived(an_event : TMessage); override;
|
|
procedure FrameResized(new_width : double; new_height : double);
|
|
function ButtonAt(index : integer) : TButton;
|
|
function TextView : TTextView;
|
|
function ResolveSpecifier(msg : TMessage; index : integer; specifier : TMessage; form : integer; properti : PChar) : THandler;
|
|
function GetSupportedSuites(data : TMessage) : TStatus_t;
|
|
procedure DispatchMessage(msg : TMessage; handler : THandler); override;
|
|
procedure Quit;
|
|
function QuitRequested : boolean; override;
|
|
function AlertPosition(width : double; height : double) : TPoint;
|
|
{
|
|
function Perform(d : TPerform_code; arg : Pointer) : TStatus_t;
|
|
|
|
procedure _ReservedAlert1;
|
|
procedure _ReservedAlert2;
|
|
procedure _ReservedAlert3;
|
|
|
|
procedure InitObject(text : PChar; button1 : PChar; button2 : PChar; button3 : PChar; width : TButton_Width; spacing : TButton_Spacing; type : TAlert_Type);
|
|
function InitIcon : TBitmap;
|
|
procedure sem_id fAlertSem;
|
|
procedure int32 fAlertVal;
|
|
procedure BButton *fButtons[3];
|
|
procedure BTextView *fTextView;
|
|
procedure char fKeys[3];
|
|
procedure alert_type fMsgType;
|
|
procedure button_width fButtonWidth;
|
|
procedure BInvoker *fInvoker;
|
|
procedure uint32 _reserved[4];
|
|
}
|
|
end;
|
|
|
|
function BAlert_Create(AObject : TBeObject; title : PChar; text : PChar;
|
|
button1 : PChar; button2 : PChar; button3 : PChar; width : TButton_Width;
|
|
kind{type} : TAlert_Type) : TCPlusObject; cdecl;
|
|
external BePascalLibName name 'BAlert_Create';
|
|
function BAlert_Create_1(AObject : TBeObject; title : PChar; text : PChar;
|
|
button1 : PChar; button2 : PChar; button3 : PChar; width : TButton_Width;
|
|
spacing : TButton_Spacing; kind{type} : TAlert_Type) : TCPlusObject; cdecl;
|
|
external BePascalLibName name 'BAlert_Create_1';
|
|
function BAlert_Create_2(AObject : TBeObject; data : TCPlusObject)
|
|
: TCPlusObject; cdecl; external BePascalLibName name 'BAlert_Create_2';
|
|
|
|
procedure BAlert_Free(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BAlert_Free';
|
|
|
|
function BAlert_Instantiate(AObject : TCPlusObject; data : TCPlusObject) : TArchivable; cdecl; external BePascalLibName name 'BAlert_Instantiate';
|
|
function BAlert_Archive(AObject : TCPlusObject; data : TCPlusObject; deep : boolean) : TStatus_t; cdecl; external BePascalLibName name 'BAlert_Archive';
|
|
procedure BAlert_SetShortcut(AObject : TCPlusObject; button_index : integer; key : Char); cdecl; external BePascalLibName name 'BAlert_SetShortcut';
|
|
function BAlert_Shortcut(AObject : TCPlusObject; button_index : integer) : Char; cdecl; external BePascalLibName name 'BAlert_Shortcut';
|
|
function BAlert_Go(AObject : TCPlusObject) : integer; cdecl; external BePascalLibName name 'BAlert_Go';
|
|
function BAlert_Go(AObject : TCPlusObject; invoker : TCPlusObject) : TStatus_t; cdecl; external BePascalLibName name 'BAlert_Go';
|
|
procedure BAlert_MessageReceived(AObject : TCPlusObject; an_event : TCPlusObject); cdecl; external BePascalLibName name 'BAlert_MessageReceived';
|
|
procedure BAlert_FrameResized(AObject : TCPlusObject; new_width : double; new_height : double); cdecl; external BePascalLibName name 'BAlert_FrameResized';
|
|
function BAlert_ButtonAt(AObject : TCPlusObject; index : integer) : TButton; cdecl; external BePascalLibName name 'BAlert_ButtonAt';
|
|
function BAlert_TextView(AObject : TCPlusObject) : TTextView; cdecl; external BePascalLibName name 'BAlert_TextView';
|
|
function BAlert_ResolveSpecifier(AObject : TCPlusObject; msg : TCPlusObject; index : integer; specifier : TCPlusObject; form : integer; properti : PChar) : THandler; cdecl; external BePascalLibName name 'BAlert_ResolveSpecifier';
|
|
function BAlert_GetSupportedSuites(AObject : TCPlusObject; data : TCPlusObject) : TStatus_t; cdecl; external BePascalLibName name 'BAlert_GetSupportedSuites';
|
|
procedure BAlert_DispatchMessage(AObject : TCPlusObject; msg : TCPlusObject; handler : TCPlusObject); cdecl; external BePascalLibName name 'BAlert_DispatchMessage';
|
|
procedure BAlert_Quit(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BAlert_Quit';
|
|
function BAlert_QuitRequested(AObject : TCPlusObject) : boolean; cdecl; external BePascalLibName name 'BAlert_QuitRequested';
|
|
function BAlert_AlertPosition(AObject : TCPlusObject; width : double; height : double) : TPoint; cdecl; external BePascalLibName name 'BAlert_AlertPosition';
|
|
{
|
|
function BAlert_Perform(AObject : TCPlusObject; d : TPerform_code; arg : Pointer) : TStatus_t; cdecl; external BePascalLibName name 'BAlert_Perform';
|
|
procedure BAlert__ReservedAlert1(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BAlert__ReservedAlert1';
|
|
procedure BAlert__ReservedAlert2(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BAlert__ReservedAlert2';
|
|
procedure BAlert__ReservedAlert3(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BAlert__ReservedAlert3';
|
|
procedure BAlert_InitObject(AObject : TCPlusObject; text : PChar; button1 : PChar; button2 : PChar; button3 : PChar; width : TButton_Width; spacing : TButton_Spacing; type : TAlert_Type); cdecl; external BePascalLibName name 'BAlert_InitObject';
|
|
function BAlert_InitIcon(AObject : TCPlusObject) : TBitmap; cdecl; external BePascalLibName name 'BAlert_InitIcon';
|
|
procedure BAlert_sem_id fAlertSem(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BAlert_sem_id fAlertSem';
|
|
procedure BAlert_int32 fAlertVal(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BAlert_int32 fAlertVal';
|
|
procedure BAlert_BButton *fButtons[3](AObject : TCPlusObject); cdecl; external BePascalLibName name 'BAlert_BButton *fButtons[3]';
|
|
procedure BAlert_BTextView *fTextView(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BAlert_BTextView *fTextView';
|
|
procedure BAlert_char fKeys[3](AObject : TCPlusObject); cdecl; external BePascalLibName name 'BAlert_char fKeys[3]';
|
|
procedure BAlert_alert_type fMsgType(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BAlert_alert_type fMsgType';
|
|
procedure BAlert_button_width fButtonWidth(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BAlert_button_width fButtonWidth';
|
|
procedure BAlert_BInvoker *fInvoker(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BAlert_BInvoker *fInvoker';
|
|
procedure BAlert_uint32 _reserved[4](AObject : TCPlusObject); cdecl; external BePascalLibName name 'BAlert_uint32 _reserved[4]';
|
|
}
|
|
implementation
|
|
|
|
constructor TAlert.Create(title : PChar; text : PChar; button1 : PChar;
|
|
button2 : PChar; button3 : PChar; width : TButton_Width;
|
|
kind{type} : TAlert_Type);
|
|
begin
|
|
CPlusObject := BAlert_Create(Self, title, text, button1, button2, button3,
|
|
width, kind);
|
|
end;
|
|
|
|
constructor TAlert.Create(title : PChar; text : PChar; button1 : PChar; button2 : PChar; button3 : PChar; width : TButton_Width; spacing : TButton_Spacing; kind{type} : TAlert_Type);
|
|
begin
|
|
CPlusObject := BAlert_Create_1(Self, title, text, button1, button2, button3,
|
|
width, spacing, kind{type});
|
|
end;
|
|
|
|
constructor TAlert.Create(data : TMessage);
|
|
begin
|
|
CPlusObject := BAlert_Create_2(Self, data.CPlusObject);
|
|
end;
|
|
|
|
destructor TAlert.Destroy;
|
|
begin
|
|
BAlert_Free(CPlusObject);
|
|
end;
|
|
|
|
function TAlert.Instantiate(data : TMessage) : TArchivable;
|
|
begin
|
|
Result := BAlert_Instantiate(CPlusObject, data.CPlusObject);
|
|
end;
|
|
|
|
function TAlert.Archive(data : TMessage; deep : boolean) : TStatus_t;
|
|
begin
|
|
Result := BAlert_Archive(CPlusObject, data.CPlusObject, deep);
|
|
end;
|
|
|
|
procedure TAlert.SetShortcut(button_index : integer; key : Char);
|
|
begin
|
|
BAlert_SetShortcut(CPlusObject, button_index, key);
|
|
end;
|
|
|
|
function TAlert.Shortcut(button_index : integer) : Char;
|
|
begin
|
|
Result := BAlert_Shortcut(CPlusObject, button_index);
|
|
end;
|
|
|
|
function TAlert.Go : integer;
|
|
begin
|
|
Result := BAlert_Go(CPlusObject);
|
|
end;
|
|
|
|
function TAlert.Go(invoker : TInvoker) : TStatus_t;
|
|
begin
|
|
Result := BAlert_Go(CPlusObject, invoker.CPlusObject);
|
|
end;
|
|
|
|
procedure TAlert.MessageReceived(an_event : TMessage);
|
|
begin
|
|
BAlert_MessageReceived(CPlusObject, an_event.CPlusObject);
|
|
end;
|
|
|
|
procedure TAlert.FrameResized(new_width : double; new_height : double);
|
|
begin
|
|
BAlert_FrameResized(CPlusObject, new_width, new_height);
|
|
end;
|
|
|
|
function TAlert.ButtonAt(index : integer) : TButton;
|
|
begin
|
|
Result := BAlert_ButtonAt(CPlusObject, index);
|
|
end;
|
|
|
|
function TAlert.TextView : TTextView;
|
|
begin
|
|
Result := BAlert_TextView(CPlusObject);
|
|
end;
|
|
|
|
function TAlert.ResolveSpecifier(msg : TMessage; index : integer; specifier : TMessage; form : integer; properti : PChar) : THandler;
|
|
begin
|
|
Result := BAlert_ResolveSpecifier(CPlusObject, msg.CPlusObject, index, specifier.CPlusObject, form, properti);
|
|
end;
|
|
|
|
function TAlert.GetSupportedSuites(data : TMessage) : TStatus_t;
|
|
begin
|
|
Result := BAlert_GetSupportedSuites(CPlusObject, data.CPlusObject);
|
|
end;
|
|
|
|
procedure TAlert.DispatchMessage(msg : TMessage; handler : THandler);
|
|
begin
|
|
BAlert_DispatchMessage(CPlusObject, msg.CPlusObject, handler.CPlusObject);
|
|
end;
|
|
|
|
procedure TAlert.Quit;
|
|
begin
|
|
BAlert_Quit(CPlusObject);
|
|
end;
|
|
|
|
function TAlert.QuitRequested : boolean;
|
|
begin
|
|
Result := BAlert_QuitRequested(CPlusObject);
|
|
end;
|
|
|
|
function TAlert.AlertPosition(width : double; height : double) : TPoint;
|
|
begin
|
|
Result := BAlert_AlertPosition(CPlusObject, width, height);
|
|
end;
|
|
|
|
{
|
|
function TAlert.Perform(d : TPerform_code; arg : Pointer) : TStatus_t;
|
|
begin
|
|
Result := BAlert_Perform(CPlusObject, d, arg);
|
|
end;
|
|
|
|
procedure TAlert._ReservedAlert1;
|
|
begin
|
|
BAlert__ReservedAlert1(CPlusObject);
|
|
end;
|
|
|
|
procedure TAlert._ReservedAlert2;
|
|
begin
|
|
BAlert__ReservedAlert2(CPlusObject);
|
|
end;
|
|
|
|
procedure TAlert._ReservedAlert3;
|
|
begin
|
|
BAlert__ReservedAlert3(CPlusObject);
|
|
end;
|
|
|
|
procedure TAlert.InitObject(text : PChar; button1 : PChar; button2 : PChar; button3 : PChar; width : TButton_Width; spacing : TButton_Spacing; type : TAlert_Type);
|
|
begin
|
|
BAlert_InitObject(CPlusObject, text, button1, button2, button3, width, spacing, type);
|
|
end;
|
|
|
|
function TAlert.InitIcon : TBitmap;
|
|
begin
|
|
Result := BAlert_InitIcon(CPlusObject);
|
|
end;
|
|
|
|
procedure TAlert.sem_id fAlertSem;
|
|
begin
|
|
BAlert_sem_id fAlertSem(CPlusObject);
|
|
end;
|
|
|
|
procedure TAlert.int32 fAlertVal;
|
|
begin
|
|
BAlert_int32 fAlertVal(CPlusObject);
|
|
end;
|
|
|
|
procedure TAlert.BButton *fButtons[3];
|
|
begin
|
|
BAlert_BButton *fButtons[3](CPlusObject);
|
|
end;
|
|
|
|
procedure TAlert.BTextView *fTextView;
|
|
begin
|
|
BAlert_BTextView *fTextView(CPlusObject);
|
|
end;
|
|
|
|
procedure TAlert.char fKeys[3];
|
|
begin
|
|
BAlert_char fKeys[3](CPlusObject);
|
|
end;
|
|
|
|
procedure TAlert.alert_type fMsgType;
|
|
begin
|
|
BAlert_alert_type fMsgType(CPlusObject);
|
|
end;
|
|
|
|
procedure TAlert.button_width fButtonWidth;
|
|
begin
|
|
BAlert_button_width fButtonWidth(CPlusObject);
|
|
end;
|
|
|
|
procedure TAlert.BInvoker *fInvoker;
|
|
begin
|
|
BAlert_BInvoker *fInvoker(CPlusObject);
|
|
end;
|
|
|
|
procedure TAlert.uint32 _reserved[4];
|
|
begin
|
|
BAlert_uint32 _reserved[4](CPlusObject);
|
|
end;
|
|
}
|
|
|
|
end.
|