From 73d044331a53b62fdefed0c3cb82d695e8923f6a Mon Sep 17 00:00:00 2001 From: ocoursiere Date: Fri, 13 Dec 2002 00:29:52 +0000 Subject: [PATCH] Fixes and start of BButton support. GUI is comming ! --- bepascal/bepascal/be/app/Invoker.cpp | 352 ++++++++++++ bepascal/bepascal/be/app/Messenger.cpp | 278 +++++++++ bepascal/bepascal/be/app/invoker.pp | 276 +++++++++ bepascal/bepascal/be/app/messenger.pp | 240 ++++++++ bepascal/bepascal/be/bepas_kernel/beobj.pp | 6 + bepascal/bepascal/be/interface/Button.cpp | 555 ++++++++++++++++++ bepascal/bepascal/be/interface/Control.cpp | 532 +++++++++++++++++ bepascal/bepascal/be/interface/View.cpp | 1 + bepascal/bepascal/be/interface/Window.cpp | 1 + bepascal/bepascal/be/interface/button.pp | 332 +++++++++++ bepascal/bepascal/be/interface/control.h | 46 ++ bepascal/bepascal/be/interface/control.pp | 368 ++++++++++++ bepascal/bepascal/be/interface/view.pp | 7 +- bepascal/bepascal/be/kernel/os.pp | 4 + bepascal/bepascal/be/support/DataIO.cpp | 385 +++++++++++++ bepascal/bepascal/be/support/dataio.pp | 629 +++++++++++++++++++++ bepascal/bepascal/bepascal/bepascal.proj | Bin 15510 -> 16316 bytes bepascal/bepascal/hookgen/hookgen.pp | 2 +- bepascal/bepascal/test_app/hello.pp | 77 ++- bepascal/bepascal/test_app/test.pp | 3 +- 20 files changed, 4077 insertions(+), 17 deletions(-) create mode 100644 bepascal/bepascal/be/app/Invoker.cpp create mode 100644 bepascal/bepascal/be/app/Messenger.cpp create mode 100644 bepascal/bepascal/be/app/invoker.pp create mode 100644 bepascal/bepascal/be/app/messenger.pp create mode 100644 bepascal/bepascal/be/interface/Button.cpp create mode 100644 bepascal/bepascal/be/interface/Control.cpp create mode 100644 bepascal/bepascal/be/interface/button.pp create mode 100644 bepascal/bepascal/be/interface/control.h create mode 100644 bepascal/bepascal/be/interface/control.pp create mode 100644 bepascal/bepascal/be/support/DataIO.cpp create mode 100644 bepascal/bepascal/be/support/dataio.pp diff --git a/bepascal/bepascal/be/app/Invoker.cpp b/bepascal/bepascal/be/app/Invoker.cpp new file mode 100644 index 0000000..97a71ac --- /dev/null +++ b/bepascal/bepascal/be/app/Invoker.cpp @@ -0,0 +1,352 @@ +#ifndef _INVOKER_CPP_ +#define _INVOKER_CPP_ +/*********************************************************************** + * AUTHOR: nobody + * FILE: Invoker.cpp + * DATE: Sat Nov 30 01:48:14 2002 + * DESCR: + ***********************************************************************/ +#include "Invoker.h" + +#include + +#if defined(__cplusplus) +extern "C" { +#endif + +/*********************************************************************** + * Method: BInvoker::BInvoker + * Params: + * Effects: + ***********************************************************************/ +TCPlusObject BInvoker_Create(TPasObject PasObject) +{ + return new BInvoker(); +} + + +/*********************************************************************** + * Method: BInvoker::BInvoker + * Params: BMessage *message, const BHandler *handler, const BLooper *looper + * Effects: + ***********************************************************************/ +TCPlusObject BInvoker_Create_1 +(TPasObject PasObject, BMessage *message, const BHandler *handler, const BLooper *looper) +{ + return new BInvoker(message, handler, looper); +} + + +/*********************************************************************** + * Method: BInvoker::BInvoker + * Params: BMessage *message, BMessenger target + * Effects: + ***********************************************************************/ +TCPlusObject BInvoker_Create_2 +(TPasObject PasObject, BMessage *message, BMessenger target) +{ + return new BInvoker(message, target); +} + + +/*********************************************************************** + * Method: BInvoker::~BInvoker + * Params: + * Effects: + ***********************************************************************/ +void BInvoker_Free(BInvoker *Invoker) +{ + delete Invoker; +} + + +/*********************************************************************** + * Method: BInvoker::SetMessage + * Params: BMessage *message + * Returns: status_t + * Effects: + ***********************************************************************/ +status_t +BInvoker_SetMessage(BInvoker *Invoker, BMessage *message) +{ + return Invoker->SetMessage(message); +} + + +/*********************************************************************** + * Method: BInvoker::Message + * Params: + * Returns: BMessage * + * Effects: + ***********************************************************************/ +BMessage * +BInvoker_Message(BInvoker *Invoker) +{ + return Invoker->Message(); +} + + +/*********************************************************************** + * Method: BInvoker::Command + * Params: + * Returns: uint32 + * Effects: + ***********************************************************************/ +uint32 +BInvoker_Command(BInvoker *Invoker) +{ + return Invoker->Command(); +} + + +/*********************************************************************** + * Method: BInvoker::SetTarget + * Params: const BHandler *h, const BLooper *loop + * Returns: status_t + * Effects: + ***********************************************************************/ +status_t +BInvoker_SetTarget(BInvoker *Invoker, const BHandler *h, const BLooper *loop) +{ + return Invoker->SetTarget(h, loop); +} + + +/*********************************************************************** + * Method: BInvoker::SetTarget + * Params: BMessenger messenger + * Returns: status_t + * Effects: + ***********************************************************************/ +status_t +BInvoker_SetTarget_1 +(BInvoker *Invoker, BMessenger messenger) +{ + return Invoker->SetTarget(messenger); +} + + +/*********************************************************************** + * Method: BInvoker::IsTargetLocal + * Params: + * Returns: bool + * Effects: + ***********************************************************************/ +bool +BInvoker_IsTargetLocal(BInvoker *Invoker) +{ + return Invoker->IsTargetLocal(); +} + + +/*********************************************************************** + * Method: BInvoker::Target + * Params: BLooper **looper + * Returns: BHandler * + * Effects: + ***********************************************************************/ +BHandler * +BInvoker_Target(BInvoker *Invoker, BLooper **looper) +{ + return Invoker->Target(looper); +} + + +/*********************************************************************** + * Method: BInvoker::Messenger + * Params: + * Returns: BMessenger + * Effects: + ***********************************************************************/ +BMessenger +BInvoker_Messenger(BInvoker *Invoker) +{ + return Invoker->Messenger(); +} + + +/*********************************************************************** + * Method: BInvoker::SetHandlerForReply + * Params: BHandler *handler + * Returns: status_t + * Effects: + ***********************************************************************/ +status_t +BInvoker_SetHandlerForReply(BInvoker *Invoker, BHandler *handler) +{ + return Invoker->SetHandlerForReply(handler); +} + + +/*********************************************************************** + * Method: BInvoker::HandlerForReply + * Params: + * Returns: BHandler * + * Effects: + ***********************************************************************/ +BHandler * +BInvoker_HandlerForReply(BInvoker *Invoker) +{ + return Invoker->HandlerForReply(); +} + + +/*********************************************************************** + * Method: BInvoker::Invoke + * Params: BMessage *msg + * Returns: status_t + * Effects: + ***********************************************************************/ +status_t +BInvoker_Invoke(BInvoker *Invoker, BMessage *msg) +{ + return Invoker->Invoke(msg); +} + + +/*********************************************************************** + * Method: BInvoker::InvokeNotify + * Params: BMessage *msg, uint32 kind + * Returns: status_t + * Effects: + ***********************************************************************/ +status_t +BInvoker_InvokeNotify_1 +(BInvoker *Invoker, BMessage *msg, uint32 kind) +{ + return Invoker->InvokeNotify(msg, kind); +} + + +/*********************************************************************** + * Method: BInvoker::SetTimeout + * Params: bigtime_t timeout + * Returns: status_t + * Effects: + ***********************************************************************/ +status_t +BInvoker_SetTimeout(BInvoker *Invoker, bigtime_t timeout) +{ + return Invoker->SetTimeout(timeout); +} + + +/*********************************************************************** + * Method: BInvoker::Timeout + * Params: + * Returns: bigtime_t + * Effects: + ***********************************************************************/ +bigtime_t +BInvoker_Timeout(BInvoker *Invoker) +{ + return Invoker->Timeout(); +} + +// protected +/*********************************************************************** + * Method: BInvoker::InvokeKind + * Params: bool *notify + * Returns: uint32 + * Effects: + ***********************************************************************/ +/* uint32 +BInvoker_InvokeKind(BInvoker *Invoker, bool *notify) +{ + return Invoker->InvokeKind(notify); +} +*/ + +/*********************************************************************** + * Method: BInvoker::BeginInvokeNotify + * Params: uint32 kind + * Returns: void + * Effects: + ***********************************************************************/ +/*void +BInvoker_BeginInvokeNotify(BInvoker *Invoker, uint32 kind) +{ + Invoker->BeginInvokeNotify(kind); +} +*/ + +/*********************************************************************** + * Method: BInvoker::EndInvokeNotify + * Params: + * Returns: void + * Effects: + ***********************************************************************/ +/*void +BInvoker_EndInvokeNotify(BInvoker *Invoker) +{ + Invoker->EndInvokeNotify(); +} +*/ + +///*********************************************************************** +// * Method: BInvoker::_ReservedInvoker1 +// * Params: +// * Returns: void +// * Effects: +// ***********************************************************************/ +//void +//BInvoker__ReservedInvoker1(BInvoker *Invoker) +//{ +// Invoker->_ReservedInvoker1(); +//} +// +// +///*********************************************************************** +// * Method: BInvoker::_ReservedInvoker2 +// * Params: +// * Returns: void +// * Effects: +// ***********************************************************************/ +//void +//BInvoker__ReservedInvoker2(BInvoker *Invoker) +//{ +// Invoker->_ReservedInvoker2(); +//} +// +// +///*********************************************************************** +// * Method: BInvoker::_ReservedInvoker3 +// * Params: +// * Returns: void +// * Effects: +// ***********************************************************************/ +//void +//BInvoker__ReservedInvoker3(BInvoker *Invoker) +//{ +// Invoker->_ReservedInvoker3(); +//} +// +// +///*********************************************************************** +// * Method: BInvoker::BInvoker +// * Params: const BInvoker & +// * Effects: +// ***********************************************************************/ +//TCPlusObject BInvoker_Create(TPasObject PasObject, const BInvoker &) +//{ +// return new BPInvoker(PasObject, ); +//} +// +// +///*********************************************************************** +// * Method: BInvoker::operator= +// * Params: const BInvoker & +// * Returns: BInvoker & +// * Effects: +// ***********************************************************************/ +//BInvoker & +//BInvoker_operator=(BInvoker *Invoker, const BInvoker &) +//{ +// return Invoker->operator=(); +//} + +#if defined(__cplusplus) +} +#endif + +#endif /* _INVOKER_CPP_ */ diff --git a/bepascal/bepascal/be/app/Messenger.cpp b/bepascal/bepascal/be/app/Messenger.cpp new file mode 100644 index 0000000..0df2ae3 --- /dev/null +++ b/bepascal/bepascal/be/app/Messenger.cpp @@ -0,0 +1,278 @@ +#ifndef _MESSENGER_CPP_ +#define _MESSENGER_CPP_ + +/*********************************************************************** + * AUTHOR: nobody + * FILE: Messenger.cpp + * DATE: Sat Nov 30 02:32:17 2002 + * DESCR: + ***********************************************************************/ + +#include "Messenger.h" +#include + +#if defined(__cplusplus) +extern "C" { +#endif + +/*********************************************************************** + * Method: BMessenger::BMessenger + * Params: + * Effects: + ***********************************************************************/ +TCPlusObject BMessenger_Create(TPasObject PasObject) +{ + return new BMessenger(); +} + + +/*********************************************************************** + * Method: BMessenger::BMessenger + * Params: const char *mime_sig, team_id team, status_t *perr + * Effects: + ***********************************************************************/ +TCPlusObject BMessenger_Create_1 +(TPasObject PasObject, const char *mime_sig, team_id team, status_t *perr) +{ + return new BMessenger(mime_sig, team, perr); +} + + +/*********************************************************************** + * Method: BMessenger::BMessenger + * Params: const BHandler *handler, const BLooper *looper, status_t *perr + * Effects: + ***********************************************************************/ +TCPlusObject BMessenger_Create_2 +(TPasObject PasObject, const BHandler *handler, const BLooper *looper, status_t *perr) +{ + return new BMessenger(handler, looper, perr); +} + + +/*********************************************************************** + * Method: BMessenger::BMessenger + * Params: const BMessenger &from + * Effects: + ***********************************************************************/ +TCPlusObject BMessenger_Create_3 +(TPasObject PasObject, const BMessenger &from) +{ + return new BMessenger(from); +} + + +/*********************************************************************** + * Method: BMessenger::~BMessenger + * Params: + * Effects: + ***********************************************************************/ +void BMessenger_Free(BMessenger *Messenger) +{ + delete Messenger; +} + + +/*********************************************************************** + * Method: BMessenger::IsTargetLocal + * Params: + * Returns: bool + * Effects: + ***********************************************************************/ +bool +BMessenger_IsTargetLocal(BMessenger *Messenger) +{ + return Messenger->IsTargetLocal(); +} + + +/*********************************************************************** + * Method: BMessenger::Target + * Params: BLooper **looper + * Returns: BHandler * + * Effects: + ***********************************************************************/ +BHandler * +BMessenger_Target(BMessenger *Messenger, BLooper **looper) +{ + return Messenger->Target(looper); +} + + +/*********************************************************************** + * Method: BMessenger::LockTarget + * Params: + * Returns: bool + * Effects: + ***********************************************************************/ +bool +BMessenger_LockTarget(BMessenger *Messenger) +{ + return Messenger->LockTarget(); +} + + +/*********************************************************************** + * Method: BMessenger::LockTargetWithTimeout + * Params: bigtime_t timeout + * Returns: status_t + * Effects: + ***********************************************************************/ +status_t +BMessenger_LockTargetWithTimeout_1 +(BMessenger *Messenger, bigtime_t timeout) +{ + return Messenger->LockTargetWithTimeout(timeout); +} + + +/*********************************************************************** + * Method: BMessenger::SendMessage + * Params: uint32 command, BHandler *reply_to + * Returns: status_t + * Effects: + ***********************************************************************/ +status_t +BMessenger_SendMessage(BMessenger *Messenger, uint32 command, BHandler *reply_to) +{ + return Messenger->SendMessage(command, reply_to); +} + + +/*********************************************************************** + * Method: BMessenger::SendMessage + * Params: BMessage *a_message, BHandler *reply_to, bigtime_t timeout + * Returns: status_t + * Effects: + ***********************************************************************/ +status_t +BMessenger_SendMessage_1 +(BMessenger *Messenger, BMessage *a_message, BHandler *reply_to, bigtime_t timeout) +{ + return Messenger->SendMessage(a_message, reply_to, timeout); +} + + +/*********************************************************************** + * Method: BMessenger::SendMessage + * Params: BMessage *a_message, BMessenger reply_to, bigtime_t timeout + * Returns: status_t + * Effects: + ***********************************************************************/ +status_t +BMessenger_SendMessage_2 +(BMessenger *Messenger, BMessage *a_message, BMessenger reply_to, bigtime_t timeout) +{ + return Messenger->SendMessage(a_message, reply_to, timeout); +} + + +/*********************************************************************** + * Method: BMessenger::SendMessage + * Params: uint32 command, BMessage *reply + * Returns: status_t + * Effects: + ***********************************************************************/ +status_t +BMessenger_SendMessage_3 +(BMessenger *Messenger, uint32 command, BMessage *reply) +{ + return Messenger->SendMessage(command, reply); +} + + +/*********************************************************************** + * Method: BMessenger::SendMessage + * Params: BMessage *a_message, BMessage *reply, bigtime_t send_timeout, bigtime_t reply_timeout + * Returns: status_t + * Effects: + ***********************************************************************/ +status_t +BMessenger_SendMessage_4 +(BMessenger *Messenger, BMessage *a_message, BMessage *reply, bigtime_t send_timeout, bigtime_t reply_timeout) +{ + return Messenger->SendMessage(a_message, reply, send_timeout, reply_timeout); +} + + +///*********************************************************************** +// * Method: BMessenger::operator= +// * Params: const BMessenger &from +// * Returns: BMessenger & +// * Effects: +// ***********************************************************************/ +//BMessenger & +//BMessenger_operator=(BMessenger *Messenger, const BMessenger &from) +//{ +// return Messenger->operator=(from); +//} +// +// +///*********************************************************************** +// * Method: BMessenger::operator== +// * Params: const BMessenger &other +// * Returns: bool +// * Effects: +// ***********************************************************************/ +//bool +//BMessenger_operator==_1 +//(BMessenger *Messenger, const BMessenger &other) const +//{ +// return Messenger->operator==(other); +//} + + +/*********************************************************************** + * Method: BMessenger::IsValid + * Params: + * Returns: bool + * Effects: + ***********************************************************************/ +bool +BMessenger_IsValid(BMessenger *Messenger) +{ + return Messenger->IsValid(); +} + + +/*********************************************************************** + * Method: BMessenger::Team + * Params: + * Returns: team_id + * Effects: + ***********************************************************************/ +team_id +BMessenger_Team(BMessenger *Messenger) +{ + return Messenger->Team(); +} + + +///*********************************************************************** +// * Method: BMessenger::BMessenger +// * Params: team_id team, port_id port, int32 token, bool preferred +// * Effects: +// ***********************************************************************/ +//TCPlusObject BMessenger_Create_4(TPasObject PasObject, team_id team, port_id port, int32 token, bool preferred) +//{ +// return new BMessenger(team, port, token, preferred); +//} + + +///*********************************************************************** +// * Method: BMessenger::InitData +// * Params: const char *mime_sig, team_id team, status_t *perr +// * Returns: void +// * Effects: +// ***********************************************************************/ +//void +//BMessenger_InitData(BMessenger *Messenger, const char *mime_sig, team_id team, status_t *perr) +//{ +// Messenger->InitData(mime_sig, team, perr); +//} + +#if defined(__cplusplus) +} +#endif + +#endif /* _MESSENGER_CPP_ */ \ No newline at end of file diff --git a/bepascal/bepascal/be/app/invoker.pp b/bepascal/bepascal/be/app/invoker.pp new file mode 100644 index 0000000..2b0f9cf --- /dev/null +++ b/bepascal/bepascal/be/app/invoker.pp @@ -0,0 +1,276 @@ +{ BePascal - A pascal wrapper around the BeOS API + Copyright (C) 2002 Olivier Coursiere + Eric Jourde + + 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 invoker; + +interface + +uses + beobj, Message, Handler, Looper, SupportDefs, Messenger; + +type + TInvoker = class(TBeObject) + private + public + constructor Create; override; + constructor Create(aMessage : TMessage; handler : THandler; looper : TLooper); + constructor Create(aMessage : TMessage; aTarget : TMessenger); + destructor Destroy; override; + function SetMessage(aMessage : TMessage) : TStatus_t; + function Message : TMessage; + function Command : Cardinal; + function SetTarget(h : THandler; loop : TLooper) : TStatus_t; + function SetTarget(aMessenger : TMessenger) : TStatus_t; + function IsTargetLocal : boolean; + function Target(looper : TLooper) : THandler; + function Messenger : TMessenger; + function SetHandlerForReply(handler : THandler) : TStatus_t; + function HandlerForReply : THandler; + function Invoke(msg : TMessage) : TStatus_t; +// function InvokeNotify(msg : TMessage; kind : Cardinal) : TStatus_t; + function SetTimeout(aTimeout : TBigtime_t) : TStatus_t; + function Timeout : TBigtime_t; +// function InvokeKind(notify : boolean) : Cardinal; +// procedure BeginInvokeNotify(kind : Cardinal); +// procedure EndInvokeNotify; +// procedure _ReservedInvoker1; +// procedure _ReservedInvoker2; +// procedure _ReservedInvoker3; + constructor Create(aInvoker : TInvoker); +// function operator=( : TInvoker) : TInvoker; +// procedure BMessage *fMessage; +// procedure BMessenger fMessenger; +// procedure BHandler *fReplyTo; +// procedure uint32 fTimeout; +// procedure uint32 fNotifyKind; +// procedure uint32 _reserved[2]; + end; + +function BInvoker_Create(AObject : TBeObject) : TCplusObject; cdecl; external BePascalLibName name 'BInvoker_Create'; +function BInvoker_Create(AObject : TBeObject; message : TCplusObject; handler : TCplusObject; looper : TCPlusObject) : TCplusObject; cdecl; external BePascalLibName name 'BInvoker_Create'; +function BInvoker_Create(AObject : TBeObject; message : TCplusObject; target : TCplusObject) : TCplusObject; cdecl; external BePascalLibName name 'BInvoker_Create'; +procedure BInvoker_Free(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BInvoker_Free'; +function BInvoker_SetMessage(AObject : TCPlusObject; message : TCplusObject) : TStatus_t; cdecl; external BePascalLibName name 'BInvoker_SetMessage'; +function BInvoker_Message(AObject : TCPlusObject) : TCPlusObject; cdecl; external BePascalLibName name 'BInvoker_Message'; +function BInvoker_Command(AObject : TCPlusObject) : Cardinal; cdecl; external BePascalLibName name 'BInvoker_Command'; +function BInvoker_SetTarget(AObject : TCPlusObject; h : TCPlusObject; loop : TCPlusObject) : TStatus_t; cdecl; external BePascalLibName name 'BInvoker_SetTarget'; +function BInvoker_SetTarget(AObject : TCPlusObject; messenger : TCplusObject) : TStatus_t; cdecl; external BePascalLibName name 'BInvoker_SetTarget_1'; +function BInvoker_IsTargetLocal(AObject : TCPlusObject) : boolean; cdecl; external BePascalLibName name 'BInvoker_IsTargetLocal'; +function BInvoker_Target(AObject : TCPlusObject; looper : TCplusObject) : THandler; cdecl; external BePascalLibName name 'BInvoker_Target'; +function BInvoker_Messenger(AObject : TCPlusObject) : TCPlusObject; cdecl; external BePascalLibName name 'BInvoker_Messenger'; +function BInvoker_SetHandlerForReply(AObject : TCPlusObject; handler : TCplusObject) : TStatus_t; cdecl; external BePascalLibName name 'BInvoker_SetHandlerForReply'; +function BInvoker_HandlerForReply(AObject : TCPlusObject) : THandler; cdecl; external BePascalLibName name 'BInvoker_HandlerForReply'; +function BInvoker_Invoke(AObject : TCPlusObject; msg : TCplusObject) : TStatus_t; cdecl; external BePascalLibName name 'BInvoker_Invoke'; +//function BInvoker_InvokeNotify(AObject : TCPlusObject; msg : TCplusObject; kind : Cardinal) : TStatus_t; cdecl; external BePascalLibName name 'BInvoker_InvokeNotify'; +function BInvoker_SetTimeout(AObject : TCPlusObject; timeout : TBigtime_t) : TStatus_t; cdecl; external BePascalLibName name 'BInvoker_SetTimeout'; +function BInvoker_Timeout(AObject : TCPlusObject) : TBigtime_t; cdecl; external BePascalLibName name 'BInvoker_Timeout'; +//function BInvoker_InvokeKind(AObject : TCPlusObject; notify : boolean) : Cardinal; cdecl; external BePascalLibName name 'BInvoker_InvokeKind'; +//procedure BInvoker_BeginInvokeNotify(AObject : TCPlusObject; kind : Cardinal); cdecl; external BePascalLibName name 'BInvoker_BeginInvokeNotify'; +//procedure BInvoker_EndInvokeNotify(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BInvoker_EndInvokeNotify'; +//procedure BInvoker__ReservedInvoker1(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BInvoker__ReservedInvoker1'; +//procedure BInvoker__ReservedInvoker2(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BInvoker__ReservedInvoker2'; +//procedure BInvoker__ReservedInvoker3(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BInvoker__ReservedInvoker3'; +function BInvoker_Create(AObject : TBeObject; aInvoker : TCPlusObject) : TCplusObject; cdecl; external BePascalLibName name 'BInvoker_Create'; +//function BInvoker_operator=(AObject : TCPlusObject; : TInvoker) : TInvoker; cdecl; external BePascalLibName name 'BInvoker_operator='; +//procedure BInvoker_BMessage *fMessage(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BInvoker_BMessage *fMessage'; +//procedure BInvoker_BMessenger fMessenger(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BInvoker_BMessenger fMessenger'; +//procedure BInvoker_BHandler *fReplyTo(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BInvoker_BHandler *fReplyTo'; +//procedure BInvoker_uint32 fTimeout(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BInvoker_uint32 fTimeout'; +//procedure BInvoker_uint32 fNotifyKind(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BInvoker_uint32 fNotifyKind'; +//procedure BInvoker_uint32 _reserved[2](AObject : TCPlusObject); cdecl; external BePascalLibName name 'BInvoker_uint32 _reserved[2]'; + +implementation + +constructor TInvoker.Create; +begin + BInvoker_Create(Self); +end; + +constructor TInvoker.Create(aMessage : TMessage; handler : THandler; looper : TLooper); +begin + CPlusObject := BInvoker_Create(Self, aMessage.CPlusObject, handler, looper); +end; + +constructor TInvoker.Create(aMessage : TMessage; aTarget : TMessenger); +begin + CPlusObject := BInvoker_Create(Self, aMessage.CPlusObject, aTarget.CPlusObject); +end; + +destructor TInvoker.Destroy; +begin + BInvoker_Free(CPlusObject); +end; + +function TInvoker.SetMessage(aMessage : TMessage) : TStatus_t; +begin + Result := BInvoker_SetMessage(CPlusObject, aMessage.CPlusObject); +end; + +function TInvoker.Message : TMessage; +begin + Result := TMessage.Wrap(BInvoker_Message(CPlusObject)); +end; + +function TInvoker.Command : Cardinal; +begin + Result := BInvoker_Command(CPlusObject); +end; + +function TInvoker.SetTarget(h : THandler; loop : TLooper) : TStatus_t; +begin + WriteLn('Start of SetTarget'); + if loop <> nil then + begin + WriteLn('Différent de nil'); + Result := BInvoker_SetTarget(CPlusObject, h.CPlusObject, loop.CPlusObject); + end + else if h <> nil then + begin + WriteLn('Egale de nil'); +// Result := BInvoker_SetTarget(CPlusObject, h.CPlusObject, nil); + end + else + begin + WriteLn('nil et nil'); + Result := BInvoker_SetTarget(CPlusObject, nil, nil); + end; + WriteLn('End of SetTarget'); +end; + +function TInvoker.SetTarget(aMessenger : TMessenger) : TStatus_t; +begin + Result := BInvoker_SetTarget(CPlusObject, aMessenger.CPlusObject); +end; + +function TInvoker.IsTargetLocal : boolean; +begin + Result := BInvoker_IsTargetLocal(CPlusObject); +end; + +function TInvoker.Target(looper : TLooper) : THandler; +begin + Result := BInvoker_Target(CPlusObject, looper.CPlusObject); +end; + +function TInvoker.Messenger : TMessenger; +begin + Result := TMessenger.Wrap(BInvoker_Messenger(CPlusObject)); +end; + +function TInvoker.SetHandlerForReply(handler : THandler) : TStatus_t; +begin + Result := BInvoker_SetHandlerForReply(CPlusObject, handler.CPlusObject); +end; + +function TInvoker.HandlerForReply : THandler; +begin + Result := BInvoker_HandlerForReply(CPlusObject); +end; + +function TInvoker.Invoke(msg : TMessage) : TStatus_t; +begin + Result := BInvoker_Invoke(CPlusObject, msg.CPlusObject); +end; + +//function TInvoker.InvokeNotify(msg : TMessage; kind : Cardinal) : TStatus_t; +//begin +// BInvoker_InvokeNotify(CPlusObject, msg.CPlusObject, kind); +//end; + +function TInvoker.SetTimeout(aTimeout : TBigtime_t) : TStatus_t; +begin + Result := BInvoker_SetTimeout(CPlusObject, timeout); +end; + +function TInvoker.Timeout : TBigtime_t; +begin + Result := BInvoker_Timeout(CPlusObject); +end; + +//function TInvoker.InvokeKind(notify : boolean) : Cardinal; +//begin +// BInvoker_InvokeKind(CPlusObject, notify); +//end; +// +//procedure TInvoker.BeginInvokeNotify(kind : Cardinal); +//begin +// BInvoker_BeginInvokeNotify(CPlusObject, kind); +//end; +// +//procedure TInvoker.EndInvokeNotify; +//begin +// BInvoker_EndInvokeNotify(CPlusObject); +//end; + +//procedure TInvoker._ReservedInvoker1; +//begin +// BInvoker__ReservedInvoker1(CPlusObject); +//end; +// +//procedure TInvoker._ReservedInvoker2; +//begin +// BInvoker__ReservedInvoker2(CPlusObject); +//end; +// +//procedure TInvoker._ReservedInvoker3; +//begin +// BInvoker__ReservedInvoker3(CPlusObject); +//end; + +constructor TInvoker.Create(ainvoker : TInvoker); +begin + BInvoker_Create(Self, aInvoker); +end; + +//function TInvoker.operator=( : TInvoker) : TInvoker; +//begin +// BInvoker_operator=(CPlusObject, ); +//end; + +//procedure TInvoker.BMessage *fMessage; +//begin +// BInvoker_BMessage *fMessage(CPlusObject); +//end; +// +//procedure TInvoker.BMessenger fMessenger; +//begin +// BInvoker_BMessenger fMessenger(CPlusObject); +//end; +// +//procedure TInvoker.BHandler *fReplyTo; +//begin +// BInvoker_BHandler *fReplyTo(CPlusObject); +//end; +// +//procedure TInvoker.uint32 fTimeout; +//begin +// BInvoker_uint32 fTimeout(CPlusObject); +//end; +// +//procedure TInvoker.uint32 fNotifyKind; +//begin +// BInvoker_uint32 fNotifyKind(CPlusObject); +//end; +// +//procedure TInvoker.uint32 _reserved[2]; +//begin +// BInvoker_uint32 _reserved[2](CPlusObject); +//end; + + +end. diff --git a/bepascal/bepascal/be/app/messenger.pp b/bepascal/bepascal/be/app/messenger.pp new file mode 100644 index 0000000..67708b8 --- /dev/null +++ b/bepascal/bepascal/be/app/messenger.pp @@ -0,0 +1,240 @@ +{ BePascal - A pascal wrapper around the BeOS API + Copyright (C) 2002 Olivier Coursiere + Eric Jourde + + 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 messenger; + +interface + +uses + beobj, os, Handler, Looper, Message, SupportDefs; + +type + TMessenger = class(TBeObject) + private + public + constructor Create; override; + constructor Create(mime_sig : PChar; aTeam : TTeam_id; perr : PStatus_t); + constructor Create(handler : THandler; looper : TLooper; perr : PStatus_t); + constructor Create(from : TMessenger); + destructor Destroy; override; + function IsTargetLocal : boolean; + function Target(looper : TLooper) : THandler; + function LockTarget : boolean; +// function LockTargetWithTimeout(timeout : TBigtime_t) : TStatus_t; + function SendMessage(command : Cardinal; reply_to : THandler) : TStatus_t; + function SendMessage(a_message : TMessage; reply_to : THandler; timeout : TBigtime_t) : TStatus_t; + function SendMessage(a_message : TMessage; reply_to : TMessenger; timeout : TBigtime_t) : TStatus_t; + function SendMessage(command : Cardinal; reply : TMessage) : TStatus_t; + function SendMessage(a_message : TMessage; reply : TMessage; send_timeout : TBigtime_t; reply_timeout : TBigtime_t) : TStatus_t; +// function operator=(from : TMessenger) : TMessenger; +// function operator==(other : TMessenger) : boolean; + function IsValid : boolean; + function Team : TTeam_id; + constructor Create(aTeam : TTeam_id; port : TPort_id; token : integer; preferred : boolean); +// procedure InitData(mime_sig : PChar; aTeam : TTeam_id; perr : PStatus_t); +// procedure port_id fPort; +// procedure int32 fHandlerToken; +// procedure team_id fTeam; +// procedure int32 extra0; +// procedure int32 extra1; +// procedure bool fPreferredTarget; +// procedure bool extra2; +// procedure bool extra3; +// procedure bool extra4; + end; + +function BMessenger_Create(AObject : TBeObject) : TCplusObject; cdecl; external BePascalLibName name 'BMessenger_Create'; +function BMessenger_Create(AObject : TBeObject; mime_sig : PChar; team : TTeam_id; perr : PStatus_t) : TCplusObject; cdecl; external BePascalLibName name 'BMessenger_Create'; +function BMessenger_Create(AObject : TBeObject; handler : THandler; looper : TLooper; perr : PStatus_t) : TCplusObject; cdecl; external BePascalLibName name 'BMessenger_Create'; +function BMessenger_Create(AObject : TBeObject; from : TMessenger) : TCplusObject; cdecl; external BePascalLibName name 'BMessenger_Create'; +procedure BMessenger_Free(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BMessenger_Free'; +function BMessenger_IsTargetLocal(AObject : TCPlusObject) : boolean; cdecl; external BePascalLibName name 'BMessenger_IsTargetLocal'; +function BMessenger_Target(AObject : TCPlusObject; looper : TCplusObject) : THandler; cdecl; external BePascalLibName name 'BMessenger_Target'; +function BMessenger_LockTarget(AObject : TCPlusObject) : boolean; cdecl; external BePascalLibName name 'BMessenger_LockTarget'; +//function BMessenger_LockTargetWithTimeout(AObject : TCPlusObject; timeout : TBigtime_t) : TStatus_t; cdecl; external BePascalLibName name 'BMessenger_LockTargetWithTimeout'; +function BMessenger_SendMessage(AObject : TCPlusObject; command : Cardinal; reply_to : THandler) : TStatus_t; cdecl; external BePascalLibName name 'BMessenger_SendMessage'; +function BMessenger_SendMessage(AObject : TCPlusObject; a_message : TCplusObject; reply_to : TCplusObject; timeout : TBigtime_t) : TStatus_t; cdecl; external BePascalLibName name 'BMessenger_SendMessage'; +// How to handle this ? (remove the comment to see what to fix) +//function BMessenger_SendMessage(AObject : TCPlusObject; a_message : TCplusObject; reply_to : TCplusObject; timeout : TBigtime_t) : TStatus_t; cdecl; external BePascalLibName name 'BMessenger_SendMessage'; +function BMessenger_SendMessage(AObject : TCPlusObject; command : Cardinal; reply : TCplusObject) : TStatus_t; cdecl; external BePascalLibName name 'BMessenger_SendMessage'; +function BMessenger_SendMessage(AObject : TCPlusObject; a_message : TCplusObject; reply : TCplusObject; send_timeout : TBigtime_t; reply_timeout : TBigtime_t) : TStatus_t; cdecl; external BePascalLibName name 'BMessenger_SendMessage'; +//function BMessenger_operator=(AObject : TCPlusObject; from : TMessenger) : TMessenger; cdecl; external BePascalLibName name 'BMessenger_operator='; +//function BMessenger_operator==(AObject : TCPlusObject; other : TMessenger) : boolean; cdecl; external BePascalLibName name 'BMessenger_operator=='; +function BMessenger_IsValid(AObject : TCPlusObject) : boolean; cdecl; external BePascalLibName name 'BMessenger_IsValid'; +function BMessenger_Team(AObject : TCPlusObject) : TTeam_id; cdecl; external BePascalLibName name 'BMessenger_Team'; +function BMessenger_Create(AObject : TBeObject; team : TTeam_id; port : TPort_id; token : integer; preferred : boolean) : TCplusObject; cdecl; external BePascalLibName name 'BMessenger_Create'; +//procedure BMessenger_InitData(AObject : TCPlusObject; mime_sig : PChar; team : TTeam_id; perr : PStatus_t); cdecl; external BePascalLibName name 'BMessenger_InitData'; +//procedure BMessenger_port_id fPort(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BMessenger_port_id fPort'; +//procedure BMessenger_int32 fHandlerToken(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BMessenger_int32 fHandlerToken'; +//procedure BMessenger_team_id fTeam(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BMessenger_team_id fTeam'; +//procedure BMessenger_int32 extra0(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BMessenger_int32 extra0'; +//procedure BMessenger_int32 extra1(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BMessenger_int32 extra1'; +//procedure BMessenger_bool fPreferredTarget(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BMessenger_bool fPreferredTarget'; +//procedure BMessenger_bool extra2(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BMessenger_bool extra2'; +//procedure BMessenger_bool extra3(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BMessenger_bool extra3'; +//procedure BMessenger_bool extra4(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BMessenger_bool extra4'; + +implementation + +constructor TMessenger.Create; +begin + BMessenger_Create(Self); +end; + +constructor TMessenger.Create(mime_sig : PChar; aTeam : TTeam_id; perr : PStatus_t); +begin + CPlusObject := BMessenger_Create(Self, mime_sig, aTeam, perr); +end; + +constructor TMessenger.Create(handler : THandler; looper : TLooper; perr : PStatus_t); +begin + CPlusObject := BMessenger_Create(Self, handler, looper, perr); +end; + +constructor TMessenger.Create(from : TMessenger); +begin + CPlusObject := BMessenger_Create(Self, from); +end; + +destructor TMessenger.Destroy; +begin + BMessenger_Free(CPlusObject); +end; + +function TMessenger.IsTargetLocal : boolean; +begin + Result := BMessenger_IsTargetLocal(CPlusObject); +end; + +function TMessenger.Target(looper : TLooper) : THandler; +begin + Result := BMessenger_Target(CPlusObject, looper.CPlusObject); +end; + +function TMessenger.LockTarget : boolean; +begin + Result := BMessenger_LockTarget(CPlusObject); +end; + +//function TMessenger.LockTargetWithTimeout(timeout : TBigtime_t) : TStatus_t; +//begin +// BMessenger_LockTargetWithTimeout(CPlusObject, timeout); +//end; + +function TMessenger.SendMessage(command : Cardinal; reply_to : THandler) : TStatus_t; +begin + Result := BMessenger_SendMessage(CPlusObject, command, reply_to.CPlusObject); +end; + +function TMessenger.SendMessage(a_message : TMessage; reply_to : THandler; timeout : TBigtime_t) : TStatus_t; +begin + Result := BMessenger_SendMessage(CPlusObject, a_message.CPlusObject, reply_to.CPlusObject, timeout); +end; + +function TMessenger.SendMessage(a_message : TMessage; reply_to : TMessenger; timeout : TBigtime_t) : TStatus_t; +begin + Result := BMessenger_SendMessage(CPlusObject, a_message.CPlusObject, reply_to.CPlusObject, timeout); +end; + +function TMessenger.SendMessage(command : Cardinal; reply : TMessage) : TStatus_t; +begin + Result := BMessenger_SendMessage(CPlusObject, command, reply.CPlusObject); +end; + +function TMessenger.SendMessage(a_message : TMessage; reply : TMessage; send_timeout : TBigtime_t; reply_timeout : TBigtime_t) : TStatus_t; +begin + Result := BMessenger_SendMessage(CPlusObject, a_message.CPlusObject, reply.CPlusObject, send_timeout, reply_timeout); +end; + +//function TMessenger.operator=(from : TMessenger) : TMessenger; +//begin +// BMessenger_operator=(CPlusObject, from); +//end; +// +//function TMessenger.operator==(other : TMessenger) : boolean; +//begin +// BMessenger_operator==(CPlusObject, other); +//end; + +function TMessenger.IsValid : boolean; +begin + Result := BMessenger_IsValid(CPlusObject); +end; + +function TMessenger.Team : TTeam_id; +begin + Result := BMessenger_Team(CPlusObject); +end; + +constructor TMessenger.Create(aTeam : TTeam_id; port : TPort_id; token : integer; preferred : boolean); +begin + CPlusObject := BMessenger_Create(Self, aTeam, port, token, preferred); +end; + +//procedure TMessenger.InitData(mime_sig : PChar; aTeam : TTeam_id; perr : PStatus_t); +//begin +// BMessenger_InitData(CPlusObject, mime_sig, aTeam, perr); +//end; + +//procedure TMessenger.port_id fPort; +//begin +// BMessenger_port_id fPort(CPlusObject); +//end; +// +//procedure TMessenger.int32 fHandlerToken; +//begin +// BMessenger_int32 fHandlerToken(CPlusObject); +//end; +// +//procedure TMessenger.team_id fTeam; +//begin +// BMessenger_team_id fTeam(CPlusObject); +//end; +// +//procedure TMessenger.int32 extra0; +//begin +// BMessenger_int32 extra0(CPlusObject); +//end; +// +//procedure TMessenger.int32 extra1; +//begin +// BMessenger_int32 extra1(CPlusObject); +//end; +// +//procedure TMessenger.bool fPreferredTarget; +//begin +// BMessenger_bool fPreferredTarget(CPlusObject); +//end; +// +//procedure TMessenger.bool extra2; +//begin +// BMessenger_bool extra2(CPlusObject); +//end; +// +//procedure TMessenger.bool extra3; +//begin +// BMessenger_bool extra3(CPlusObject); +//end; +// +//procedure TMessenger.bool extra4; +//begin +// BMessenger_bool extra4(CPlusObject); +//end; + + +end. diff --git a/bepascal/bepascal/be/bepas_kernel/beobj.pp b/bepascal/bepascal/be/bepas_kernel/beobj.pp index dd2af19..4a378b3 100644 --- a/bepascal/bepascal/be/bepas_kernel/beobj.pp +++ b/bepascal/bepascal/be/bepas_kernel/beobj.pp @@ -40,6 +40,7 @@ type FCPlusObject : TCPlusObject; public constructor Create; virtual; + constructor CreatePas; virtual; constructor Wrap(ACPlusObject : TCPlusObject); virtual; destructor UnWrap; virtual; property CPlusObject : TCPlusObject read FCPlusObject write FCPlusObject; @@ -80,6 +81,11 @@ begin Debug; end; +constructor TBeObject.CreatePas; +begin + Create; +end; + procedure TBeObject.Debug; var size : cardinal; diff --git a/bepascal/bepascal/be/interface/Button.cpp b/bepascal/bepascal/be/interface/Button.cpp new file mode 100644 index 0000000..d886bae --- /dev/null +++ b/bepascal/bepascal/be/interface/Button.cpp @@ -0,0 +1,555 @@ +/* BePascal - A pascal wrapper around the BeOS API + Copyright (C) 2002 Olivier Coursiere + + 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 +*/ + +#ifndef _BUTTON_CPP_ +#define _BUTTON_CPP_ + +/*********************************************************************** + * AUTHOR: nobody + * FILE: Button.cpp + * DATE: Tue Dec 3 00:28:35 2002 + * DESCR: + ***********************************************************************/ +#include "Button.h" + +#include "control.h" +#include + +typedef void (*BButton_MakeDefault_hook) (TPasObject PasObject, bool flag); + +#if defined(__cplusplus) +extern "C" { +#endif + +BButton_MakeDefault_hook Button_MakeDefault_hook; + +#if defined(__cplusplus) +} +#endif + +class BPButton : public BButton, virtual public BPControl +{ + public: + // + BPButton(TPasObject PasObject, + BRect frame, + const char *name, + const char *label, + BMessage *message, + uint32 resizeMask, + uint32 flags); + BPButton(TPasObject PasObject, BMessage *archive); + virtual void MakeDefault(bool flag); + private: +}; + +BPButton::BPButton(TPasObject PasObject, BRect frame, + const char *name, + const char *label, + BMessage *message, + uint32 resizeMask, + uint32 flags) + : + BButton(frame, name, label, message, + resizeMask, flags), + BPControl(PasObject, frame, name, label, message, + resizeMask, flags), + BPView(PasObject, frame, name, resizeMask, flags), + BPHandler(PasObject, name), + BPasObject(PasObject) +{ + +} + +BPButton::BPButton(TPasObject PasObject, BMessage *archive) + :BButton(archive), + BPControl(PasObject, archive), + BPView(PasObject, archive), + BPHandler(PasObject, archive), + BPasObject(PasObject) +{ +} + +void BPButton::MakeDefault(bool flag) +{ + Button_MakeDefault_hook(GetPasObject(), flag); +} + +#if defined(__cplusplus) +extern "C" { +#endif + +/*********************************************************************** + * Method: BButton::~BButton + * Params: + * Effects: + ***********************************************************************/ +void BButton_Free(BButton *Button) +{ + delete Button; +} + + +/*********************************************************************** + * Method: BButton::BButton + * Params: + * Effects: + ***********************************************************************/ +TCPlusObject BButton_Create(TPasObject PasObject, BRect frame, + const char *name, + const char *label, + BMessage *message, + uint32 resizeMask, + uint32 flags) +{ + return new BPButton(PasObject, frame, name, label, message, resizeMask, flags); +} + +/*********************************************************************** + * Method: BButton::BButton + * Params: BMessage *data + * Effects: + ***********************************************************************/ +TCPlusObject BButton_Create_1(TPasObject PasObject, BMessage *data) +{ + return new BPButton(PasObject, data); +} + +/*********************************************************************** + * Method: BButton::Instantiate + * Params: BMessage *data + * Returns: BArchivable * + * Effects: + ***********************************************************************/ +BArchivable * +BButton_Instantiate(BButton *Button, BMessage *data) +{ + return Button->Instantiate(data); +} + + +/*********************************************************************** + * Method: BButton::Archive + * Params: BMessage *data, bool deep + * Returns: status_t + * Effects: + ***********************************************************************/ +status_t +BButton_Archive(BButton *Button, BMessage *data, bool deep) +{ + return Button->Archive(data, deep); +} + + +/*********************************************************************** + * Method: BButton::Draw + * Params: BRect updateRect + * Returns: void + * Effects: + ***********************************************************************/ +void +BButton_Draw(BButton *Button, BRect updateRect) +{ + Button->Draw(updateRect); +} + + +/*********************************************************************** + * Method: BButton::MouseDown + * Params: BPoint where + * Returns: void + * Effects: + ***********************************************************************/ +void +BButton_MouseDown(BButton *Button, BPoint where) +{ + Button->MouseDown(where); +} + + +/*********************************************************************** + * Method: BButton::AttachedToWindow + * Params: + * Returns: void + * Effects: + ***********************************************************************/ +void +BButton_AttachedToWindow(BButton *Button) +{ + Button->AttachedToWindow(); +} + + +/*********************************************************************** + * Method: BButton::KeyDown + * Params: const char *bytes, int32 numBytes + * Returns: void + * Effects: + ***********************************************************************/ +void +BButton_KeyDown(BButton *Button, const char *bytes, int32 numBytes) +{ + Button->KeyDown(bytes, numBytes); +} + + +/*********************************************************************** + * Method: BButton::MakeDefault + * Params: bool state + * Returns: void + * Effects: + ***********************************************************************/ +void +BButton_MakeDefault(BButton *Button, bool state) +{ + Button->MakeDefault(state); +} + + +/*********************************************************************** + * Method: BButton::SetLabel + * Params: const char *text + * Returns: void + * Effects: + ***********************************************************************/ +void +BButton_SetLabel(BButton *Button, const char *text) +{ + Button->SetLabel(text); +} + + +/*********************************************************************** + * Method: BButton::IsDefault + * Params: + * Returns: bool + * Effects: + ***********************************************************************/ +bool +BButton_IsDefault(BButton *Button) +{ + return Button->IsDefault(); +} + + +/*********************************************************************** + * Method: BButton::MessageReceived + * Params: BMessage *msg + * Returns: void + * Effects: + ***********************************************************************/ +void +BButton_MessageReceived(BButton *Button, BMessage *msg) +{ + Button->MessageReceived(msg); +} + + +/*********************************************************************** + * Method: BButton::WindowActivated + * Params: bool state + * Returns: void + * Effects: + ***********************************************************************/ +void +BButton_WindowActivated(BButton *Button, bool state) +{ + Button->WindowActivated(state); +} + + +/*********************************************************************** + * Method: BButton::MouseUp + * Params: BPoint pt + * Returns: void + * Effects: + ***********************************************************************/ +void +BButton_MouseUp(BButton *Button, BPoint pt) +{ + Button->MouseUp(pt); +} + + +/*********************************************************************** + * Method: BButton::MouseMoved + * Params: BPoint pt, uint32 code, const BMessage *msg + * Returns: void + * Effects: + ***********************************************************************/ +void +BButton_MouseMoved(BButton *Button, BPoint pt, uint32 code, const BMessage *msg) +{ + Button->MouseMoved(pt, code, msg); +} + + +/*********************************************************************** + * Method: BButton::DetachedFromWindow + * Params: + * Returns: void + * Effects: + ***********************************************************************/ +void +BButton_DetachedFromWindow(BButton *Button) +{ + Button->DetachedFromWindow(); +} + + +/*********************************************************************** + * Method: BButton::SetValue + * Params: int32 value + * Returns: void + * Effects: + ***********************************************************************/ +void +BButton_SetValue(BButton *Button, int32 value) +{ + Button->SetValue(value); +} + + +/*********************************************************************** + * Method: BButton::GetPreferredSize + * Params: float *width, float *height + * Returns: void + * Effects: + ***********************************************************************/ +void +BButton_GetPreferredSize(BButton *Button, float *width, float *height) +{ + Button->GetPreferredSize(width, height); +} + + +/*********************************************************************** + * Method: BButton::ResizeToPreferred + * Params: + * Returns: void + * Effects: + ***********************************************************************/ +void +BButton_ResizeToPreferred(BButton *Button) +{ + Button->ResizeToPreferred(); +} + + +/*********************************************************************** + * Method: BButton::Invoke + * Params: BMessage *msg + * Returns: status_t + * Effects: + ***********************************************************************/ +status_t +BButton_Invoke(BButton *Button, BMessage *msg) +{ + return Button->Invoke(msg); +} + + +/*********************************************************************** + * Method: BButton::FrameMoved + * Params: BPoint new_position + * Returns: void + * Effects: + ***********************************************************************/ +void +BButton_FrameMoved(BButton *Button, BPoint new_position) +{ + Button->FrameMoved(new_position); +} + + +/*********************************************************************** + * Method: BButton::FrameResized + * Params: float new_width, float new_height + * Returns: void + * Effects: + ***********************************************************************/ +void +BButton_FrameResized(BButton *Button, float new_width, float new_height) +{ + Button->FrameResized(new_width, new_height); +} + + +/*********************************************************************** + * Method: BButton::MakeFocus + * Params: bool state + * Returns: void + * Effects: + ***********************************************************************/ +void +BButton_MakeFocus(BButton *Button, bool state) +{ + Button->MakeFocus(state); +} + + +/*********************************************************************** + * Method: BButton::AllAttached + * Params: + * Returns: void + * Effects: + ***********************************************************************/ +void +BButton_AllAttached(BButton *Button) +{ + Button->AllAttached(); +} + + +/*********************************************************************** + * Method: BButton::AllDetached + * Params: + * Returns: void + * Effects: + ***********************************************************************/ +void +BButton_AllDetached(BButton *Button) +{ + Button->AllDetached(); +} + + +/*********************************************************************** + * Method: BButton::ResolveSpecifier + * Params: BMessage *msg, int32 index, BMessage *specifier, int32 form, const char *property + * Returns: BHandler * + * Effects: + ***********************************************************************/ +BHandler * +BButton_ResolveSpecifier(BButton *Button, BMessage *msg, int32 index, BMessage *specifier, int32 form, const char *property) +{ + return Button->ResolveSpecifier(msg, index, specifier, form, property); +} + + +/*********************************************************************** + * Method: BButton::GetSupportedSuites + * Params: BMessage *data + * Returns: status_t + * Effects: + ***********************************************************************/ +status_t +BButton_GetSupportedSuites(BButton *Button, BMessage *data) +{ + return Button->GetSupportedSuites(data); +} + + +/*********************************************************************** + * Method: BButton::Perform + * Params: perform_code d, void *arg + * Returns: status_t + * Effects: + ***********************************************************************/ +status_t +BButton_Perform(BButton *Button, perform_code d, void *arg) +{ + return Button->Perform(d, arg); +} + + +/*********************************************************************** + * Method: BButton::_ReservedButton1 + * Params: + * Returns: void + * Effects: + ***********************************************************************/ +/*void +BButton__ReservedButton1(BButton *Button) +{ + Button->_ReservedButton1(); +} +*/ + + +/*********************************************************************** + * Method: BButton::_ReservedButton2 + * Params: + * Returns: void + * Effects: + ***********************************************************************/ +/*void +BButton__ReservedButton2(BButton *Button) +{ + Button->_ReservedButton2(); +} +*/ + +/*********************************************************************** + * Method: BButton::_ReservedButton3 + * Params: + * Returns: void + * Effects: + ***********************************************************************/ +/*void +BButton__ReservedButton3(BButton *Button) +{ + Button->_ReservedButton3(); +} +*/ + +/*********************************************************************** + * Method: BButton::operator= + * Params: const BButton & + * Returns: BButton & + * Effects: + ***********************************************************************/ +/*BButton & +BButton_operator=(BButton *Button, const BButton &) +{ + return Button->operator=(); +} +*/ + + +/*********************************************************************** + * Method: BButton::DrawDefault + * Params: BRect bounds, bool enabled + * Returns: BRect + * Effects: + ***********************************************************************/ +/*BRect +BButton_DrawDefault(BButton *Button, BRect bounds, bool enabled) +{ + return Button->DrawDefault(bounds, enabled); +} +*/ + +/*********************************************************************** + * Method: BButton::Execute + * Params: + * Returns: status_t + * Effects: + ***********************************************************************/ +/*status_t +BButton_Execute(BButton *Button) +{ + return Button->Execute(); +} +*/ + +#if defined(__cplusplus) +} +#endif + +#endif /* _BUTTON_CPP_ */ \ No newline at end of file diff --git a/bepascal/bepascal/be/interface/Control.cpp b/bepascal/bepascal/be/interface/Control.cpp new file mode 100644 index 0000000..4e580a8 --- /dev/null +++ b/bepascal/bepascal/be/interface/Control.cpp @@ -0,0 +1,532 @@ +/* BePascal - A pascal wrapper around the BeOS API + Copyright (C) 2002 Olivier Coursiere + + 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 +*/ + +#ifndef _CONTROL_CPP_ +#define _CONTROL_CPP_ + +#include "Control.h" +#include "Rect.h" +#include "View.h" +#include "Message.h" + +#include + +#include "view.h" +#include "control.h" + +#if defined(__cplusplus) +extern "C" { +#endif + +BControl_SetEnabled_hook Control_SetEnabled_hook; +BControl_SetValue_hook Control_SetValue_hook; + +#if defined(__cplusplus) +} +#endif + + +BPControl::BPControl(TPasObject PasObject, BRect frame, + const char *name, + const char *label, + BMessage *message, + uint32 resizeMask, + uint32 flags) + : + BControl(frame, name, label, message, + resizeMask, flags), + BPView(PasObject, frame, name, resizeMask, flags), + BPHandler(PasObject, name), + BPasObject(PasObject) +{ + +} + +BPControl::BPControl(TPasObject PasObject, BMessage *message): + BControl(message), + BPView(PasObject, message), + BPHandler(PasObject, message), + BPasObject(PasObject) +{ +} + +void BPControl::SetEnabled(bool enabled) +{ + Control_SetEnabled_hook(GetPasObject(), enabled); +} + +void BPControl::SetValue(int32 value) +{ + Control_SetValue_hook(GetPasObject(), value); +} + +#if defined(__cplusplus) +extern "C" { +#endif + +/* + * Method: BControl::BControl() + * Descr: + */ +TCPlusObject BControl_Create(TPasObject PasObject, BRect frame, + const char *name, + const char *label, + BMessage *message, + uint32 resizeMask, + uint32 flags) +{ + return new BPControl(PasObject, frame, + name, + label, + message, + resizeMask, + flags); +} + + +/* + * Method: BControl::~BControl() + * Descr: +*/ + +void BControl_Free(BControl *Control) +{ + delete Control; +} + + +/* + * Method: BControl::BControl() + * Descr: + */ +/*TCPlusObject BControl_Create(TPasObject PasObject, BMessage *data) +{ + return new BPControl(PasObject, data); +} +*/ + + +/* + * Method: BControl::Instantiate() + * Descr: + */ +BArchivable * +BControl_Instantiate(BControl *Control, BMessage *data) +{ + return Control->Instantiate(data); +} + + +/* + * Method: BControl::Archive() + * Descr: + */ +status_t +BControl_Archive(BControl *Control, BMessage *data, + bool deep) +{ + return Control->Archive(data, + deep); +} + + +/* + * Method: BControl::WindowActivated() + * Descr: + */ +void +BControl_WindowActivated(BControl *Control, bool state) +{ + Control->WindowActivated(state); +} + + +/* + * Method: BControl::AttachedToWindow() + * Descr: + */ +void +BControl_AttachedToWindow(BControl *Control) +{ + Control->AttachedToWindow(); +} + + +/* + * Method: BControl::MessageReceived() + * Descr: + */ +void +BControl_MessageReceived(BControl *Control, BMessage *msg) +{ + Control->MessageReceived(msg); +} + + +/* + * Method: BControl::MakeFocus() + * Descr: + */ +void +BControl_MakeFocus(BControl *Control, bool state) +{ + Control->MakeFocus(state); +} + + +/* + * Method: BControl::KeyDown() + * Descr: + */ +void +BControl_KeyDown(BControl *Control, const char *bytes, + int32 numBytes) +{ + Control->KeyDown(bytes, + numBytes); +} + + +/* + * Method: BControl::MouseDown() + * Descr: + */ +void +BControl_MouseDown(BControl *Control, BPoint pt) +{ + Control->MouseDown(pt); +} + + +/* + * Method: BControl::MouseUp() + * Descr: + */ +void +BControl_MouseUp(BControl *Control, BPoint pt) +{ + Control->MouseUp(pt); +} + + +/* + * Method: BControl::MouseMoved() + * Descr: + */ +void +BControl_MouseMoved(BControl *Control, BPoint pt, + uint32 code, + const BMessage *msg) +{ + Control->MouseMoved(pt, + code, + msg); +} + + +/* + * Method: BControl::DetachedFromWindow() + * Descr: + */ +void +BControl_DetachedFromWindow(BControl *Control) +{ + Control->DetachedFromWindow(); +} + + +/* + * Method: BControl::SetLabel() + * Descr: + */ +void +BControl_SetLabel(BControl *Control, const char *text) +{ + Control->SetLabel(text); +} + + +/* + * Method: BControl::Label() + * Descr: + */ +const char * +BControl_Label(BControl *Control) +{ + return Control->Label(); +} + + +/* + * Method: BControl::SetValue() + * Descr: + */ +void +BControl_SetValue(BControl *Control, int32 value) +{ + Control->SetValue(value); +} + + +/* + * Method: BControl::Value() + * Descr: + */ +int32 +BControl_Value(BControl *Control) +{ + return Control->Value(); +} + + +/* + * Method: BControl::SetEnabled() + * Descr: + */ +void +BControl_SetEnabled(BControl *Control, bool on) +{ + Control->SetEnabled(on); +} + + +/* + * Method: BControl::IsEnabled() + * Descr: + */ +bool +BControl_IsEnabled(BControl *Control) +{ + return Control->IsEnabled(); +} + + +/* + * Method: BControl::GetPreferredSize() + * Descr: + */ +void +BControl_GetPreferredSize(BControl *Control, float *width, + float *height) +{ + Control->GetPreferredSize(width, + height); +} + + +/* + * Method: BControl::ResizeToPreferred() + * Descr: + */ +void +BControl_ResizeToPreferred(BControl *Control) +{ + Control->ResizeToPreferred(); +} + + +/* + * Method: BControl::Invoke() + * Descr: + */ +status_t +BControl_Invoke(BControl *Control, BMessage *msg) +{ + return Control->Invoke(msg); +} + + +/* + * Method: BControl::ResolveSpecifier() + * Descr: + */ +BHandler * +BControl_ResolveSpecifier(BControl *Control, BMessage *msg, + int32 index, + BMessage *specifier, + int32 form, + const char *property) +{ + return Control->ResolveSpecifier(msg, + index, + specifier, + form, + property); +} + + +/* + * Method: BControl::GetSupportedSuites() + * Descr: + */ +status_t +BControl_GetSupportedSuites(BControl *Control, BMessage *data) +{ + return Control->GetSupportedSuites(data); +} + + +/* + * Method: BControl::AllAttached() + * Descr: + */ +void +BControl_AllAttached(BControl *Control) +{ + Control->AllAttached(); +} + + +/* + * Method: BControl::AllDetached() + * Descr: + */ +void +BControl_AllDetached(BControl *Control) +{ + Control->AllDetached(); +} + + +/* + * Method: BControl::Perform() + * Descr: + */ +status_t +BControl_Perform(BControl *Control, perform_code d, + void *arg) +{ + return Control->Perform(d, + arg); +} + + +/* + * Method: BControl::IsFocusChanging() + * Descr: + */ +/*bool +BControl_IsFocusChanging(BControl *Control) +{ + return Control->IsFocusChanging(); +}*/ + + +/* + * Method: BControl::IsTracking() + * Descr: + */ +/*bool +BControl_IsTracking(BControl *Control) +{ + return Control->IsTracking(); +}*/ + + +/* + * Method: BControl::SetTracking() + * Descr: + */ +/*void +BControl_SetTracking(BControl *Control, bool state) +{ + Control->SetTracking(state); +}*/ + + +/* + * Method: BControl::SetValueNoUpdate() + * Descr: + */ +/*void +BControl_SetValueNoUpdate(BControl *Control, int32 value) +{ + Control->SetValueNoUpdate(value); +}*/ + + +/* + * Method: BControl::_ReservedControl1() + * Descr: + */ +/*void +BControl__ReservedControl1(BControl *Control) +{ + Control->_ReservedControl1(); +}*/ + + +/* + * Method: BControl::_ReservedControl2() + * Descr: + */ +/*void +BControl__ReservedControl2(BControl *Control) +{ + Control->_ReservedControl2(); +}*/ + + +/* + * Method: BControl::_ReservedControl3() + * Descr: + */ +/*void +BControl__ReservedControl3(BControl *Control) +{ + Control->_ReservedControl3(); +}*/ + + +/* + * Method: BControl::_ReservedControl4() + * Descr: + */ +/*void +BControl__ReservedControl4(BControl *Control) +{ + Control->_ReservedControl4(); +}*/ + + +/* + * Method: BControl::operator=() + * Descr: + */ +/*BControl & +BControl_operator=(BControl *Control, const BControl &) +{ + return Control->operator=(); +}*/ + + +/* + * Method: BControl::InitData() + * Descr: + */ +/*void +BControl_InitData(BControl *Control, BMessage *data) +{ + Control->InitData(data); +}*/ + +#if defined(__cplusplus) +} +#endif + +#endif /* _CONTROL_CPP_ */ \ No newline at end of file diff --git a/bepascal/bepascal/be/interface/View.cpp b/bepascal/bepascal/be/interface/View.cpp index 8139113..d2176fd 100644 --- a/bepascal/bepascal/be/interface/View.cpp +++ b/bepascal/bepascal/be/interface/View.cpp @@ -128,6 +128,7 @@ void BPView::DetachedFromWindow(void) void BPView::Draw(BRect updateRect) { + BView::Draw(updateRect); View_Draw_hook(GetPasObject(), &updateRect); } diff --git a/bepascal/bepascal/be/interface/Window.cpp b/bepascal/bepascal/be/interface/Window.cpp index c39af06..2e0f2fa 100644 --- a/bepascal/bepascal/be/interface/Window.cpp +++ b/bepascal/bepascal/be/interface/Window.cpp @@ -73,6 +73,7 @@ void BWindow_Free(TCPlusObject Window) void BWindow_Show(TCPlusObject Window) { reinterpret_cast(Window)->Show(); + reinterpret_cast(Window)->UpdateIfNeeded(); } void BWindow_Hide(TCPlusObject Window) diff --git a/bepascal/bepascal/be/interface/button.pp b/bepascal/bepascal/be/interface/button.pp new file mode 100644 index 0000000..bc2dfa0 --- /dev/null +++ b/bepascal/bepascal/be/interface/button.pp @@ -0,0 +1,332 @@ +{ BePascal - A pascal wrapper around the BeOS API + Copyright (C) 2002 Olivier Coursiere + Eric Jourde + + 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 button; + +interface + +uses + beobj, Control, Message, Archivable, SupportDefs, Rect, Handler; + +type + TButton = class(TControl) + private + public + destructor Destroy; override; + constructor Create(frame : TRect; name, aLabel : PChar; message : TMessage; resizingMode, flags : Cardinal); virtual; + constructor Create(data : TMessage); override; + function Instantiate(data : TMessage) : TArchivable; + function Archive(data : TMessage; deep : boolean) : TStatus_t; + procedure Draw(updateRect : TRect); override; + procedure MouseDown(where : TPoint); override; + procedure AttachedToWindow; override; + procedure KeyDown(bytes : PChar; numBytes : integer); override; + // Hook functions + procedure MakeDefault(state : boolean); virtual; + procedure SetLabel(text : PChar); + function IsDefault : boolean; + procedure MessageReceived(msg : TMessage); override; + procedure WindowActivated(state : boolean); override; + procedure MouseUp(pt : TPoint); override; + procedure MouseMoved(pt : TPoint; code : Cardinal; msg : TMessage); override; + procedure DetachedFromWindow; override; + procedure SetValue(aValue : integer); + procedure GetPreferredSize(width : double; height : double); + procedure ResizeToPreferred; override; + function Invoke(msg : TMessage) : TStatus_t; + procedure FrameMoved(new_position : TPoint); override; + procedure FrameResized(new_width : double; new_height : double); override; + procedure MakeFocus(state : boolean); override; + procedure AllAttached; override; + procedure AllDetached; override; + function ResolveSpecifier(msg : TMessage; index : integer; specifier : TMessage; form : integer; properti : PChar) : THandler; + function GetSupportedSuites(data : TMessage) : TStatus_t; + function Perform(d : TPerform_code; arg : Pointer) : TStatus_t; +// procedure _ReservedButton1; +// procedure _ReservedButton2; +// procedure _ReservedButton3; +// function operator=( : TButton) : TButton; +// function DrawDefault(bounds : TRect; enabled : boolean) : TRect; +// function Execute : TStatus_t; +// procedure float fCachedWidth; +// procedure bool fDrawAsDefault; +// procedure uint32 _reserved[3]; +// procedure MakeDefault(flag : boolean); virtual; + end; + +procedure BButton_Free(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BButton_Free'; +function BButton_Create(AObject : TBeObject; frame : TCPlusObject; name, aLabel : PChar; message : TCPlusObject; resizingMode, flags : Cardinal) : TCPlusObject; cdecl; external BePascalLibName name 'BButton_Create'; +function BButton_Create(AObject : TBeObject; data : TCPlusObject) : TCPlusObject; cdecl; external BePascalLibName name 'BButton_Create'; +function BButton_Instantiate(AObject : TCPlusObject; data : TCPlusObject) : TArchivable; cdecl; external BePascalLibName name 'BButton_Instantiate'; +function BButton_Archive(AObject : TCPlusObject; data : TCplusObject; deep : boolean) : TStatus_t; cdecl; external BePascalLibName name 'BButton_Archive'; +procedure BButton_Draw(AObject : TCPlusObject; updateRect : TCPlusObject); cdecl; external BePascalLibName name 'BButton_Draw'; +procedure BButton_MouseDown(AObject : TCPlusObject; where : TCPlusObject); cdecl; external BePascalLibName name 'BButton_MouseDown'; +procedure BButton_AttachedToWindow(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BButton_AttachedToWindow'; +procedure BButton_KeyDown(AObject : TCPlusObject; bytes : PChar; numBytes : integer); cdecl; external BePascalLibName name 'BButton_KeyDown'; +procedure BButton_MakeDefault(AObject : TCPlusObject; state : boolean); cdecl; external BePascalLibName name 'BButton_MakeDefault'; +procedure BButton_SetLabel(AObject : TCPlusObject; text : PChar); cdecl; external BePascalLibName name 'BButton_SetLabel'; +function BButton_IsDefault(AObject : TCPlusObject) : boolean; cdecl; external BePascalLibName name 'BButton_IsDefault'; +procedure BButton_MessageReceived(AObject : TCPlusObject; msg : TCPlusObject); cdecl; external BePascalLibName name 'BButton_MessageReceived'; +procedure BButton_WindowActivated(AObject : TCPlusObject; state : boolean); cdecl; external BePascalLibName name 'BButton_WindowActivated'; +procedure BButton_MouseUp(AObject : TCPlusObject; pt : TCplusObject); cdecl; external BePascalLibName name 'BButton_MouseUp'; +procedure BButton_MouseMoved(AObject : TCPlusObject; pt : TCPlusObject; code : Cardinal; msg : TMessage); cdecl; external BePascalLibName name 'BButton_MouseMoved'; +procedure BButton_DetachedFromWindow(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BButton_DetachedFromWindow'; +procedure BButton_SetValue(AObject : TCPlusObject; aValue : integer); cdecl; external BePascalLibName name 'BButton_SetValue'; +procedure BButton_GetPreferredSize(AObject : TCPlusObject; width : double; height : double); cdecl; external BePascalLibName name 'BButton_GetPreferredSize'; +procedure BButton_ResizeToPreferred(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BButton_ResizeToPreferred'; +function BButton_Invoke(AObject : TCPlusObject; msg : TCPlusObject) : TStatus_t; cdecl; external BePascalLibName name 'BButton_Invoke'; +procedure BButton_FrameMoved(AObject : TCPlusObject; new_position : TCPlusObject); cdecl; external BePascalLibName name 'BButton_FrameMoved'; +procedure BButton_FrameResized(AObject : TCPlusObject; new_width : double; new_height : double); cdecl; external BePascalLibName name 'BButton_FrameResized'; +procedure BButton_MakeFocus(AObject : TCPlusObject; state : boolean); cdecl; external BePascalLibName name 'BButton_MakeFocus'; +procedure BButton_AllAttached(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BButton_AllAttached'; +procedure BButton_AllDetached(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BButton_AllDetached'; +function BButton_ResolveSpecifier(AObject : TCPlusObject; msg : TCPlusObject; index : integer; specifier : TCPlusObject; form : integer; properti : PChar) : THandler; cdecl; external BePascalLibName name 'BButton_ResolveSpecifier'; +function BButton_GetSupportedSuites(AObject : TCPlusObject; data : TCPlusObject) : TStatus_t; cdecl; external BePascalLibName name 'BButton_GetSupportedSuites'; +function BButton_Perform(AObject : TCPlusObject; d : TPerform_code; arg : Pointer) : TStatus_t; cdecl; external BePascalLibName name 'BButton_Perform'; +//procedure BButton__ReservedButton1(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BButton__ReservedButton1'; +//procedure BButton__ReservedButton2(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BButton__ReservedButton2'; +//procedure BButton__ReservedButton3(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BButton__ReservedButton3'; +//function BButton_operator=(AObject : TCPlusObject; : TButton) : TButton; cdecl; external BePascalLibName name 'BButton_operator='; +//function BButton_DrawDefault(AObject : TCPlusObject; bounds : TCPlusObject; enabled : boolean) : TRect; cdecl; external BePascalLibName name 'BButton_DrawDefault'; +//function BButton_Execute(AObject : TCPlusObject) : TStatus_t; cdecl; external BePascalLibName name 'BButton_Execute'; +//procedure BButton_float fCachedWidth(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BButton_float fCachedWidth'; +//procedure BButton_bool fDrawAsDefault(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BButton_bool fDrawAsDefault'; +//procedure BButton_uint32 _reserved[3](AObject : TCPlusObject); cdecl; external BePascalLibName name 'BButton_uint32 _reserved[3]'; + +//var +// procedure BButton_MakeDefault_hook(Button : TButton; flag : boolean); cdecl; external BePascalLibName name 'BButton_MakeDefault'; + +implementation + +var + Button_MakeDefault_hook : Pointer; cvar; external; + +destructor TButton.Destroy; +begin + BButton_Free(CPlusObject); + inherited; +end; + +constructor TButton.Create(frame : TRect; name, aLabel : PChar; message : TMessage; resizingMode, flags : Cardinal); +begin + CreatePas; + WriteLn('Creation bouton'); + CPlusObject := BButton_Create(Self, frame.CPlusObject, name, aLabel, message.CPlusObject, resizingMode, flags); +end; + +constructor TButton.Create(data : TMessage); +begin + CreatePas; + CPlusObject := BButton_Create(Self, data.CPlusObject); +end; + +function TButton.Instantiate(data : TMessage) : TArchivable; +begin + Result := BButton_Instantiate(CPlusObject, data.CPlusObject); +end; + +function TButton.Archive(data : TMessage; deep : boolean) : TStatus_t; +begin + Result := BButton_Archive(CPlusObject, data.CPlusObject, deep); +end; + +procedure TButton.Draw(updateRect : TRect); +begin + BButton_Draw(CPlusObject, updateRect.CPlusObject); +end; + +procedure TButton.MouseDown(where : TPoint); +begin + BButton_MouseDown(CPlusObject, where.CPlusObject); +end; + +procedure TButton.AttachedToWindow; +begin + BButton_AttachedToWindow(CPlusObject); +end; + +procedure TButton.KeyDown(bytes : PChar; numBytes : integer); +begin + BButton_KeyDown(CPlusObject, bytes, numBytes); +end; + +procedure TButton.MakeDefault(state : boolean); +begin + BButton_MakeDefault(CPlusObject, state); +end; + +procedure TButton.SetLabel(text : PChar); +begin + BButton_SetLabel(CPlusObject, text); +end; + +function TButton.IsDefault : boolean; +begin + Result := BButton_IsDefault(CPlusObject); +end; + +procedure TButton.MessageReceived(msg : TMessage); +begin + WriteLn('Bonjour, ici le bouton !'); +// BButton_MessageReceived(CPlusObject, msg.CPlusObject); +end; + +procedure TButton.WindowActivated(state : boolean); +begin + BButton_WindowActivated(CPlusObject, state); +end; + +procedure TButton.MouseUp(pt : TPoint); +begin + BButton_MouseUp(CPlusObject, pt.CPlusObject); +end; + +procedure TButton.MouseMoved(pt : TPoint; code : Cardinal; msg : TMessage); +begin + BButton_MouseMoved(CPlusObject, pt.CPlusObject, code, msg); +end; + +procedure TButton.DetachedFromWindow; +begin + BButton_DetachedFromWindow(CPlusObject); +end; + +procedure TButton.SetValue(aValue : integer); +begin + BButton_SetValue(CPlusObject, aValue); +end; + +procedure TButton.GetPreferredSize(width : double; height : double); +begin + BButton_GetPreferredSize(CPlusObject, width, height); +end; + +procedure TButton.ResizeToPreferred; +begin + BButton_ResizeToPreferred(CPlusObject); +end; + +function TButton.Invoke(msg : TMessage) : TStatus_t; +begin + Result := BButton_Invoke(CPlusObject, msg.CPlusObject); +end; + +procedure TButton.FrameMoved(new_position : TPoint); +begin + BButton_FrameMoved(CPlusObject, new_position.CPlusObject); +end; + +procedure TButton.FrameResized(new_width : double; new_height : double); +begin + BButton_FrameResized(CPlusObject, new_width, new_height); +end; + +procedure TButton.MakeFocus(state : boolean); +begin + BButton_MakeFocus(CPlusObject, state); +end; + +procedure TButton.AllAttached; +begin + BButton_AllAttached(CPlusObject); +end; + +procedure TButton.AllDetached; +begin + BButton_AllDetached(CPlusObject); +end; + +function TButton.ResolveSpecifier(msg : TMessage; index : integer; specifier : TMessage; form : integer; properti : PChar) : THandler; +begin + Result := BButton_ResolveSpecifier(CPlusObject, msg.CPlusObject, index, specifier.CPlusObject, form, properti); +end; + +function TButton.GetSupportedSuites(data : TMessage) : TStatus_t; +begin + Result := BButton_GetSupportedSuites(CPlusObject, data.CPlusObject); +end; + +function TButton.Perform(d : TPerform_code; arg : Pointer) : TStatus_t; +begin + Result := BButton_Perform(CPlusObject, d, arg); +end; + +{procedure TButton._ReservedButton1; +begin + BButton__ReservedButton1(CPlusObject); +end; + +procedure TButton._ReservedButton2; +begin + BButton__ReservedButton2(CPlusObject); +end; + +procedure TButton._ReservedButton3; +begin + BButton__ReservedButton3(CPlusObject); +end;} + +{function TButton.operator=( : TButton) : TButton; +begin + Result := BButton_operator=(CPlusObject, ); +end; +} + +{function TButton.DrawDefault(bounds : TRect; enabled : boolean) : TRect; +begin + Result := BButton_DrawDefault(CPlusObject, bounds.CPlusObject, enabled); +end; + +function TButton.Execute : TStatus_t; +begin + Result := BButton_Execute(CPlusObject); +end;} + +{procedure TButton.float fCachedWidth; +begin + BButton_float fCachedWidth(CPlusObject); +end; +} + +{procedure TButton.bool fDrawAsDefault; +begin + BButton_bool fDrawAsDefault(CPlusObject); +end; +} + +{procedure TButton.uint32 _reserved[3]; +begin + BButton_uint32 _reserved[3](CPlusObject); +end; +} + +{procedure TButton.MakeDefault(flag : boolean); +begin +end; +} + +procedure Button_MakeDefault_hook_func(Button : TButton; flag : boolean); cdecl; +begin + if Button <> nil then + Button.MakeDefault(flag); +end; + +initialization + Button_MakeDefault_hook := @Button_MakeDefault_hook_func; + +end. diff --git a/bepascal/bepascal/be/interface/control.h b/bepascal/bepascal/be/interface/control.h new file mode 100644 index 0000000..9fe88f7 --- /dev/null +++ b/bepascal/bepascal/be/interface/control.h @@ -0,0 +1,46 @@ +/* BePascal - A pascal wrapper around the BeOS API + Copyright (C) 2002 Olivier Coursiere + + 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 +*/ + +#ifndef _CONTROL_H_ +#define _CONTROL_H_ + +#include + +#include "view.h" + +typedef void (*BControl_SetEnabled_hook) (TPasObject PasObject, bool enabled); +typedef void (*BControl_SetValue_hook) (TPasObject PasObject, int32 value); + +class BPControl : public BControl, virtual public BPView +{ + public: + // + BPControl(TPasObject PasObject, + BRect frame, + const char *name, + const char *label, + BMessage *message, + uint32 resizeMask, + uint32 flags); + BPControl(TPasObject PasObject, BMessage *message); + virtual void SetEnabled(bool enabled); + virtual void SetValue(int32 value); + private: +}; + +#endif /* _CONTROL_H_ */ \ No newline at end of file diff --git a/bepascal/bepascal/be/interface/control.pp b/bepascal/bepascal/be/interface/control.pp new file mode 100644 index 0000000..17cf37b --- /dev/null +++ b/bepascal/bepascal/be/interface/control.pp @@ -0,0 +1,368 @@ +{ BePascal - A pascal wrapper around the BeOS API + Copyright (C) 2002 Olivier Coursiere + Eric Jourde + + 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 control; + +interface + +uses + beobj, View, Message, Archivable, Rect, Handler, SupportDefs, Invoker; + +type + TControl = class(TView) + private + protected + FInvoker : TInvoker; + function GetInvoker : TInvoker; + public + constructor Create(frame : TCPlusObject; name, aLabel : PChar; message : TCPlusObject; resizingMode, flags : Cardinal); virtual; + destructor Destroy; override; + constructor Create(data : TMessage); virtual; + function Instantiate(data : TMessage) : TArchivable; + function Archive(data : TMessage; deep : boolean) : TStatus_t; + procedure WindowActivated(state : boolean); override; + procedure AttachedToWindow; override; + procedure MessageReceived(msg : TMessage); override; + procedure MakeFocus(state : boolean); virtual; + procedure KeyDown(bytes : PChar; numBytes : integer); override; + procedure MouseDown(pt : TPoint); override; + procedure MouseUp(pt : TPoint); override; + procedure MouseMoved(pt : TPoint; code : Cardinal; msg : TMessage); override; + procedure DetachedFromWindow; override; + procedure SetLabel(text : PChar); + function Labl : PChar; + procedure SetValue(aValue : integer); + function Value : integer; + procedure SetEnabled(aOn : boolean); + function IsEnabled : boolean; + procedure GetPreferredSize(width : double; height : double); + procedure ResizeToPreferred; override; + function Invoke(msg : TMessage) : TStatus_t; + function ResolveSpecifier(msg : TMessage; index : integer; specifier : TMessage; form : integer; properti{;-)} : PChar) : THandler; + function GetSupportedSuites(data : TMessage) : TStatus_t; + procedure AllAttached; override; + procedure AllDetached; override; + function Perform(d : TPerform_code; arg : Pointer) : TStatus_t; +// function IsFocusChanging : boolean; +// function IsTracking : boolean; +// procedure SetTracking(state : boolean); +// procedure SetValueNoUpdate(aValue : integer); +// procedure _ReservedControl1; +// procedure _ReservedControl2; +// procedure _ReservedControl3; +// procedure _ReservedControl4; +// function operator=( : TControl) : TControl; +// procedure InitData(data : TMessage); +// procedure char *fLabel; +// procedure int32 fValue; +// procedure bool fEnabled; +// procedure bool fFocusChanging; +// procedure bool fTracking; +// procedure bool fWantsNav; +// procedure uint32 _reserved[4]; + property Invoker : TInvoker read GetInvoker; + end; + +//function BControl_Create(AObject : TBeObject) : TCPlusObject; cdecl; external BePascalLibName name 'BControl_Create'; +function BControl_Create(AObject : TBeObject; frame : TCPlusObject; name, aLabel : PChar; message : TCPlusObject; resizingMode, flags : Cardinal) : TCPlusObject; cdecl; external BePascalLibName name 'BControl_Create'; +procedure BControl_Free(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BControl_Free'; +function BControl_Create(AObject : TBeObject; data : TCplusObject) : TCplusObject; cdecl; external BePascalLibName name 'BControl_Create'; +function BControl_Instantiate(AObject : TCPlusObject; data : TCplusObject) : TArchivable; cdecl; external BePascalLibName name 'BControl_Instantiate'; +function BControl_Archive(AObject : TCPlusObject; data : TCplusObject; deep : boolean) : TStatus_t; cdecl; external BePascalLibName name 'BControl_Archive'; +procedure BControl_WindowActivated(AObject : TCPlusObject; state : boolean); cdecl; external BePascalLibName name 'BControl_WindowActivated'; +procedure BControl_AttachedToWindow(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BControl_AttachedToWindow'; +procedure BControl_MessageReceived(AObject : TCPlusObject; msg : TCplusObject); cdecl; external BePascalLibName name 'BControl_MessageReceived'; +procedure BControl_MakeFocus(AObject : TCPlusObject; state : boolean); cdecl; external BePascalLibName name 'BControl_MakeFocus'; +procedure BControl_KeyDown(AObject : TCPlusObject; bytes : PChar; numBytes : integer); cdecl; external BePascalLibName name 'BControl_KeyDown'; +procedure BControl_MouseDown(AObject : TCPlusObject; pt : TCplusObject); cdecl; external BePascalLibName name 'BControl_MouseDown'; +procedure BControl_MouseUp(AObject : TCPlusObject; pt : TCplusObject); cdecl; external BePascalLibName name 'BControl_MouseUp'; +procedure BControl_MouseMoved(AObject : TCPlusObject; pt : TCplusObject; code : Cardinal; msg : TCplusObject); cdecl; external BePascalLibName name 'BControl_MouseMoved'; +procedure BControl_DetachedFromWindow(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BControl_DetachedFromWindow'; +procedure BControl_SetLabel(AObject : TCPlusObject; text : PChar); cdecl; external BePascalLibName name 'BControl_SetLabel'; +function BControl_Labl(AObject : TCPlusObject) : PChar; cdecl; external BePascalLibName name 'BControl_Label'; +procedure BControl_SetValue(AObject : TCPlusObject; value : integer); cdecl; external BePascalLibName name 'BControl_SetValue'; +function BControl_Value(AObject : TCPlusObject) : integer; cdecl; external BePascalLibName name 'BControl_Value'; +procedure BControl_SetEnabled(AObject : TCPlusObject; aOn : boolean); cdecl; external BePascalLibName name 'BControl_SetEnabled'; +function BControl_IsEnabled(AObject : TCPlusObject) : boolean; cdecl; external BePascalLibName name 'BControl_IsEnabled'; +procedure BControl_GetPreferredSize(AObject : TCPlusObject; width : double; height : double); cdecl; external BePascalLibName name 'BControl_GetPreferredSize'; +procedure BControl_ResizeToPreferred(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BControl_ResizeToPreferred'; +function BControl_Invoke(AObject : TCPlusObject; msg : TCplusObject) : TStatus_t; cdecl; external BePascalLibName name 'BControl_Invoke'; +function BControl_ResolveSpecifier(AObject : TCPlusObject; msg : TCplusObject; index : integer; specifier : TCplusObject; form : integer; properti : PChar) : THandler; cdecl; external BePascalLibName name 'BControl_ResolveSpecifier'; +function BControl_GetSupportedSuites(AObject : TCPlusObject; data : TCplusObject) : TStatus_t; cdecl; external BePascalLibName name 'BControl_GetSupportedSuites'; +procedure BControl_AllAttached(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BControl_AllAttached'; +procedure BControl_AllDetached(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BControl_AllDetached'; +function BControl_Perform(AObject : TCPlusObject; d : TPerform_code; arg : Pointer) : TStatus_t; cdecl; external BePascalLibName name 'BControl_Perform'; +//function BControl_IsFocusChanging(AObject : TCPlusObject) : boolean; cdecl; external BePascalLibName name 'BControl_IsFocusChanging'; +//function BControl_IsTracking(AObject : TCPlusObject) : boolean; cdecl; external BePascalLibName name 'BControl_IsTracking'; +//procedure BControl_SetTracking(AObject : TCPlusObject; state : boolean); cdecl; external BePascalLibName name 'BControl_SetTracking'; +//procedure BControl_SetValueNoUpdate(AObject : TCPlusObject; aValue : integer); cdecl; external BePascalLibName name 'BControl_SetValueNoUpdate'; +//procedure BControl__ReservedControl1(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BControl__ReservedControl1'; +//procedure BControl__ReservedControl2(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BControl__ReservedControl2'; +//procedure BControl__ReservedControl3(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BControl__ReservedControl3'; +//procedure BControl__ReservedControl4(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BControl__ReservedControl4'; +//function BControl_operator=(AObject : TCPlusObject; : TControl) : TControl; cdecl; external BePascalLibName name 'BControl_operator='; +procedure BControl_InitData(AObject : TCPlusObject; data : TCplusObject); cdecl; external BePascalLibName name 'BControl_InitData'; +//procedure BControl_char *fLabel(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BControl_char *fLabel'; +//procedure BControl_int32 fValue(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BControl_int32 fValue'; +//procedure BControl_bool fEnabled(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BControl_bool fEnabled'; +//procedure BControl_bool fFocusChanging(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BControl_bool fFocusChanging'; +//procedure BControl_bool fTracking(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BControl_bool fTracking'; +//procedure BControl_bool fWantsNav(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BControl_bool fWantsNav'; +//procedure BControl_uint32 _reserved[4](AObject : TCPlusObject); cdecl; external BePascalLibName name 'BControl_uint32 _reserved[4]'; + +implementation + +constructor TControl.Create(frame : TCPlusObject; name, aLabel : PChar; message : TCPlusObject; resizingMode, flags : Cardinal); +begin + CPlusObject := BControl_Create(Self, frame, name, aLabel, message, resizingMode, flags); +end; + +destructor TControl.Destroy; +begin + if FInvoker <> nil then + FInvoker.UnWrap; + BControl_Free(CPlusObject); +end; + +constructor TControl.Create(data : TMessage); +begin + CPlusObject := BControl_Create(Self, data.CPlusObject); +end; + +function TControl.Instantiate(data : TMessage) : TArchivable; +begin + Result := BControl_Instantiate(CPlusObject, data.CPlusObject); +end; + +function TControl.Archive(data : TMessage; deep : boolean) : TStatus_t; +begin + Result := BControl_Archive(CPlusObject, data.CPlusObject, deep); +end; + +procedure TControl.WindowActivated(state : boolean); +begin + BControl_WindowActivated(CPlusObject, state); +end; + +procedure TControl.AttachedToWindow; +begin + BControl_AttachedToWindow(CPlusObject); +end; + +procedure TControl.MessageReceived(msg : TMessage); +begin + BControl_MessageReceived(CPlusObject, msg.CPlusObject); +end; + +procedure TControl.MakeFocus(state : boolean); +begin + BControl_MakeFocus(CPlusObject, state); +end; + +procedure TControl.KeyDown(bytes : PChar; numBytes : integer); +begin + BControl_KeyDown(CPlusObject, bytes, numBytes); +end; + +procedure TControl.MouseDown(pt : TPoint); +begin + BControl_MouseDown(CPlusObject, pt.CPlusObject); +end; + +procedure TControl.MouseUp(pt : TPoint); +begin + BControl_MouseUp(CPlusObject, pt.CPlusObject); +end; + +procedure TControl.MouseMoved(pt : TPoint; code : Cardinal; msg : TMessage); +begin + BControl_MouseMoved(CPlusObject, pt.CPlusObject, code, msg); +end; + +procedure TControl.DetachedFromWindow; +begin + BControl_DetachedFromWindow(CPlusObject); +end; + +procedure TControl.SetLabel(text : PChar); +begin + BControl_SetLabel(CPlusObject, text); +end; + +function TControl.Labl : PChar; +begin + Result := BControl_Labl(CPlusObject); +end; + +procedure TControl.SetValue(aValue : integer); +begin + BControl_SetValue(CPlusObject, aValue); +end; + +function TControl.Value : integer; +begin + Result := BControl_Value(CPlusObject); +end; + +procedure TControl.SetEnabled(aOn : boolean); +begin + BControl_SetEnabled(CPlusObject, aOn); +end; + +function TControl.IsEnabled : boolean; +begin + Result := BControl_IsEnabled(CPlusObject); +end; + +procedure TControl.GetPreferredSize(width : double; height : double); +begin + BControl_GetPreferredSize(CPlusObject, width, height); +end; + +procedure TControl.ResizeToPreferred; +begin + BControl_ResizeToPreferred(CPlusObject); +end; + +function TControl.Invoke(msg : TMessage) : TStatus_t; +begin + Result := BControl_Invoke(CPlusObject, msg.CPlusObject); +end; + +function TControl.ResolveSpecifier(msg : TMessage; index : integer; specifier : TMessage; form : integer; properti : PChar) : THandler; +begin + Result := BControl_ResolveSpecifier(CPlusObject, msg.CPlusObject, index, specifier.CPlusObject, form, properti); +end; + +function TControl.GetSupportedSuites(data : TMessage) : TStatus_t; +begin + Result := BControl_GetSupportedSuites(CPlusObject, data.CPlusObject); +end; + +procedure TControl.AllAttached; +begin + BControl_AllAttached(CPlusObject); +end; + +procedure TControl.AllDetached; +begin + BControl_AllDetached(CPlusObject); +end; + +function TControl.Perform(d : TPerform_code; arg : Pointer) : TStatus_t; +begin + Result := BControl_Perform(CPlusObject, d, arg); +end; + +//function TControl.IsFocusChanging : boolean; +//begin +// Result := BControl_IsFocusChanging(CPlusObject); +//end; +// +//function TControl.IsTracking : boolean; +//begin +// Result := BControl_IsTracking(CPlusObject); +//end; +// +//procedure TControl.SetTracking(state : boolean); +//begin +// BControl_SetTracking(CPlusObject, state); +//end; +// +//procedure TControl.SetValueNoUpdate(aValue : integer); +//begin +// BControl_SetValueNoUpdate(CPlusObject, aValue); +//end; + +//procedure TControl._ReservedControl1; +//begin +// BControl__ReservedControl1(CPlusObject); +//end; +// +//procedure TControl._ReservedControl2; +//begin +// BControl__ReservedControl2(CPlusObject); +//end; +// +//procedure TControl._ReservedControl3; +//begin +// BControl__ReservedControl3(CPlusObject); +//end; +// +//procedure TControl._ReservedControl4; +//begin +// BControl__ReservedControl4(CPlusObject); +//end; + +//function TControl.operator=( : TControl) : TControl; +//begin +// Result := BControl_operator=(CPlusObject, ); +//end; + +//procedure TControl.InitData(data : TMessage); +//begin +// BControl_InitData(CPlusObject, data.CPlusObject); +//end; + +//procedure TControl.char *fLabel; +//begin +// BControl_char *fLabel(CPlusObject); +//end; +// +//procedure TControl.int32 fValue; +//begin +// BControl_int32 fValue(CPlusObject); +//end; +// +//procedure TControl.bool fEnabled; +//begin +// BControl_bool fEnabled(CPlusObject); +//end; +// +//procedure TControl.bool fFocusChanging; +//begin +// BControl_bool fFocusChanging(CPlusObject); +//end; +// +//procedure TControl.bool fTracking; +//begin +// BControl_bool fTracking(CPlusObject); +//end; +// +//procedure TControl.bool fWantsNav; +//begin +// BControl_bool fWantsNav(CPlusObject); +//end; +// +//procedure TControl.uint32 _reserved[4]; +//begin +// BControl_uint32 _reserved[4](CPlusObject); +//end; + +function TControl.GetInvoker : TInvoker; +begin + if FInvoker = nil then + begin + WriteLn('Before GetInvoker'); + Result := TInvoker.Wrap(CPlusObject); + WriteLn('After GetInvoker'); + end; + Result := FInvoker; +end; + +end. diff --git a/bepascal/bepascal/be/interface/view.pp b/bepascal/bepascal/be/interface/view.pp index 34f0efd..322feaa 100644 --- a/bepascal/bepascal/be/interface/view.pp +++ b/bepascal/bepascal/be/interface/view.pp @@ -180,6 +180,8 @@ end; procedure TView.Draw(updateRect : TRect); begin + WriteLn('Drawing view'); + end; procedure TView.DrawAfterChildren(updateRect : TRect); @@ -243,7 +245,10 @@ end; procedure TView.AddChild(aView, before : TView); begin - BView_AddChild(Self.CPlusObject, aView.CPlusObject, before.CPlusObject); + if before <> nil then + BView_AddChild(Self.CPlusObject, aView.CPlusObject, before.CPlusObject) + else + BView_AddChild(Self.CPlusObject, aView.CPlusObject, nil); end; function TView.RemoveChild(aView : TView) : boolean; diff --git a/bepascal/bepascal/be/kernel/os.pp b/bepascal/bepascal/be/kernel/os.pp index 475eba2..09684e9 100644 --- a/bepascal/bepascal/be/kernel/os.pp +++ b/bepascal/bepascal/be/kernel/os.pp @@ -36,7 +36,11 @@ const B_INFINITE_TIMEOUT = 9223372036854775807; type + TArea_id = Longint; + TPort_id = Longint; + TSem_id = Longint; TThread_id = Longint; + TTeam_id = Longint; implementation diff --git a/bepascal/bepascal/be/support/DataIO.cpp b/bepascal/bepascal/be/support/DataIO.cpp new file mode 100644 index 0000000..bced38e --- /dev/null +++ b/bepascal/bepascal/be/support/DataIO.cpp @@ -0,0 +1,385 @@ +/* BePascal - A pascal wrapper around the BeOS API + Copyright (C) 2002 Olivier Coursiere + Eric Jourde + + 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 +*/ + +#include +#include + +#if defined(__cplusplus) +extern "C" { +#endif + +/*********************************************************************** + * Method: BDataIO::BDataIO + * Params: + * Effects: + ***********************************************************************/ +TCPlusObject BDataIO_Create_1(TPasObject PasObject) +{ +// return new BDataIO(PasObject); + return NULL; +} + + +/*********************************************************************** + * Method: BDataIO::~BDataIO + * Params: + * Effects: + ***********************************************************************/ +void BDataIO_Free(BDataIO *DataIO) +{ + delete DataIO; +} + +/*********************************************************************** + * Method: BDataIO::BDataIO + * Params: const BDataIO & + * Effects: + ***********************************************************************/ +TCPlusObject BDataIO_Create_2(TPasObject PasObject, const BDataIO &) +{ +// return new BPDataIO(PasObject, ); + return NULL; +} + +/*********************************************************************** + * Method: BDataIO::operator= + * Params: const BDataIO & + * Returns: BDataIO & + * Effects: + ***********************************************************************/ +/*BDataIO & +BDataIO_operator=(BDataIO *DataIO, const BDataIO &) +{ + return DataIO->operator=(); +}*/ + + +/*********************************************************************** + * Method: BPositionIO::BPositionIO + * Params: + * Effects: + ***********************************************************************/ +TCPlusObject BPositionIO_Create(TPasObject PasObject) +{ +// return new BPositionIO(PasObject); + return NULL; +} + + +/*********************************************************************** + * Method: BPositionIO::~BPositionIO + * Params: + * Effects: + ***********************************************************************/ +void BPositionIO_Free(BPositionIO *PositionIO) +{ + delete PositionIO; +} + + +/*********************************************************************** + * Method: BPositionIO::Read + * Params: void *buffer, size_t size + * Returns: ssize_t + * Effects: + ***********************************************************************/ +ssize_t +BPositionIO_Read(BPositionIO *PositionIO, void *buffer, size_t size) +{ + return PositionIO->Read(buffer, size); +} + + +/*********************************************************************** + * Method: BPositionIO::Write + * Params: const void *buffer, size_t size + * Returns: ssize_t + * Effects: + ***********************************************************************/ +ssize_t +BPositionIO_Write(BPositionIO *PositionIO, const void *buffer, size_t size) +{ + return PositionIO->Write(buffer, size); +} + + +/*********************************************************************** + * Method: BPositionIO::SetSize + * Params: off_t size + * Returns: status_t + * Effects: + ***********************************************************************/ +status_t +BPositionIO_SetSize(BPositionIO *PositionIO, off_t size) +{ + return PositionIO->SetSize(size); +} + +/*********************************************************************** + * Method: BMallocIO::BMallocIO + * Params: + * Effects: + ***********************************************************************/ +TCPlusObject BMallocIO_Create(TPasObject PasObject) +{ + return new BMallocIO(); +} + + +/*********************************************************************** + * Method: BMallocIO::~BMallocIO + * Params: + * Effects: + ***********************************************************************/ +void BMallocIO_Free(BMallocIO *MallocIO) +{ + delete MallocIO; +} + + +/*********************************************************************** + * Method: BMallocIO::ReadAt + * Params: off_t pos, void *buffer, size_t size + * Returns: ssize_t + * Effects: + ***********************************************************************/ +ssize_t +BMallocIO_ReadAt(BMallocIO *MallocIO, off_t pos, void *buffer, size_t size) +{ + return MallocIO->ReadAt(pos, buffer, size); +} + + +/*********************************************************************** + * Method: BMallocIO::WriteAt + * Params: off_t pos, const void *buffer, size_t size + * Returns: ssize_t + * Effects: + ***********************************************************************/ +ssize_t +BMallocIO_WriteAt(BMallocIO *MallocIO, off_t pos, const void *buffer, size_t size) +{ + return MallocIO->WriteAt(pos, buffer, size); +} + + +/*********************************************************************** + * Method: BMallocIO::Seek + * Params: off_t pos, uint32 seek_mode + * Returns: off_t + * Effects: + ***********************************************************************/ +off_t +BMallocIO_Seek(BMallocIO *MallocIO, off_t pos, uint32 seek_mode) +{ + return MallocIO->Seek(pos, seek_mode); +} + + +/*********************************************************************** + * Method: BMallocIO::Position + * Params: + * Returns: off_t + * Effects: + ***********************************************************************/ +off_t +BMallocIO_Position(BMallocIO *MallocIO) +{ + return MallocIO->Position(); +} + + +/*********************************************************************** + * Method: BMallocIO::SetSize + * Params: off_t size + * Returns: status_t + * Effects: + ***********************************************************************/ +status_t +BMallocIO_SetSize(BMallocIO *MallocIO, off_t size) +{ + return MallocIO->SetSize(size); +} + + +/*********************************************************************** + * Method: BMallocIO::SetBlockSize + * Params: size_t blocksize + * Returns: void + * Effects: + ***********************************************************************/ +void +BMallocIO_SetBlockSize(BMallocIO *MallocIO, size_t blocksize) +{ + MallocIO->SetBlockSize(blocksize); +} + + +/*********************************************************************** + * Method: BMallocIO::Buffer + * Params: + * Returns: const void * + * Effects: + ***********************************************************************/ +const void * +BMallocIO_Buffer(BMallocIO *MallocIO) +{ + return MallocIO->Buffer(); +} + + +/*********************************************************************** + * Method: BMallocIO::BufferLength + * Params: + * Returns: size_t + * Effects: + ***********************************************************************/ +size_t +BMallocIO_BufferLength_1(BMallocIO *MallocIO) +{ + return MallocIO->BufferLength(); +} + +/*********************************************************************** + * Method: BMallocIO::operator= + * Params: const BMallocIO & + * Returns: BMallocIO & + * Effects: + ***********************************************************************/ +/*BMallocIO & +BMallocIO_operator=(BMallocIO *MallocIO, const BMallocIO &) +{ + return MallocIO->operator=(); +}*/ + + +/*********************************************************************** + * Method: BMemoryIO::BMemoryIO + * Params: void *p, size_t len + * Effects: + ***********************************************************************/ +TCPlusObject BMemoryIO_Create(TPasObject PasObject, void *p, size_t len) +{ + return new BMemoryIO(p, len); +} + + +/*********************************************************************** + * Method: BMemoryIO::BMemoryIO + * Params: const void *p, size_t len + * Effects: + ***********************************************************************/ +TCPlusObject BMemoryIO_Create_1 +(TPasObject PasObject, const void *p, size_t len) +{ + return new BMemoryIO(p, len); +} + + +/*********************************************************************** + * Method: BMemoryIO::~BMemoryIO + * Params: + * Effects: + ***********************************************************************/ +void BMemoryIO_Free(BMemoryIO *MemoryIO) +{ + delete MemoryIO; +} + + +/*********************************************************************** + * Method: BMemoryIO::ReadAt + * Params: off_t pos, void *buffer, size_t size + * Returns: ssize_t + * Effects: + ***********************************************************************/ +ssize_t +BMemoryIO_ReadAt(BMemoryIO *MemoryIO, off_t pos, void *buffer, size_t size) +{ + return MemoryIO->ReadAt(pos, buffer, size); +} + + +/*********************************************************************** + * Method: BMemoryIO::WriteAt + * Params: off_t pos, const void *buffer, size_t size + * Returns: ssize_t + * Effects: + ***********************************************************************/ +ssize_t +BMemoryIO_WriteAt(BMemoryIO *MemoryIO, off_t pos, const void *buffer, size_t size) +{ + return MemoryIO->WriteAt(pos, buffer, size); +} + + +/*********************************************************************** + * Method: BMemoryIO::Seek + * Params: off_t pos, uint32 seek_mode + * Returns: off_t + * Effects: + ***********************************************************************/ +off_t +BMemoryIO_Seek(BMemoryIO *MemoryIO, off_t pos, uint32 seek_mode) +{ + return MemoryIO->Seek(pos, seek_mode); +} + + +/*********************************************************************** + * Method: BMemoryIO::Position + * Params: + * Returns: off_t + * Effects: + ***********************************************************************/ +off_t +BMemoryIO_Position(BMemoryIO *MemoryIO) +{ + return MemoryIO->Position(); +} + + +/*********************************************************************** + * Method: BMemoryIO::SetSize + * Params: off_t size + * Returns: status_t + * Effects: + ***********************************************************************/ +status_t +BMemoryIO_SetSize(BMemoryIO *MemoryIO, off_t size) +{ + return MemoryIO->SetSize(size); +} + +/*********************************************************************** + * Method: BMemoryIO::operator= + * Params: const BMemoryIO & + * Returns: BMemoryIO & + * Effects: + ***********************************************************************/ +/*BMemoryIO & +BMemoryIO_operator=(BMemoryIO *MemoryIO, const BMemoryIO &) +{ + return MemoryIO->operator=(); +}*/ + +#if defined(__cplusplus) +} +#endif + diff --git a/bepascal/bepascal/be/support/dataio.pp b/bepascal/bepascal/be/support/dataio.pp new file mode 100644 index 0000000..3e6a374 --- /dev/null +++ b/bepascal/bepascal/be/support/dataio.pp @@ -0,0 +1,629 @@ +{ BePascal - A pascal wrapper around the BeOS API + Copyright (C) 2002 Olivier Coursiere + Eric Jourde + + 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 dataio; + +interface + +uses + beobj, supportdefs; + +type + TDataIO = class(TBeObject) + private + public + constructor Create; override; + destructor Destroy; override; + function Read(buffer : Pointer; size : TSize_t) : TSSize_t; virtual; abstract; + function Write(buffer : Pointer; size : TSize_t) : TSSize_t; virtual; abstract; +{ procedure _ReservedDataIO1; + procedure _ReservedDataIO2; + procedure _ReservedDataIO3; + procedure _ReservedDataIO4; + procedure _ReservedDataIO5; + procedure _ReservedDataIO6; + procedure _ReservedDataIO7; + procedure _ReservedDataIO8; + procedure _ReservedDataIO9; + procedure _ReservedDataIO10; + procedure _ReservedDataIO11; + procedure _ReservedDataIO12; +} + constructor Create(DataIO : TDataIO); +// function operator=( : TDataIO) : TDataIO; +// procedure int32 _reserved[2]; + end; +type + TPositionIO = class(TDataIO) + private + public + constructor Create; override; + destructor Destroy; override; +// function Read(buffer : Pointer; size : TSize_t) : TSSize_t; override; +// function Write(buffer : Pointer; size : TSize_t) : TSSize_t; override; + function ReadAt(pos : Toff_t; buffer : Pointer; size : TSize_t) : TSSize_t; virtual; abstract; + function WriteAt(pos : Toff_t; buffer : Pointer; size : TSize_t) : TSSize_t; virtual; abstract; + function Seek(aposition : Toff_t; seek_mode : Cardinal) : Toff_t; virtual; abstract; +// function Position : Toff_t; virtual; + function SetSize(size : Toff_t) : TStatus_t; virtual; +{ procedure _ReservedPositionIO1; + procedure _ReservedPositionIO2; + procedure _ReservedPositionIO3; + procedure _ReservedPositionIO4; + procedure _ReservedPositionIO5; + procedure _ReservedPositionIO6; + procedure _ReservedPositionIO7; + procedure _ReservedPositionIO8; + procedure _ReservedPositionIO9; + procedure _ReservedPositionIO10; + procedure _ReservedPositionIO11; + procedure _ReservedPositionIO12; +} +// procedure int32 _reserved[2]; + end; +type + TMallocIO = class(TPositionIO) + private + public + constructor Create; override; + destructor Destroy; override; + function ReadAt(pos : Toff_t; abuffer : Pointer; size : TSize_t) : TSSize_t; override; + function WriteAt(pos : Toff_t; abuffer : Pointer; size : TSize_t) : TSSize_t; override; + function Seek(pos : Toff_t; seek_mode : Cardinal) : Toff_t; override; +// function Position : Toff_t; override; + function SetSize(size : Toff_t) : TStatus_t; override; + procedure SetBlockSize(blocksize : TSize_t); virtual; + function Buffer : Pointer; +// function BufferLength : TSize_t; +{ procedure _ReservedMallocIO1; + procedure _ReservedMallocIO2; +} + constructor Create(MallocIO : TMallocIO); +// function operator=( : TMallocIO) : TMallocIO; +{ function fBlockSize : TSize_t; + function fMallocSize : TSize_t; + function fLength : TSize_t; + function fData : PChar; + function fPosition : Toff_t; +} +// procedure _reserved[1] : integer; + end; +type + TMemoryIO = class(TPositionIO) + private + public + constructor Create; override; + constructor Create(p : Pointer; len : TSize_t); virtual; + destructor Destroy; override; + function ReadAt(pos : Toff_t; buffer : Pointer; size : TSize_t) : TSSize_t; override; + function WriteAt(pos : Toff_t; buffer : Pointer; size : TSize_t) : TSSize_t; override; + function Seek(pos : Toff_t; seek_mode : Cardinal) : Toff_t; override; +// function Position : Toff_t; override; + function SetSize(size : Toff_t) : TStatus_t; override; +{ procedure _ReservedMemoryIO1; + procedure _ReservedMemoryIO2; +} + constructor Create(MemoryIO : TMemoryIO); +// function operator=(MemoryIO : TMemoryIO) : TMemoryIO; +{ function fReadOnly : boolean; + function fBuf : PChar; + function fLen : TSize_t; + function fPhys : TSize_t; + function fPos : TSize_t; +} +// function _reserved[1] : int32; + end; + +function BDataIO_Create(AObject : TBeObject) : TCPlusObject; cdecl; external BePascalLibName name 'BDataIO_Create_1'; +procedure BDataIO_Free(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BDataIO_Free'; +//function BDataIO_Read(AObject : TCPlusObject; buffer : Pointer; size : TSize_t) : TSSize_t; cdecl; external BePascalLibName name 'BDataIO_Read'; +//function BDataIO_Write(AObject : TCPlusObject; buffer : Pointer; size : TSize_t) : TSSize_t; cdecl; external BePascalLibName name 'BDataIO_Write'; +{procedure BDataIO__ReservedDataIO1(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BDataIO__ReservedDataIO1'; +procedure BDataIO__ReservedDataIO2(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BDataIO__ReservedDataIO2'; +procedure BDataIO__ReservedDataIO3(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BDataIO__ReservedDataIO3'; +procedure BDataIO__ReservedDataIO4(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BDataIO__ReservedDataIO4'; +procedure BDataIO__ReservedDataIO5(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BDataIO__ReservedDataIO5'; +procedure BDataIO__ReservedDataIO6(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BDataIO__ReservedDataIO6'; +procedure BDataIO__ReservedDataIO7(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BDataIO__ReservedDataIO7'; +procedure BDataIO__ReservedDataIO8(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BDataIO__ReservedDataIO8'; +procedure BDataIO__ReservedDataIO9(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BDataIO__ReservedDataIO9'; +procedure BDataIO__ReservedDataIO10(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BDataIO__ReservedDataIO10'; +procedure BDataIO__ReservedDataIO11(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BDataIO__ReservedDataIO11'; +procedure BDataIO__ReservedDataIO12(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BDataIO__ReservedDataIO12'; +} +function BDataIO_Create(AObject : TBeObject; DataIO : TDataIO) : TCPlusObject; cdecl; external BePascalLibName name 'BDataIO_Create_2'; +//function BDataIO_operator=(AObject : TCPlusObject; : TDataIO) : TDataIO; cdecl; external BePascalLibName name 'BDataIO_operator='; +//procedure BDataIO_int32 _reserved[2](AObject : TCPlusObject); cdecl; external BePascalLibName name 'BDataIO_int32 _reserved[2]'; +function BPositionIO_Create(AObject : TBeObject) : TCPlusObject; cdecl; external BePascalLibName name 'BPositionIO_Create'; +procedure BPositionIO_Free(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BPositionIO_Free'; +function BPositionIO_Read(AObject : TCPlusObject; buffer : Pointer; size : TSize_t) : TSSize_t; cdecl; external BePascalLibName name 'BPositionIO_Read'; +function BPositionIO_Write(AObject : TCPlusObject; buffer : Pointer; size : TSize_t) : TSSize_t; cdecl; external BePascalLibName name 'BPositionIO_Write'; +function BPositionIO_ReadAt(AObject : TCPlusObject; pos : Toff_t; buffer : Pointer; size : TSize_t) : TSSize_t; cdecl; external BePascalLibName name 'BPositionIO_ReadAt'; +function BPositionIO_WriteAt(AObject : TCPlusObject; pos : Toff_t; buffer : Pointer; size : TSize_t) : TSSize_t; cdecl; external BePascalLibName name 'BPositionIO_WriteAt'; +function BPositionIO_Seek(AObject : TCPlusObject; position : Toff_t; seek_mode : Cardinal) : Toff_t; cdecl; external BePascalLibName name 'BPositionIO_Seek'; +//function BPositionIO_Position(AObject : TCPlusObject) : Toff_t; cdecl; external BePascalLibName name 'BPositionIO_Position'; +function BPositionIO_SetSize(AObject : TCPlusObject; size : Toff_t) : TStatus_t; cdecl; external BePascalLibName name 'BPositionIO_SetSize'; +{procedure BPositionIO__ReservedPositionIO1(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BPositionIO__ReservedPositionIO1'; +procedure BPositionIO__ReservedPositionIO2(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BPositionIO__ReservedPositionIO2'; +procedure BPositionIO__ReservedPositionIO3(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BPositionIO__ReservedPositionIO3'; +procedure BPositionIO__ReservedPositionIO4(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BPositionIO__ReservedPositionIO4'; +procedure BPositionIO__ReservedPositionIO5(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BPositionIO__ReservedPositionIO5'; +procedure BPositionIO__ReservedPositionIO6(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BPositionIO__ReservedPositionIO6'; +procedure BPositionIO__ReservedPositionIO7(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BPositionIO__ReservedPositionIO7'; +procedure BPositionIO__ReservedPositionIO8(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BPositionIO__ReservedPositionIO8'; +procedure BPositionIO__ReservedPositionIO9(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BPositionIO__ReservedPositionIO9'; +procedure BPositionIO__ReservedPositionIO10(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BPositionIO__ReservedPositionIO10'; +procedure BPositionIO__ReservedPositionIO11(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BPositionIO__ReservedPositionIO11'; +procedure BPositionIO__ReservedPositionIO12(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BPositionIO__ReservedPositionIO12'; +} +//procedure BPositionIO_int32 _reserved[2](AObject : TCPlusObject); cdecl; external BePascalLibName name 'BPositionIO_int32 _reserved[2]'; +function BMallocIO_Create(AObject : TBeObject) : TCPlusObject; cdecl; external BePascalLibName name 'BMallocIO_Create'; +procedure BMallocIO_Free(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BMallocIO_Free'; +function BMallocIO_ReadAt(AObject : TCPlusObject; pos : Toff_t; buffer : Pointer; size : TSize_t) : TSSize_t; cdecl; external BePascalLibName name 'BMallocIO_ReadAt'; +function BMallocIO_WriteAt(AObject : TCPlusObject; pos : Toff_t; buffer : Pointer; size : TSize_t) : TSSize_t; cdecl; external BePascalLibName name 'BMallocIO_WriteAt'; +function BMallocIO_Seek(AObject : TCPlusObject; pos : Toff_t; seek_mode : Cardinal) : Toff_t; cdecl; external BePascalLibName name 'BMallocIO_Seek'; +//function BMallocIO_Position(AObject : TCPlusObject) : Toff_t; cdecl; external BePascalLibName name 'BMallocIO_Position'; +function BMallocIO_SetSize(AObject : TCPlusObject; size : Toff_t) : TStatus_t; cdecl; external BePascalLibName name 'BMallocIO_SetSize'; +procedure BMallocIO_SetBlockSize(AObject : TCPlusObject; blocksize : TSize_t); cdecl; external BePascalLibName name 'BMallocIO_SetBlockSize'; +function BMallocIO_Buffer(AObject : TCPlusObject) : Pointer; cdecl; external BePascalLibName name 'BMallocIO_Buffer'; +//function BMallocIO_BufferLength(AObject : TCPlusObject) : TSize_t; cdecl; external BePascalLibName name 'BMallocIO_BufferLength'; +{procedure BMallocIO__ReservedMallocIO1(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BMallocIO__ReservedMallocIO1'; +procedure BMallocIO__ReservedMallocIO2(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BMallocIO__ReservedMallocIO2'; +} +function BMallocIO_Create(AObject : TBeObject; MallocIO : TMallocIO) : TCPlusObject; cdecl; external BePascalLibName name 'BMallocIO_Create'; +//function BMallocIO_operator=(AObject : TCPlusObject; MallocIO : TMallocIO) : TMallocIO; cdecl; external BePascalLibName name 'BMallocIO_operator='; +{procedure BMallocIO_size_t fBlockSize(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BMallocIO_size_t fBlockSize'; +procedure BMallocIO_size_t fMallocSize(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BMallocIO_size_t fMallocSize'; +procedure BMallocIO_size_t fLength(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BMallocIO_size_t fLength'; +procedure BMallocIO_char *fData(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BMallocIO_char *fData'; +procedure BMallocIO_off_t fPosition(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BMallocIO_off_t fPosition'; +procedure BMallocIO_int32 _reserved[1](AObject : TCPlusObject); cdecl; external BePascalLibName name 'BMallocIO_int32 _reserved[1]'; +} +function BMemoryIO_Create(AObject : TBeObject) : TCPlusObject; cdecl; external BePascalLibName name 'BMemoryIO_Create'; +function BMemoryIO_Create(AObject : TBeObject; p : Pointer; len : TSize_t) : TCPlusObject; cdecl; external BePascalLibName name 'BMemoryIO_Create'; +procedure BMemoryIO_Free(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BMemoryIO_Free'; +function BMemoryIO_ReadAt(AObject : TCPlusObject; pos : Toff_t; buffer : Pointer; size : TSize_t) : TSSize_t; cdecl; external BePascalLibName name 'BMemoryIO_ReadAt'; +function BMemoryIO_WriteAt(AObject : TCPlusObject; pos : Toff_t; buffer : Pointer; size : TSize_t) : TSSize_t; cdecl; external BePascalLibName name 'BMemoryIO_WriteAt'; +function BMemoryIO_Seek(AObject : TCPlusObject; pos : Toff_t; seek_mode : Cardinal) : Toff_t; cdecl; external BePascalLibName name 'BMemoryIO_Seek'; +function BMemoryIO_Position(AObject : TCPlusObject) : Toff_t; cdecl; external BePascalLibName name 'BMemoryIO_Position'; +function BMemoryIO_SetSize(AObject : TCPlusObject; size : Toff_t) : TStatus_t; cdecl; external BePascalLibName name 'BMemoryIO_SetSize'; +{procedure BMemoryIO__ReservedMemoryIO1(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BMemoryIO__ReservedMemoryIO1'; +procedure BMemoryIO__ReservedMemoryIO2(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BMemoryIO__ReservedMemoryIO2'; +} +function BMemoryIO_Create(AObject : TBeObject; MemoryIO : TCPlusObject) : TCPlusObject; cdecl; external BePascalLibName name 'BMemoryIO_Create'; +//function BMemoryIO_operator=(AObject : TCPlusObject; : TMemoryIO) : TMemoryIO; cdecl; external BePascalLibName name 'BMemoryIO_operator='; +{procedure BMemoryIO_bool fReadOnly(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BMemoryIO_bool fReadOnly'; +procedure BMemoryIO_char *fBuf(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BMemoryIO_char *fBuf'; +procedure BMemoryIO_size_t fLen(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BMemoryIO_size_t fLen'; +procedure BMemoryIO_size_t fPhys(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BMemoryIO_size_t fPhys'; +procedure BMemoryIO_size_t fPos(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BMemoryIO_size_t fPos'; +procedure BMemoryIO_int32 _reserved[1](AObject : TCPlusObject); cdecl; external BePascalLibName name 'BMemoryIO_int32 _reserved[1]'; +} + +implementation + +constructor TDataIO.Create; +begin + inherited; + CPlusObject := BDataIO_Create(Self); +end; + +destructor TDataIO.Destroy; +begin + if CPlusObject <> nil then + BDataIO_Free(CPlusObject); + inherited; +end; + +{procedure TDataIO._ReservedDataIO1; +begin + BDataIO__ReservedDataIO1(CPlusObject); +end; + +procedure TDataIO._ReservedDataIO2; +begin + BDataIO__ReservedDataIO2(CPlusObject); +end; + +procedure TDataIO._ReservedDataIO3; +begin + BDataIO__ReservedDataIO3(CPlusObject); +end; + +procedure TDataIO._ReservedDataIO4; +begin + BDataIO__ReservedDataIO4(CPlusObject); +end; + +procedure TDataIO._ReservedDataIO5; +begin + BDataIO__ReservedDataIO5(CPlusObject); +end; + +procedure TDataIO._ReservedDataIO6; +begin + BDataIO__ReservedDataIO6(CPlusObject); +end; + +procedure TDataIO._ReservedDataIO7; +begin + BDataIO__ReservedDataIO7(CPlusObject); +end; + +procedure TDataIO._ReservedDataIO8; +begin + BDataIO__ReservedDataIO8(CPlusObject); +end; + +procedure TDataIO._ReservedDataIO9; +begin + BDataIO__ReservedDataIO9(CPlusObject); +end; + +procedure TDataIO._ReservedDataIO10; +begin + BDataIO__ReservedDataIO10(CPlusObject); +end; + +procedure TDataIO._ReservedDataIO11; +begin + BDataIO__ReservedDataIO11(CPlusObject); +end; + +procedure TDataIO._ReservedDataIO12; +begin + BDataIO__ReservedDataIO12(CPlusObject); +end; +} + +constructor TDataIO.Create(DataIO : TDataIO); +begin + inherited Create; + CPlusObject := BDataIO_Create(Self, DataIO); +end; + +{function TDataIO.operator=( : TDataIO) : TDataIO; +begin + BDataIO_operator=(CPlusObject, ); +end; +} + +{procedure TDataIO.int32 _reserved[2]; +begin + BDataIO_int32 _reserved[2](CPlusObject); +end; +} + +constructor TPositionIO.Create; +begin + CPlusObject := BPositionIO_Create(Self); +end; + +destructor TPositionIO.Destroy; +begin + BPositionIO_Free(CPlusObject); +end; + +{function TPositionIO.Read(buffer : Pointer; size : TSize_t) : TSSize_t; +begin + Result := BPositionIO_Read(CPlusObject, buffer, size); +end; + +function TPositionIO.Write(buffer : Pointer; size : TSize_t) : TSSize_t; +begin + Result := BPositionIO_Write(CPlusObject, buffer, size); +end; +} + +{function TPositionIO.ReadAt(pos : Toff_t; buffer : Pointer; size : TSize_t) : TSSize_t; +begin + Result := BPositionIO_ReadAt(CPlusObject, pos, buffer, size); +end; + +function TPositionIO.WriteAt(pos : Toff_t; buffer : Pointer; size : TSize_t) : TSSize_t; +begin + Result := BPositionIO_WriteAt(CPlusObject, pos, buffer, size); +end; + +function TPositionIO.Seek(aposition : Toff_t; seek_mode : Cardinal) : Toff_t; +begin + Result := BPositionIO_Seek(CPlusObject, aposition, seek_mode); +end; +} + +{function TPositionIO.Position : Toff_t; +begin + Result := BPositionIO_Position(CPlusObject); +end; +} + +function TPositionIO.SetSize(size : Toff_t) : TStatus_t; +begin + Result := BPositionIO_SetSize(CPlusObject, size); +end; + +{procedure TPositionIO._ReservedPositionIO1; +begin + BPositionIO__ReservedPositionIO1(CPlusObject); +end; + +procedure TPositionIO._ReservedPositionIO2; +begin + BPositionIO__ReservedPositionIO2(CPlusObject); +end; + +procedure TPositionIO._ReservedPositionIO3; +begin + BPositionIO__ReservedPositionIO3(CPlusObject); +end; + +procedure TPositionIO._ReservedPositionIO4; +begin + BPositionIO__ReservedPositionIO4(CPlusObject); +end; + +procedure TPositionIO._ReservedPositionIO5; +begin + BPositionIO__ReservedPositionIO5(CPlusObject); +end; + +procedure TPositionIO._ReservedPositionIO6; +begin + BPositionIO__ReservedPositionIO6(CPlusObject); +end; + +procedure TPositionIO._ReservedPositionIO7; +begin + BPositionIO__ReservedPositionIO7(CPlusObject); +end; + +procedure TPositionIO._ReservedPositionIO8; +begin + BPositionIO__ReservedPositionIO8(CPlusObject); +end; + +procedure TPositionIO._ReservedPositionIO9; +begin + BPositionIO__ReservedPositionIO9(CPlusObject); +end; + +procedure TPositionIO._ReservedPositionIO10; +begin + BPositionIO__ReservedPositionIO10(CPlusObject); +end; + +procedure TPositionIO._ReservedPositionIO11; +begin + BPositionIO__ReservedPositionIO11(CPlusObject); +end; + +procedure TPositionIO._ReservedPositionIO12; +begin + BPositionIO__ReservedPositionIO12(CPlusObject); +end; +} + +{procedure TPositionIO.int32 _reserved[2]; +begin + BPositionIO_int32 _reserved[2](CPlusObject); +end; +} + +constructor TMallocIO.Create; +begin + CPlusObject := BMallocIO_Create(Self); +end; + +destructor TMallocIO.Destroy; +begin + BMallocIO_Free(CPlusObject); +end; + +function TMallocIO.ReadAt(pos : Toff_t; abuffer : Pointer; size : TSize_t) : TSSize_t; +begin + Result := BMallocIO_ReadAt(CPlusObject, pos, abuffer, size); +end; + +function TMallocIO.WriteAt(pos : Toff_t; abuffer : Pointer; size : TSize_t) : TSSize_t; +begin + Result := BMallocIO_WriteAt(CPlusObject, pos, abuffer, size); +end; + +function TMallocIO.Seek(pos : Toff_t; seek_mode : Cardinal) : Toff_t; +begin + Result := BMallocIO_Seek(CPlusObject, pos, seek_mode); +end; + +{function TMallocIO.Position : Toff_t; +begin + Result := BMallocIO_Position(CPlusObject); +end; +} + +function TMallocIO.SetSize(size : Toff_t) : TStatus_t; +begin + Result := BMallocIO_SetSize(CPlusObject, size); +end; + +procedure TMallocIO.SetBlockSize(blocksize : TSize_t); +begin + BMallocIO_SetBlockSize(CPlusObject, blocksize); +end; + +function TMallocIO.Buffer : Pointer; +begin + Result := BMallocIO_Buffer(CPlusObject); +end; + +{function TMallocIO.BufferLength : TSize_t; +begin + Result := BMallocIO_BufferLength(CPlusObject); +end; +} + + +{procedure TMallocIO._ReservedMallocIO1; +begin + BMallocIO__ReservedMallocIO1(CPlusObject); +end; + +procedure TMallocIO._ReservedMallocIO2; +begin + BMallocIO__ReservedMallocIO2(CPlusObject); +end; +} + +constructor TMallocIO.Create(MallocIO : TMallocIO); +begin + CPlusObject := BMallocIO_Create(Self, MallocIO); +end; + +{function TMallocIO.operator=( : TMallocIO) : TMallocIO; +begin + BMallocIO_operator=(CPlusObject, ); +end; +} + +{function TMallocIO.fBlockSize : TSize_t; +begin + Result := BMallocIO_fBlockSize(CPlusObject); +end; + +function TMallocIO.fMallocSize : TSize_t; +begin + Result := BMallocIO_size_t fMallocSize(CPlusObject); +end; + +function TMallocIO.fLength : TSize_t; +begin + BMallocIO_size_t fLength(CPlusObject); +end; + +function TMallocIO.fData : PChar; +begin + Result := BMallocIO_char *fData(CPlusObject); +end; + +function TMallocIO.fPosition : Toff_t; +begin + Result := BMallocIO_fPosition(CPlusObject); +end; +} + +{procedure TMallocIO.int32 _reserved[1]; +begin + BMallocIO_int32 _reserved[1](CPlusObject); +end; +} + +constructor TMemoryIO.Create; +begin + CPlusObject := BMemoryIO_Create(Self); +end; + + +constructor TMemoryIO.Create(p : Pointer; len : TSize_t); +begin + CPlusObject := BMemoryIO_Create(Self, p, len); +end; + +destructor TMemoryIO.Destroy; +begin + BMemoryIO_Free(CPlusObject); +end; + +function TMemoryIO.ReadAt(pos : Toff_t; buffer : Pointer; size : TSize_t) : TSSize_t; +begin + Result := BMemoryIO_ReadAt(CPlusObject, pos, buffer, size); +end; + +function TMemoryIO.WriteAt(pos : Toff_t; buffer : Pointer; size : TSize_t) : TSSize_t; +begin + Result := BMemoryIO_WriteAt(CPlusObject, pos, buffer, size); +end; + +function TMemoryIO.Seek(pos : Toff_t; seek_mode : Cardinal) : Toff_t; +begin + Result := BMemoryIO_Seek(CPlusObject, pos, seek_mode); +end; + +{function TMemoryIO.Position : Toff_t; +begin + Result := BMemoryIO_Position(CPlusObject); +end; +} + +function TMemoryIO.SetSize(size : Toff_t) : TStatus_t; +begin + Result := BMemoryIO_SetSize(CPlusObject, size); +end; + +{procedure TMemoryIO._ReservedMemoryIO1; +begin + BMemoryIO__ReservedMemoryIO1(CPlusObject); +end; + +procedure TMemoryIO._ReservedMemoryIO2; +begin + BMemoryIO__ReservedMemoryIO2(CPlusObject); +end; +} + +constructor TMemoryIO.Create(MemoryIO : TMemoryIO); +begin + CPlusObject := BMemoryIO_Create(Self, MemoryIO.CPlusObject); +end; + +{function TMemoryIO.operator=( : TMemoryIO) : TMemoryIO; +begin + BMemoryIO_operator=(CPlusObject, ); +end; +} + +{procedure TMemoryIO.bool fReadOnly; +begin + BMemoryIO_bool fReadOnly(CPlusObject); +end; + +procedure TMemoryIO.char *fBuf; +begin + BMemoryIO_char *fBuf(CPlusObject); +end; + +procedure TMemoryIO.size_t fLen; +begin + BMemoryIO_size_t fLen(CPlusObject); +end; + +procedure TMemoryIO.size_t fPhys; +begin + BMemoryIO_size_t fPhys(CPlusObject); +end; + +procedure TMemoryIO.size_t fPos; +begin + BMemoryIO_size_t fPos(CPlusObject); +end; + +procedure TMemoryIO.int32 _reserved[1]; +begin + BMemoryIO_int32 _reserved[1](CPlusObject); +end; +} + +end. diff --git a/bepascal/bepascal/bepascal/bepascal.proj b/bepascal/bepascal/bepascal/bepascal.proj index 83c19b62e72dd77e0b3841deebc2d632ea525d36..d7d8aea4c4da3bdeb550a863d19199c9beb5f2c4 100644 GIT binary patch delta 709 zcmbPMxu>4P*VDz7fx&*uMvfPpj3+jK||hIoeok31W3k;JpdbL?^#66JunV{ND^E zodlUDNyafSaCpJAf#?PxwtciF2kbGI#F9i$|II7RBN&mQY_ptY3^IT646CEa($&_| Fi~z`wtyus7 delta 241 zcmdl}Kdq9(*VDz7fx)J4BgYF)MuW{CIqg)L9w}`$)Zfblq$eBdi%ytu>?X 0) then Result := Result + ', '; if FParams.Names[i] <> '' then - Result := Result + Format('%s%s', [FParams.Values[FParams.Names[i]], FParams.Names[i] ]); + Result := Result + Format('%s %s', [FParams.Values[FParams.Names[i]], FParams.Names[i] ]); end; end; begin diff --git a/bepascal/bepascal/test_app/hello.pp b/bepascal/bepascal/test_app/hello.pp index f70fc2f..76c668a 100644 --- a/bepascal/bepascal/test_app/hello.pp +++ b/bepascal/bepascal/test_app/hello.pp @@ -21,7 +21,8 @@ program Hello; {$M+} uses beobj, application, message, _beep, roster, SysUtils, - archivable, handler, toto, rect, window; + archivable, handler, toto, rect, window, view, graphicdefs, dataio, + invoker, messenger, Control, Button; type TMonApplication = class(TApplication) @@ -30,7 +31,14 @@ type procedure MessageReceived(aMessage : TMessage); override; function QuitRequested : boolean; override; end; - + TMyWindow = class(TWindow) + private + aView : TView; + aButton : TButton; + public + constructor Create(frame : TRect; title : PChar; atype, flags, workspaces : Cardinal); override; + destructor Destroy; override; + end; TMonObjet = class(TObject) private FMessage : string; @@ -45,6 +53,47 @@ type var MonObj : TMonObjet; +constructor TMyWindow.Create(frame : TRect; title : PChar; atype, flags, workspaces : Cardinal); +var + aRect, aRect2 : TRect; + rgb_color : TRGB_color; + mess : TMessage; +begin + inherited; + aRect := TRect.Create(20, 20, 100, 100); + try + aRect2 := TRect.Create(120, 120, 300, 300); + try + aView := TView.Create(aRect, 'Test', B_FOLLOW_NONE, B_WILL_DRAW); + rgb_color.red := 255; + rgb_color.green := 0; + rgb_color.blue := 0; + rgb_color.alpha := 0; + aView.SetViewColor(rgb_color); + Self.AddChild(aView, nil); + mess := TMessage.Create(100); + aButton := TButton.Create(aRect2, 'Test', 'Test', mess, B_FOLLOW_NONE, B_WILL_DRAW); + WriteLn('before addchild'); + Self.AddChild(aButton, nil); + aButton.Invoker.SetTarget(aView, nil); + if aButton.IsEnabled then + WriteLn('Actif'); + WriteLn('after addchild'); + finally + aRect2.Free; + end; + finally + aRect.Free; + end; +end; + +destructor TMyWindow.Destroy; +begin +// aButton.Free; +// aView.Free; + inherited; +end; + function TMonApplication.QuitRequested : boolean; begin Result := inherited; @@ -74,23 +123,23 @@ begin end; constructor TMonObjet.Create; -var - a, b : string; - c : longint; +//var +// a, b : string; +// c : longint; begin inherited; - // GetLineInfo($A0000DB4, a, b, c); - Writeln(a + ' ' + b + ' ' + IntToStr(c)); +// GetLineInfo($A0000DB4, a, b, c); +// Writeln(a + ' ' + b + ' ' + IntToStr(c)); WriteLn('Constructor'); end; procedure TMonObjet.Bonjour(test : string); -var - a, b : string; - c : longint; +//var +// a, b : string; +// c : longint; begin // GetLineInfo($8002AEA5, a, b, c); - Writeln(a + ' ' + b + ' ' + IntToStr(c)); +// Writeln(a + ' ' + b + ' ' + IntToStr(c)); WriteLn(test); beep; WriteLn('Fin de ' + test); @@ -118,7 +167,7 @@ end; var aRect : TRect; - win : TWindow; + win : TMyWindow; begin beep; @@ -127,7 +176,7 @@ begin TMonApplication.Create; try aRect := TRect.Create(20, 20, 200, 200); - win := TWindow.Create(aRect, 'Bonjour', B_TITLED_WINDOW, B_QUIT_ON_WINDOW_CLOSE, B_CURRENT_WORKSPACE); + win := TMyWindow.Create(aRect, 'Bonjour', B_TITLED_WINDOW, B_NOT_RESIZABLE or B_NOT_ZOOMABLE or B_QUIT_ON_WINDOW_CLOSE, B_CURRENT_WORKSPACE); win.Show; be_app.Run; be_app.HideCursor; @@ -137,4 +186,4 @@ begin aRect.Free; win.Free; end; -end. \ No newline at end of file +end. diff --git a/bepascal/bepascal/test_app/test.pp b/bepascal/bepascal/test_app/test.pp index 0d78b8e..8a8c8ae 100644 --- a/bepascal/bepascal/test_app/test.pp +++ b/bepascal/bepascal/test_app/test.pp @@ -21,11 +21,12 @@ program test; {$M+} type + TTest = class; TObjet = class(TObject) private public end; - + TTest = class(TObject); external; var obj : TObjet; begin