ListView, OutlineListView, and Alert support by baldur

This commit is contained in:
ocoursiere
2003-03-30 15:01:44 +00:00
parent a826637324
commit 57dab374cd
9 changed files with 4479 additions and 0 deletions

View File

@@ -0,0 +1,534 @@
/* BePascal - A pascal wrapper around the BeOS API
Copyright (C) 2003 Olivier Coursiere
Eric Jourde
Oscar Lesta
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with this library; if not, write to the Free
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#ifndef _ALERT_CPP_
#define _ALERT_CPP_
#include <Alert.h>
#include "window.h"
#include "looper.h"
#include <beobj.h>
/*----------------------------------------------------------------*/
/*----- BAlert class ---------------------------------------------*/
class BPAlert : public BAlert, public virtual BPWindow // Is this OK? or should be public virtual?
{
public:
BPAlert(TPasObject PasObject,
const char *title,
const char *text,
const char *button1,
const char *button2 = NULL,
const char *button3 = NULL,
button_width width = B_WIDTH_AS_USUAL,
alert_type type = B_INFO_ALERT);
BPAlert(TPasObject PasObject,
const char *title,
const char *text,
const char *button1,
const char *button2,
const char *button3,
button_width width,
button_spacing spacing,
alert_type type = B_INFO_ALERT);
BPAlert(TPasObject PasObject, BMessage *data);
//virtual ~BAlert();
/* Archiving */
static BArchivable *Instantiate(BMessage *data);
//virtual status_t Archive(BMessage *data, bool deep = true) const;
/* BAlert guts */
void SetShortcut(int32 button_index, char key);
char Shortcut(int32 button_index) const;
int32 Go();
status_t Go(BInvoker *invoker);
virtual void MessageReceived(BMessage *an_event);
virtual void FrameResized(float new_width, float new_height);
BButton *ButtonAt(int32 index) const;
BTextView *TextView() const;
/*
virtual BHandler *ResolveSpecifier(BMessage *msg,
int32 index,
BMessage *specifier,
int32 form,
const char *property);
virtual status_t GetSupportedSuites(BMessage *data);
*/
virtual void DispatchMessage(BMessage *msg, BHandler *handler);
virtual void Quit();
virtual bool QuitRequested();
static BPoint AlertPosition(float width, float height);
/*----- Private or reserved -----------------------------------------*/
//virtual status_t Perform(perform_code d, void *arg);
private:
/*
friend class _BAlertFilter_;
virtual void _ReservedAlert1();
virtual void _ReservedAlert2();
virtual void _ReservedAlert3();
void InitObject(const char *text,
const char *button1,
const char *button2 = NULL,
const char *button3 = NULL,
button_width width = B_WIDTH_AS_USUAL,
button_spacing spacing = B_EVEN_SPACING,
alert_type type = B_INFO_ALERT);
BBitmap *InitIcon();
sem_id fAlertSem;
int32 fAlertVal;
BButton *fButtons[3];
BTextView *fTextView;
char fKeys[3];
alert_type fMsgType;
button_width fButtonWidth;
BInvoker *fInvoker;
uint32 _reserved[4];
*/
};
/*-------------------------------------------------------------*/
/*-------------------------------------------------------------*/
BPAlert::BPAlert(TPasObject PasObject,
const char *title,
const char *text,
const char *button1,
const char *button2 = NULL,
const char *button3 = NULL,
button_width width = B_WIDTH_AS_USUAL,
alert_type type = B_INFO_ALERT)
: BAlert(title, text, button1, button2, button3, width, type),
BPWindow(PasObject, BRect(), title, B_UNTYPED_WINDOW, 0, 0),
// oco or Baldur :
// why this doesn't work? compiler says:
// BPWindow doesn't have a BPLooper member. The same with BPArchivable.
// BPLooper(PasObject),
BPHandler(PasObject, title),
// BPArchivable(PasObject),
BPasObject(PasObject)
{
}
BPAlert::BPAlert(TPasObject PasObject,
const char *title,
const char *text,
const char *button1,
const char *button2,
const char *button3,
button_width width,
button_spacing spacing,
alert_type type = B_INFO_ALERT)
: BAlert(title, text, button1, button2, button3, width, spacing, type),
BPWindow(PasObject, BRect(), title, B_UNTYPED_WINDOW, 0, 0),
// BPLooper(PasObject),
BPHandler(PasObject, title),
// BPArchivable(PasObject),
BPasObject(PasObject)
{
}
BPAlert::BPAlert(TPasObject PasObject, BMessage *data)
: BAlert(data),
// UGLY HACK!!! FIX ME!!! (should be "BPWindow(PasObject, data)" )
BPWindow(PasObject, BRect(), "Ugly_Hack!", B_UNTYPED_WINDOW, 0, 0),
// BPLooper(PasObject),
BPHandler(PasObject),
// BPArchivable(PasObject),
BPasObject(PasObject)
{
}
void
BPAlert::SetShortcut(int32 button_index, char key)
{
BAlert::SetShortcut(button_index, key);
}
char
BPAlert::Shortcut(int32 button_index) const
{
return BAlert::Shortcut(button_index);
}
int32
BPAlert::Go(void)
{
return BAlert::Go();
}
status_t
BPAlert::Go(BInvoker *invoker)
{
return BAlert::Go(invoker);
}
void
BPAlert::MessageReceived(BMessage *an_event)
{
BAlert::MessageReceived(an_event);
}
void
BPAlert::FrameResized(float new_width, float new_height)
{
BAlert::FrameResized(new_width, new_height);
}
void
BPAlert::DispatchMessage(BMessage *msg, BHandler *handler)
{
BAlert::DispatchMessage(msg, handler);
}
void
BPAlert::Quit(void)
{
BAlert::Quit();
}
bool
BPAlert::QuitRequested(void)
{
BAlert::QuitRequested();
}
/*-------------------------------------------------------------*/
#if defined(__cplusplus)
extern "C" {
#endif
/*----------------------------------------------------------------*/
/*
* Method: BAlert::BAlert()
* Descr:
*/
TCPlusObject BAlert_Create(TPasObject PasObject, const char *title, const char *text, const char *button1, const char *button2, const char *button3, button_width width, alert_type type)
{
return new BPAlert(PasObject, title, text, button1, button2, button3, width, type);
}
/*
* Method: BAlert::BAlert()
* Descr:
*/
TCPlusObject BAlert_Create_1
(TPasObject PasObject, const char *title, const char *text, const char *button1, const char *button2, const char *button3, button_width width, button_spacing spacing, alert_type type)
{
return new BPAlert(PasObject, title, text, button1, button2, button3, width, spacing, type);
}
/*
* Method: BAlert::BAlert()
* Descr:
*/
TCPlusObject BAlert_Create_2(TPasObject PasObject, BMessage *data)
{
return new BPAlert(PasObject, data);
}
/*
* Method: BAlert::~BAlert()
* Descr:
*/
TCPlusObject BAlert_Free(BAlert *Alert)
{
delete Alert;
}
/*
* Method: BAlert::Instantiate()
* Descr:
*/
BArchivable *
BAlert_Instantiate(BAlert *Alert, BMessage *data)
{
return Alert->Instantiate(data);
}
/*
* Method: BAlert::Archive()
* Descr:
*/
status_t
BAlert_Archive(BAlert *Alert, BMessage *data, bool deep)
{
return Alert->Archive(data, deep);
}
/*
* Method: BAlert::SetShortcut()
* Descr:
*/
void
BAlert_SetShortcut(BAlert *Alert, int32 button_index, char key)
{
Alert->SetShortcut(button_index, key);
}
/*
* Method: BAlert::Shortcut()
* Descr:
*/
char
BAlert_Shortcut(BAlert *Alert, int32 button_index)
{
return Alert->Shortcut(button_index);
}
/*
* Method: BAlert::Go()
* Descr:
*/
int32
BAlert_Go(BAlert *Alert)
{
return Alert->Go();
}
/*
* Method: BAlert::Go()
* Descr:
*/
status_t
BAlert_Go_1
(BAlert *Alert, BInvoker *invoker)
{
return Alert->Go(invoker);
}
/*
* Method: BAlert::MessageReceived()
* Descr:
*/
void
BAlert_MessageReceived(BAlert *Alert, BMessage *an_event)
{
Alert->MessageReceived(an_event);
}
/*
* Method: BAlert::FrameResized()
* Descr:
*/
void
BAlert_FrameResized(BAlert *Alert, float new_width, float new_height)
{
Alert->FrameResized(new_width, new_height);
}
/*
* Method: BAlert::ButtonAt()
* Descr:
*/
BButton *
BAlert_ButtonAt(BAlert *Alert, int32 index)
{
return Alert->ButtonAt(index);
}
/*
* Method: BAlert::TextView()
* Descr:
*/
BTextView *
BAlert_TextView(BAlert *Alert)
{
return Alert->TextView();
}
/*
* Method: BAlert::ResolveSpecifier()
* Descr:
*/
BHandler *
BAlert_ResolveSpecifier(BAlert *Alert, BMessage *msg, int32 index, BMessage *specifier, int32 form, const char *property)
{
return Alert->ResolveSpecifier(msg, index, specifier, form, property);
}
/*
* Method: BAlert::GetSupportedSuites()
* Descr:
*/
status_t
BAlert_GetSupportedSuites(BAlert *Alert, BMessage *data)
{
return Alert->GetSupportedSuites(data);
}
/*
* Method: BAlert::DispatchMessage()
* Descr:
*/
void
BAlert_DispatchMessage(BAlert *Alert, BMessage *msg, BHandler *handler)
{
Alert->DispatchMessage(msg, handler);
}
/*
* Method: BAlert::Quit()
* Descr:
*/
void
BAlert_Quit(BAlert *Alert)
{
Alert->Quit();
}
/*
* Method: BAlert::QuitRequested()
* Descr:
*/
bool
BAlert_QuitRequested(BAlert *Alert)
{
return Alert->QuitRequested();
}
/*
* Method: BAlert::AlertPosition()
* Descr:
*/
BPoint
BAlert_AlertPosition(BAlert *Alert, float width, float height)
{
return Alert->AlertPosition(width, height);
}
/*
* Method: BAlert::Perform()
* Descr:
*/
/*
status_t
BAlert_Perform(BAlert *Alert, perform_code d, void *arg)
{
return Alert->Perform(d, arg);
}
*/
/*
* Method: BAlert::_ReservedAlert1()
* Descr:
*/
/*
void
BAlert__ReservedAlert1(BAlert *Alert)
{
Alert->_ReservedAlert1();
}
*/
/*
* Method: BAlert::_ReservedAlert2()
* Descr:
*/
/*
void
BAlert__ReservedAlert2(BAlert *Alert)
{
Alert->_ReservedAlert2();
}
*/
/*
* Method: BAlert::_ReservedAlert3()
* Descr:
*/
/*
void
BAlert__ReservedAlert3(BAlert *Alert)
{
Alert->_ReservedAlert3();
}
*/
/*
* Method: BAlert::InitObject()
* Descr:
*/
/*
void
BAlert_InitObject(BAlert *Alert, const char *text, const char *button1, const char *button2, const char *button3, button_width width, button_spacing spacing, alert_type type)
{
Alert->InitObject(text, button1, button2, button3, width, spacing, type);
}
*/
/*
* Method: BAlert::InitIcon()
* Descr:
*/
/*
BBitmap *
BAlert_InitIcon(BAlert *Alert)
{
return Alert->InitIcon();
}
*/
/*----------------------------------------------------------------*/
#if defined(__cplusplus)
}
#endif
/*----------------------------------------------------------------*/
#endif /* _ALERT_CPP_ */