diff --git a/bepascal/bepascal/be/interface/TabView.cpp b/bepascal/bepascal/be/interface/TabView.cpp new file mode 100644 index 0000000..558e692 --- /dev/null +++ b/bepascal/bepascal/be/interface/TabView.cpp @@ -0,0 +1,1179 @@ +/* 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 +*/ + +#ifndef _TABVIEW_CPP_ +#define _TABVIEW_CPP_ + +/*********************************************************************** + * AUTHOR: nobody + * FILE: TabView.cpp + * DATE: Wed Feb 12 20:21:37 2003 + * DESCR: + ***********************************************************************/ +#include "TabView.h" +#include +#include + +typedef void (*BTabView_AddTab_hook) (TPasObject PasObject, TCPlusObject target, TCPlusObject tab); +typedef void (*BTabView_Draw_hook) (TPasObject PasObject, TCPlusObject updateRect); +typedef void (*BTabView_DrawBox_hook) (TPasObject PasObject, TCPlusObject selfTabRect); +typedef BRect (*BTabView_DrawTabs_hook) (TPasObject PasObject); +typedef void (*BTabView_MakeFocus_hook) (TPasObject PasObject, bool focused); +typedef BTab * (*BTabView_RemoveTab_hook) (TPasObject PasObject, int32 tab_index); +typedef void (*BTabView_Select_hook) (TPasObject PasObject, int32 tab); +typedef void (*BTabView_SetFocusTab_hook) (TPasObject PasObject, int32 tab, bool focused); +typedef void (*BTabView_SetTabHeight_hook) (TPasObject PasObject, float height); +typedef void (*BTabView_SetTabWidth_hook) (TPasObject PasObject, button_width width); +typedef BTab * (*BTabView_TabAt_hook) (TPasObject PasObject, int32 tab_index); +typedef BRect (*BTabView_TabFrame_hook) (TPasObject PasObject, int32 tab_index); + + + +#if defined(__cplusplus) +extern "C" { +#endif + +BTabView_AddTab_hook TabView_AddTab_hook; +BTabView_Draw_hook TabView_Draw_hook; +BTabView_DrawBox_hook TabView_DrawBox_hook; +BTabView_DrawTabs_hook TabView_DrawTabs_hook; +BTabView_MakeFocus_hook TabView_MakeFocus_hook; +BTabView_RemoveTab_hook TabView_RemoveTab_hook; +BTabView_Select_hook TabView_Select_hook; +BTabView_SetFocusTab_hook TabView_SetFocusTab_hook; +BTabView_SetTabHeight_hook TabView_SetTabHeight_hook; +BTabView_SetTabWidth_hook TabView_SetTabWidth_hook; +BTabView_TabAt_hook TabView_TabAt_hook; +BTabView_TabFrame_hook TabView_TabFrame_hook; + + +#if defined(__cplusplus) +} +#endif + +class BPTab :public BTab , virtual public BPasObject { +public: + BPTab(TPasObject PasObject,BView* contents=NULL); + BPTab(TPasObject PasObject,BMessage* data); +virtual void DrawLabel(BView* owner, BRect tabFrame); +virtual void DrawTab(BView* owner, BRect tabFrame, tab_position,bool full=true); +}; + +BPTab::BPTab(TPasObject PasObject,BView* contents=NULL) + :BTab(contents), + BPasObject(PasObject) +{ +} + + +BPTab::BPTab(TPasObject PasObject,BMessage* data) + :BTab(data), + BPasObject(PasObject) +{ +} + +void BPTab::DrawLabel(BView* owner, BRect tabFrame) +{ + BTab::DrawLabel(owner, tabFrame); +} + +void BPTab::DrawTab(BView* owner, BRect tabFrame, tab_position value, bool full) +{ + BTab::DrawTab(owner, tabFrame, value, full); +} + + + +class BPTabView : public BTabView, virtual public BPView { +public: + BPTabView(TPasObject PasObject,BRect frame, const char *name, + button_width width=B_WIDTH_AS_USUAL, + uint32 resizingMode = B_FOLLOW_ALL, + uint32 flags = B_FULL_UPDATE_ON_RESIZE | + B_WILL_DRAW | B_NAVIGABLE_JUMP | + B_FRAME_EVENTS | B_NAVIGABLE); + + BPTabView(TPasObject PasObject,BMessage*); +static BArchivable* Instantiate(BMessage*); +//virtual status_t Archive(BMessage*, bool deep=true) const; +//virtual status_t Perform(perform_code d, void *arg); + +virtual void WindowActivated(bool state); +virtual void AttachedToWindow(); +virtual void AllAttached(); +virtual void AllDetached(); +virtual void DetachedFromWindow(); + +virtual void MessageReceived(BMessage *msg); +virtual void FrameResized(float w,float h); +virtual void KeyDown(const char * bytes, int32 n); +virtual void MouseDown(BPoint point); +virtual void MouseMoved(BPoint pt, uint32 code, const BMessage *msg); +virtual void Pulse(); + +/* int32 FocusTab() const; + + virtual void BPTabView::AddTab(BView *target, BTab *tab); + virtual void Draw(BRect updateRect); + virtual void DrawBox(BRect selfTabRect); + virtual BRect DrawTabs(void); + virtual void MakeFocus(bool focused); + virtual BTab * RemoveTab(int32 tab_index); + virtual void Select(int32 tab); + virtual void SetFocusTab(int32 tab, bool focused); + virtual void SetTabHeight(float height); + virtual void SetTabWidth(button_width width); + virtual BTab * TabAt(int32 tab_index); + virtual BRect TabFrame(int32 tab_index); +*/ + +/*----- Private or reserved -----------------------------------------*/ +private: +}; + +BPTabView::BPTabView(TPasObject PasObject,BRect frame, const char *name, + button_width width=B_WIDTH_AS_USUAL, + uint32 resizingMode = B_FOLLOW_ALL, + uint32 flags = B_FULL_UPDATE_ON_RESIZE | + B_WILL_DRAW | B_NAVIGABLE_JUMP | + B_FRAME_EVENTS | B_NAVIGABLE) + :BTabView(frame, name, + width, + resizingMode, + flags), + BPView(PasObject, frame, name, resizingMode, flags), + BPHandler(PasObject, name), + BPasObject(PasObject) +{ +} + + +BPTabView::BPTabView(TPasObject PasObject, BMessage *data) + :BTabView(data), + BPView(PasObject, data), + BPHandler(PasObject, data), + BPasObject(PasObject) +{ +} +/* +void BPTabView::AddTab(BView *target, BTab *tab) +{ + BTabView::AddTab(target,tab); + //TabView_AddTab_hook(GetPasObject(), target, tab); +} + +void BPTabView::Draw(BRect updateRect) +{ + BTabView::Draw(updateRect); + TabView_Draw_hook(GetPasObject(), &updateRect); +} + +void BPTabView::DrawBox(BRect selfTabRect) +{ + BTabView::DrawBox(selfTabRect); + //TabView_DrawBox_hook(GetPasObject(), &selfTabRect); +} + +BRect BPTabView::DrawTabs(void) +{ + BTabView::DrawTabs(); + return TabView_DrawTabs_hook(GetPasObject()); +} + +void BPTabView::MakeFocus(bool focused) +{ + BTabView::MakeFocus(focused); + TabView_MakeFocus_hook(GetPasObject(), focused); +} + +BTab * BPTabView::RemoveTab(int32 tab_index) +{ + TabView_RemoveTab_hook(GetPasObject(), tab_index); + return BTabView::RemoveTab(tab_index); +} + +void BPTabView::Select(int32 tab) +{ + TabView_Select_hook(GetPasObject(), tab); + BTabView::Select(tab); +} + +void BPTabView::SetFocusTab(int32 tab, bool focused) +{ + TabView_SetFocusTab_hook(GetPasObject(), tab, focused); +} + +void BPTabView::SetTabHeight(float height) +{ + TabView_SetTabHeight_hook(GetPasObject(), height); +} + +void BPTabView::SetTabWidth(button_width width) +{ + TabView_SetTabWidth_hook(GetPasObject(), width); +} + +BTab * BPTabView::TabAt(int32 tab_index) +{ + return TabView_TabAt_hook(GetPasObject(), tab_index); +} + +BRect BPTabView::TabFrame(int32 tab_index) +{ + return TabView_TabFrame_hook(GetPasObject(), tab_index); +} +*/ + + + + +void BPTabView::Pulse(void) +{ + Pulse_hookCall(); + + BTabView::Pulse(); +} + + + +void BPTabView::MessageReceived(BMessage *message) +{ +// MessageReceived_hookCall(message); + BTabView::MessageReceived(message); +} + + +void BPTabView::AttachedToWindow(void) +{ + BTabView::AttachedToWindow(); +// AttachedToWindow_hookCall(); +} + + + +void BPTabView::AllAttached(void) +{ + //AllAttached_hookCall(); + BTabView::AllAttached(); +} + +void BPTabView::AllDetached(void) +{ + //AllDetached_hookCall(); + BTabView::AllDetached(); +} + + +void BPTabView::WindowActivated(bool active) +{ + BTabView::WindowActivated(active); +} + +void BPTabView::KeyDown(const char *bytes, int32 numBytes) +{ + BTabView::KeyDown(bytes, numBytes); +} + + +void BPTabView::FrameResized(float width, float height) +{ +// FrameResized_hookCall(width, height); + BTabView::FrameResized(width, height); +} + +void BPTabView::DetachedFromWindow(void) +{ + BTabView::DetachedFromWindow(); +} + + + +void BPTabView::MouseDown(BPoint point) +{ + BTabView::MouseDown(point); +} + +void BPTabView::MouseMoved(BPoint point, uint32 transit, const BMessage *message) +{ + BTabView::MouseMoved(point, transit, message); +} + +void BTabView::MouseUp(BPoint point) +{ + BTabView::MouseUp(point); +} + + + + +#if defined(__cplusplus) +extern "C" { +#endif + + + + +/*********************************************************************** + * Method: BTab::BTab + * Params: BView *contents + * Effects: + ***********************************************************************/ +TCPlusObject BTab_Create(TPasObject PasObject, BView *contents) +{ + return new BPTab(PasObject, contents); +} + + +/*********************************************************************** + * Method: BTab::~BTab + * Params: + * Effects: + ***********************************************************************/ +void BTab_Free(BTab *Tab) +{ + delete Tab; +} + + +/*********************************************************************** + * Method: BTab::BTab + * Params: BMessage *data + * Effects: + ***********************************************************************/ +TCPlusObject BTab_Create_1(TPasObject PasObject, BMessage *data) +{ + return new BPTab(PasObject, data); +} + + +/*********************************************************************** + * Method: BTab::Instantiate + * Params: BMessage *data + * Returns: BArchivable * + * Effects: + ***********************************************************************/ +BArchivable * +BTab_Instantiate(BTab *Tab, BMessage *data) +{ + return Tab->Instantiate(data); +} + + +/*********************************************************************** + * Method: BTab::Archive + * Params: BMessage *data, bool deep + * Returns: status_t + * Effects: + ***********************************************************************/ +status_t +BTab_Archive(BTab *Tab, BMessage *data, bool deep) +{ + return Tab->Archive(data, deep); +} + + +/*********************************************************************** + * Method: BTab::Perform + * Params: uint32 d, void *arg + * Returns: status_t + * Effects: + ***********************************************************************/ +status_t +BTab_Perform(BTab *Tab, uint32 d, void *arg) +{ + return Tab->Perform(d, arg); +} + + +/*********************************************************************** + * Method: BTab::Label + * Params: + * Returns: const char * + * Effects: + ***********************************************************************/ +const char * +BTab_Label(BTab *Tab) +{ + return Tab->Label(); +} + + +/*********************************************************************** + * Method: BTab::SetLabel + * Params: const char *label + * Returns: void + * Effects: + ***********************************************************************/ +void +BTab_SetLabel(BTab *Tab, const char *label) +{ + Tab->SetLabel(label); +} + + +/*********************************************************************** + * Method: BTab::IsSelected + * Params: + * Returns: bool + * Effects: + ***********************************************************************/ +bool +BTab_IsSelected(BTab *Tab) +{ + return Tab->IsSelected(); +} + + +/*********************************************************************** + * Method: BTab::Select + * Params: BView *owner + * Returns: void + * Effects: + ***********************************************************************/ +void +BTab_Select(BTab *Tab, BView *owner) +{ + Tab->Select(owner); +} + + +/*********************************************************************** + * Method: BTab::Deselect + * Params: + * Returns: void + * Effects: + ***********************************************************************/ +void +BTab_Deselect(BTab *Tab) +{ + Tab->Deselect(); +} + + +/*********************************************************************** + * Method: BTab::SetEnabled + * Params: bool on + * Returns: void + * Effects: + ***********************************************************************/ +void +BTab_SetEnabled(BTab *Tab, bool on) +{ + Tab->SetEnabled(on); +} + + +/*********************************************************************** + * Method: BTab::IsEnabled + * Params: + * Returns: bool + * Effects: + ***********************************************************************/ +bool +BTab_IsEnabled(BTab *Tab) +{ + return Tab->IsEnabled(); +} + + +/*********************************************************************** + * Method: BTab::MakeFocus + * Params: bool infocus + * Returns: void + * Effects: + ***********************************************************************/ +void +BTab_MakeFocus(BTab *Tab, bool infocus) +{ + Tab->MakeFocus(infocus); +} + + +/*********************************************************************** + * Method: BTab::IsFocus + * Params: + * Returns: bool + * Effects: + ***********************************************************************/ +bool +BTab_IsFocus(BTab *Tab) +{ + return Tab->IsFocus(); +} + + +/*********************************************************************** + * Method: BTab::SetView + * Params: BView *contents + * Returns: void + * Effects: + ***********************************************************************/ +void +BTab_SetView(BTab *Tab, BView *contents) +{ + Tab->SetView(contents); +} + + +/*********************************************************************** + * Method: BTab::View + * Params: + * Returns: BView * + * Effects: + ***********************************************************************/ +BView * +BTab_View(BTab *Tab) +{ + return Tab->View(); +} + + +/*********************************************************************** + * Method: BTab::DrawFocusMark + * Params: BView *owner, BRect tabFrame + * Returns: void + * Effects: + ***********************************************************************/ +void +BTab_DrawFocusMark(BTab *Tab, BView *owner, BRect tabFrame) +{ + Tab->DrawFocusMark(owner, tabFrame); +} + + +/*********************************************************************** + * Method: BTab::DrawLabel + * Params: BView *owner, BRect tabFrame + * Returns: void + * Effects: + ***********************************************************************/ +void +BTab_DrawLabel(BTab *Tab, BView *owner, BRect tabFrame) +{ + Tab->DrawLabel(owner, tabFrame); +} + + +/*********************************************************************** + * Method: BTab::DrawTab + * Params: BView *owner, BRect tabFrame, tab_position, bool full + * Returns: void + * Effects: + ***********************************************************************/ +void +BTab_DrawTab(BTab *Tab, BView *owner, BRect tabFrame, int tab_position, bool full) +{ + //Tab->DrawTab(owner, tabFrame,tab_position , full); +} + + + +/*********************************************************************** + * Method: BTabView::~BTabView + * Params: + * Effects: + ***********************************************************************/ +void BTabView_Free(BTabView *TabView) +{ + delete TabView; +} + + +/*********************************************************************** + * Method: BTabView::BTabView + * Params: BMessage * + * Effects: + ***********************************************************************/ +TCPlusObject BTabView_Create_1(TPasObject PasObject, BMessage *msg) +{ + return new BPTabView(PasObject, msg); +} + +TCPlusObject BTabView_Create(TPasObject PasObject,BRect frame, const char *name, + button_width width=B_WIDTH_AS_USUAL, + uint32 resizingMode = B_FOLLOW_ALL, + uint32 flags = B_FULL_UPDATE_ON_RESIZE | + B_WILL_DRAW | B_NAVIGABLE_JUMP | + B_FRAME_EVENTS | B_NAVIGABLE) +{ + return new BPTabView( PasObject, frame, name, + width, + resizingMode, + flags ); +} + + + +/*********************************************************************** + * Method: BTabView::Instantiate + * Params: BMessage * + * Returns: BArchivable * + * Effects: + ***********************************************************************/ +BArchivable * +BTabView_Instantiate(BTabView *TabView, BMessage *msg) +{ + return TabView->Instantiate(msg); +} + + +/*********************************************************************** + * Method: BTabView::Archive + * Params: BMessage *, bool deep + * Returns: status_t + * Effects: + ***********************************************************************/ +status_t +BTabView_Archive(BTabView *TabView, BMessage *msg, bool deep) +{ + return TabView->Archive(msg, deep); +} + + +/*********************************************************************** + * Method: BTabView::Perform + * Params: perform_code d, void *arg + * Returns: status_t + * Effects: + ***********************************************************************/ +status_t +BTabView_Perform(BTabView *TabView, perform_code d, void *arg) +{ + return TabView->Perform(d, arg); +} + + +/*********************************************************************** + * Method: BTabView::WindowActivated + * Params: bool state + * Returns: void + * Effects: + ***********************************************************************/ +void +BTabView_WindowActivated(BTabView *TabView, bool state) +{ + TabView->WindowActivated(state); +} + + +/*********************************************************************** + * Method: BTabView::AttachedToWindow + * Params: + * Returns: void + * Effects: + ***********************************************************************/ +void +BTabView_AttachedToWindow(BTabView *TabView) +{ + TabView->AttachedToWindow(); +} + + +/*********************************************************************** + * Method: BTabView::AllAttached + * Params: + * Returns: void + * Effects: + ***********************************************************************/ +void +BTabView_AllAttached(BTabView *TabView) +{ + TabView->AllAttached(); +} + + +/*********************************************************************** + * Method: BTabView::AllDetached + * Params: + * Returns: void + * Effects: + ***********************************************************************/ +void +BTabView_AllDetached(BTabView *TabView) +{ + TabView->AllDetached(); +} + + +/*********************************************************************** + * Method: BTabView::DetachedFromWindow + * Params: + * Returns: void + * Effects: + ***********************************************************************/ +void +BTabView_DetachedFromWindow(BTabView *TabView) +{ + TabView->DetachedFromWindow(); +} + + +/*********************************************************************** + * Method: BTabView::MessageReceived + * Params: BMessage *msg + * Returns: void + * Effects: + ***********************************************************************/ +void +BTabView_MessageReceived(BTabView *TabView, BMessage *msg) +{ + TabView->MessageReceived(msg); +} + + +/*********************************************************************** + * Method: BTabView::FrameMoved + * Params: BPoint new_position + * Returns: void + * Effects: + ***********************************************************************/ +void +BTabView_FrameMoved(BTabView *TabView, BPoint new_position) +{ + TabView->FrameMoved(new_position); +} + + +/*********************************************************************** + * Method: BTabView::FrameResized + * Params: float w, float h + * Returns: void + * Effects: + ***********************************************************************/ +void +BTabView_FrameResized(BTabView *TabView, float w, float h) +{ + TabView->FrameResized(w, h); +} + + +/*********************************************************************** + * Method: BTabView::KeyDown + * Params: const char *bytes, int32 n + * Returns: void + * Effects: + ***********************************************************************/ +void +BTabView_KeyDown(BTabView *TabView, const char *bytes, int32 n) +{ + TabView->KeyDown(bytes, n); +} + + +/*********************************************************************** + * Method: BTabView::MouseDown + * Params: BPoint + * Returns: void + * Effects: + ***********************************************************************/ +void +BTabView_MouseDown(BTabView *TabView, BPoint point) +{ + TabView->MouseDown(point); +} + + +/*********************************************************************** + * Method: BTabView::MouseUp + * Params: BPoint + * Returns: void + * Effects: + ***********************************************************************/ +void +BTabView_MouseUp(BTabView *TabView, BPoint point) +{ + TabView->MouseUp(point); +} + + +/*********************************************************************** + * Method: BTabView::MouseMoved + * Params: BPoint pt, uint32 code, const BMessage *msg + * Returns: void + * Effects: + ***********************************************************************/ +void +BTabView_MouseMoved(BTabView *TabView, BPoint pt, uint32 code, const BMessage *msg) +{ + TabView->MouseMoved(pt, code, msg); +} + + +/*********************************************************************** + * Method: BTabView::Pulse + * Params: + * Returns: void + * Effects: + ***********************************************************************/ +void +BTabView_Pulse(BTabView *TabView) +{ + TabView->Pulse(); +} + + +/*********************************************************************** + * Method: BTabView::Select + * Params: int32 tabIndex + * Returns: void + * Effects: + ***********************************************************************/ +void +BTabView_Select(BTabView *TabView, int32 tabIndex) +{ + TabView->Select(tabIndex); +} + + +/*********************************************************************** + * Method: BTabView::Selection + * Params: + * Returns: int32 + * Effects: + ***********************************************************************/ +int32 +BTabView_Selection_1 +(BTabView *TabView) +{ + return TabView->Selection(); +} + + +/*********************************************************************** + * Method: BTabView::MakeFocus + * Params: bool focusState + * Returns: void + * Effects: + ***********************************************************************/ +void +BTabView_MakeFocus(BTabView *TabView, bool focusState) +{ + TabView->MakeFocus(focusState); +} + + +/*********************************************************************** + * Method: BTabView::SetFocusTab + * Params: int32 tabIndex, bool focusState + * Returns: void + * Effects: + ***********************************************************************/ +void +BTabView_SetFocusTab(BTabView *TabView, int32 tabIndex, bool focusState) +{ + TabView->SetFocusTab(tabIndex, focusState); +} + + +/*********************************************************************** + * Method: BTabView::FocusTab + * Params: + * Returns: int32 + * Effects: + ***********************************************************************/ +int32 +BTabView_FocusTab(BTabView *TabView) +{ + return TabView->FocusTab(); +} + + +/*********************************************************************** + * Method: BTabView::Draw + * Params: BRect + * Returns: void + * Effects: + ***********************************************************************/ +void +BTabView_Draw(BTabView *TabView, BRect point) +{ + TabView->Draw(point); +} + + +/*********************************************************************** + * Method: BTabView::DrawTabs + * Params: + * Returns: BRect + * Effects: + ***********************************************************************/ +BRect +BTabView_DrawTabs_1 +(BTabView *TabView) +{ + return TabView->DrawTabs(); +} + + +/*********************************************************************** + * Method: BTabView::DrawBox + * Params: BRect selectedTabFrame + * Returns: void + * Effects: + ***********************************************************************/ +void +BTabView_DrawBox(BTabView *TabView, BRect selectedTabFrame) +{ + TabView->DrawBox(selectedTabFrame); +} + + +/*********************************************************************** + * Method: BTabView::TabFrame + * Params: int32 tabIndex + * Returns: BRect + * Effects: + ***********************************************************************/ +BRect +BTabView_TabFrame(BTabView *TabView, int32 tabIndex) +{ + return TabView->TabFrame(tabIndex); +} + + +/*********************************************************************** + * Method: BTabView::SetFlags + * Params: uint32 flags + * Returns: void + * Effects: + ***********************************************************************/ +void +BTabView_SetFlags(BTabView *TabView, uint32 flags) +{ + TabView->SetFlags(flags); +} + + +/*********************************************************************** + * Method: BTabView::SetResizingMode + * Params: uint32 mode + * Returns: void + * Effects: + ***********************************************************************/ +void +BTabView_SetResizingMode(BTabView *TabView, uint32 mode) +{ + TabView->SetResizingMode(mode); +} + + +/*********************************************************************** + * Method: BTabView::GetPreferredSize + * Params: float *width, float *height + * Returns: void + * Effects: + ***********************************************************************/ +void +BTabView_GetPreferredSize(BTabView *TabView, float *width, float *height) +{ + TabView->GetPreferredSize(width, height); +} + + +/*********************************************************************** + * Method: BTabView::ResizeToPreferred + * Params: + * Returns: void + * Effects: + ***********************************************************************/ +void +BTabView_ResizeToPreferred(BTabView *TabView) +{ + TabView->ResizeToPreferred(); +} + + +/*********************************************************************** + * Method: BTabView::ResolveSpecifier + * Params: BMessage *msg, int32 index, BMessage *specifier, int32 form, const char *property + * Returns: BHandler * + * Effects: + ***********************************************************************/ +BHandler * +BTabView_ResolveSpecifier(BTabView *TabView, BMessage *msg, int32 index, BMessage *specifier, int32 form, const char *property) +{ + return TabView->ResolveSpecifier(msg, index, specifier, form, property); +} + + +/*********************************************************************** + * Method: BTabView::GetSupportedSuites + * Params: BMessage *data + * Returns: status_t + * Effects: + ***********************************************************************/ +status_t +BTabView_GetSupportedSuites(BTabView *TabView, BMessage *data) +{ + return TabView->GetSupportedSuites(data); +} + + +/*********************************************************************** + * Method: BTabView::AddTab + * Params: BView *tabContents, BTab *tab + * Returns: void + * Effects: + ***********************************************************************/ +void +BTabView_AddTab(BTabView *TabView, BView *tabContents, BTab *tab) +{ + TabView->AddTab(tabContents, tab); +} + + +/*********************************************************************** + * Method: BTabView::RemoveTab + * Params: int32 tabIndex + * Returns: BTab * + * Effects: + ***********************************************************************/ +BTab * +BTabView_RemoveTab(BTabView *TabView, int32 tabIndex) +{ + return TabView->RemoveTab(tabIndex); +} + + +/*********************************************************************** + * Method: BTabView::RemoveTab + * Params: int32 tabIndex + * Returns: BTab * + * Effects: + ***********************************************************************/ +BTab * +BTabView_RemoveTab_1 +(BTabView *TabView, int32 tabIndex) +{ + return TabView->RemoveTab(tabIndex); +} + + +/*********************************************************************** + * Method: BTabView::TabAt + * Params: int32 tabIndex + * Returns: BTab * + * Effects: + ***********************************************************************/ +BTab * +BTabView_TabAt(BTabView *TabView, int32 tabIndex) +{ + return TabView->TabAt(tabIndex); +} + + +/*********************************************************************** + * Method: BTabView::SetTabWidth + * Params: button_width s + * Returns: void + * Effects: + ***********************************************************************/ +void +BTabView_SetTabWidth(BTabView *TabView, button_width s) +{ + TabView->SetTabWidth(s); +} + + +/*********************************************************************** + * Method: BTabView::TabWidth + * Params: + * Returns: button_width + * Effects: + ***********************************************************************/ +button_width +BTabView_TabWidth(BTabView *TabView) +{ + return TabView->TabWidth(); +} + + +/*********************************************************************** + * Method: BTabView::SetTabHeight + * Params: float height + * Returns: void + * Effects: + ***********************************************************************/ +void +BTabView_SetTabHeight(BTabView *TabView, float height) +{ + TabView->SetTabHeight(height); +} + + +/*********************************************************************** + * Method: BTabView::TabHeight + * Params: + * Returns: float + * Effects: + ***********************************************************************/ +float +BTabView_TabHeight(BTabView *TabView) +{ + return TabView->TabHeight(); +} + + +/*********************************************************************** + * Method: BTabView::ContainerView + * Params: + * Returns: BView * + * Effects: + ***********************************************************************/ +BView * +BTabView_ContainerView(BTabView *TabView) +{ + return TabView->ContainerView(); +} + + +/*********************************************************************** + * Method: BTabView::CountTabs + * Params: + * Returns: int32 + * Effects: + ***********************************************************************/ +int32 +BTabView_CountTabs(BTabView *TabView) +{ + return TabView->CountTabs(); +} + + +/*********************************************************************** + * Method: BTabView::ViewForTab + * Params: int32 tabIndex + * Returns: BView * + * Effects: + ***********************************************************************/ +BView * +BTabView_ViewForTab(BTabView *TabView, int32 tabIndex) +{ + return TabView->ViewForTab(tabIndex); +} + + + + +#if defined(__cplusplus) +} +#endif + +#endif /* _TABVIEW_CPP_ */ + diff --git a/bepascal/bepascal/be/interface/tabview.pp b/bepascal/bepascal/be/interface/tabview.pp new file mode 100644 index 0000000..9fc1aed --- /dev/null +++ b/bepascal/bepascal/be/interface/tabview.pp @@ -0,0 +1,603 @@ +{ 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 tabview; + +interface + +uses + beobj, interfacedefs,view,Message, Archivable, SupportDefs, Rect, Handler,font; + +const + B_TAB_FIRST = 999; + B_TAB_FRONT=1; + B_TAB_ANY=2; +type + TTab = class(TBeObject) + private + public + constructor Create(View : TView);virtual; + constructor Create_1(data : TMessage);virtual; + destructor Destroy;override; + function Instantiate(data : TMessage) : TArchivable; + function Archive(data : TMessage; deep : boolean) : TStatus_t; + function Perform(d : Cardinal; arg : Pointer) : TStatus_t; + function GetLabel : PChar; + procedure SetLabel(alabel : PChar); + function IsSelected : boolean; + procedure Select(owner : TView); + procedure Deselect; + procedure SetEnabled(aon : boolean); + function IsEnabled : boolean; + procedure MakeFocus(infocus : boolean); + function IsFocus : boolean; + procedure SetView(contents : TView); + function GetView : TView; + procedure DrawFocusMark(owner : TView; tabFrame : TRect); + procedure DrawLabel(owner : TView; tabFrame : TRect); + procedure DrawTab(owner : TView; tabFrame : TRect; position : byte; full : boolean); + end; + + +type + TTabView = class(TView) + private + public + destructor Destroy;override; + constructor Create(frame : TRect; name : Pchar; width : Tbutton_width; resizingMode : cardinal; flags : cardinal);virtual; + constructor Create(msg : TMessage);virtual; + function Instantiate( msg: TMessage) : TArchivable; + function Archive( msg : TMessage; deep : boolean) : TStatus_t; + function Perform(d : TPerform_code; arg : Pointer) : TStatus_t; + procedure WindowActivated(state : boolean);override; + procedure AttachedToWindow;override; + procedure AllAttached;override; + procedure AllDetached;override; + procedure DetachedFromWindow;override; + procedure MessageReceived(msg : TMessage);override; + procedure FrameMoved(new_position : TPoint);override; + procedure FrameResized(w : double; h : double);override; + procedure KeyDown(bytes : PChar; n : integer);override; + procedure MouseDown( pt: TPoint);override; + procedure MouseUp( pt: TPoint);override; + procedure MouseMoved(pt : TPoint; code : Cardinal; msg : TMessage);override; + procedure Pulse;override; + procedure Select(tabIndex : integer); + function Selection : integer; + procedure MakeFocus(focusState : boolean); + procedure SetFocusTab(tabIndex : integer; focusState : boolean); + function FocusTab : integer; + procedure Draw( rect: TRect);override; + function DrawTabs : TRect; + procedure DrawBox(selectedTabFrame : TRect); + function TabFrame(tabIndex : integer) : TRect; + procedure SetFlags(flags : Cardinal); + procedure SetResizingMode(mode : Cardinal); + procedure GetPreferredSize(width : double; height : double); + procedure ResizeToPreferred;override; + function ResolveSpecifier(msg : TMessage; index : integer; specifier : TMessage; form : integer; properti : PChar) : THandler; + function GetSupportedSuites(data : TMessage) : TStatus_t; + procedure AddTab(tabContents : TView; tab : TTab); + function RemoveTab(tabIndex : integer) : TTab; + function TabAt(tabIndex : integer) : TTab; + procedure SetTabWidth(s : Tbutton_width); + function TabWidth : Tbutton_width; + procedure SetTabHeight(height : double); + function TabHeight : double; + function ContainerView : TView; + function CountTabs : integer; + function ViewForTab(tabIndex : integer) : TView; + end; + +function BTab_Create(AObject : TBeObject;View : TCPlusObject): TCPlusObject; cdecl; external BePascalLibName name 'BTab_Create'; +procedure BTab_Free(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BTab_Free'; +function BTab_Create_1(AObject : TBeObject; data : TCPlusObject): TCPlusObject; cdecl; external BePascalLibName name 'BTab_Create_1'; +function BTab_Instantiate(AObject : TCPlusObject; data : TCPlusObject) : TArchivable; cdecl; external BePascalLibName name 'BTab_Instantiate'; +function BTab_Archive(AObject : TCPlusObject; data : TCPlusObject; deep : boolean) : TStatus_t; cdecl; external BePascalLibName name 'BTab_Archive'; +function BTab_Perform(AObject : TCPlusObject; d : Cardinal; arg : Pointer) : TStatus_t; cdecl; external BePascalLibName name 'BTab_Perform'; +function BTab_Label(AObject : TCPlusObject) : PChar; cdecl; external BePascalLibName name 'BTab_Label'; +procedure BTab_SetLabel(AObject : TCPlusObject; alabel : PChar); cdecl; external BePascalLibName name 'BTab_SetLabel'; +function BTab_IsSelected(AObject : TCPlusObject) : boolean; cdecl; external BePascalLibName name 'BTab_IsSelected'; +procedure BTab_Select(AObject : TCPlusObject; owner : TCPlusObject); cdecl; external BePascalLibName name 'BTab_Select'; +procedure BTab_Deselect(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BTab_Deselect'; +procedure BTab_SetEnabled(AObject : TCPlusObject; aon : boolean); cdecl; external BePascalLibName name 'BTab_SetEnabled'; +function BTab_IsEnabled(AObject : TCPlusObject) : boolean; cdecl; external BePascalLibName name 'BTab_IsEnabled'; +procedure BTab_MakeFocus(AObject : TCPlusObject; infocus : boolean); cdecl; external BePascalLibName name 'BTab_MakeFocus'; +function BTab_IsFocus(AObject : TCPlusObject) : boolean; cdecl; external BePascalLibName name 'BTab_IsFocus'; +procedure BTab_SetView(AObject : TCPlusObject; contents : TCPlusObject); cdecl; external BePascalLibName name 'BTab_SetView'; +function BTab_View(AObject : TCPlusObject) : TView; cdecl; external BePascalLibName name 'BTab_View'; +procedure BTab_DrawFocusMark(AObject : TCPlusObject; owner : TCPlusObject; tabFrame : TCPlusObject); cdecl; external BePascalLibName name 'BTab_DrawFocusMark'; +procedure BTab_DrawLabel(AObject : TCPlusObject; owner : TCPlusObject; tabFrame : TCPlusObject); cdecl; external BePascalLibName name 'BTab_DrawLabel'; +procedure BTab_DrawTab(AObject : TCPlusObject; owner : TCPlusObject; tabFrame : TCPlusObject; position : byte; full : boolean); cdecl; external BePascalLibName name 'BTab_DrawTab'; + +procedure BTabView_Free(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BTabView_Free'; +function BTabView_Create(AObject : TBeObject;frame : TCPlusObject; name : Pchar; width : Integer; resizingMode : cardinal; flags : cardinal): TCPlusObject; cdecl; external BePascalLibName name 'BTabView_Create'; +function BTabView_Create_1(AObject : TBeObject; msg : TCPlusObject): TCPlusObject; cdecl; external BePascalLibName name 'BTabView_Create_1'; +function BTabView_Instantiate(AObject : TCPlusObject; msg : TCPlusObject) : TArchivable; cdecl; external BePascalLibName name 'BTabView_Instantiate'; +function BTabView_Archive(AObject : TCPlusObject; msg : TCPlusObject; deep : boolean) : TStatus_t; cdecl; external BePascalLibName name 'BTabView_Archive'; +function BTabView_Perform(AObject : TCPlusObject; d : TPerform_code; arg : Pointer) : TStatus_t; cdecl; external BePascalLibName name 'BTabView_Perform'; +procedure BTabView_WindowActivated(AObject : TCPlusObject; state : boolean); cdecl; external BePascalLibName name 'BTabView_WindowActivated'; +procedure BTabView_AttachedToWindow(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BTabView_AttachedToWindow'; +procedure BTabView_AllAttached(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BTabView_AllAttached'; +procedure BTabView_AllDetached(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BTabView_AllDetached'; +procedure BTabView_DetachedFromWindow(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BTabView_DetachedFromWindow'; +procedure BTabView_MessageReceived(AObject : TCPlusObject; msg : TCPlusObject); cdecl; external BePascalLibName name 'BTabView_MessageReceived'; +procedure BTabView_FrameMoved(AObject : TCPlusObject; new_position : TCPlusObject); cdecl; external BePascalLibName name 'BTabView_FrameMoved'; +procedure BTabView_FrameResized(AObject : TCPlusObject; w : double; h : double); cdecl; external BePascalLibName name 'BTabView_FrameResized'; +procedure BTabView_KeyDown(AObject : TCPlusObject; bytes : PChar; n : integer); cdecl; external BePascalLibName name 'BTabView_KeyDown'; +procedure BTabView_MouseDown(AObject : TCPlusObject; pt: TCPlusObject); cdecl; external BePascalLibName name 'BTabView_MouseDown'; +procedure BTabView_MouseUp(AObject : TCPlusObject; pt: TCPlusObject); cdecl; external BePascalLibName name 'BTabView_MouseUp'; +procedure BTabView_MouseMoved(AObject : TCPlusObject; pt : TCPlusObject; code : Cardinal; msg : TCPlusObject); cdecl; external BePascalLibName name 'BTabView_MouseMoved'; +procedure BTabView_Pulse(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BTabView_Pulse'; +procedure BTabView_Select(AObject : TCPlusObject; tabIndex : integer); cdecl; external BePascalLibName name 'BTabView_Select'; +//function BTabView_Selection(AObject : TCPlusObject) : integer; cdecl; external BePascalLibName name 'BTabView_Selection'; +procedure BTabView_MakeFocus(AObject : TCPlusObject; focusState : boolean); cdecl; external BePascalLibName name 'BTabView_MakeFocus'; +procedure BTabView_SetFocusTab(AObject : TCPlusObject; tabIndex : integer; focusState : boolean); cdecl; external BePascalLibName name 'BTabView_SetFocusTab'; +function BTabView_FocusTab(AObject : TCPlusObject) : integer; cdecl; external BePascalLibName name 'BTabView_FocusTab'; +procedure BTabView_Draw(AObject : TCPlusObject; rect : TCPlusObject); cdecl; external BePascalLibName name 'BTabView_Draw'; +//function BTabView_DrawTabs(AObject : TCPlusObject) : TRect; cdecl; external BePascalLibName name 'BTabView_DrawTabs'; +procedure BTabView_DrawBox(AObject : TCPlusObject; selectedTabFrame : TCPlusObject); cdecl; external BePascalLibName name 'BTabView_DrawBox'; +function BTabView_TabFrame(AObject : TCPlusObject; tabIndex : integer) : TRect; cdecl; external BePascalLibName name 'BTabView_TabFrame'; +procedure BTabView_SetFlags(AObject : TCPlusObject; flags : Cardinal); cdecl; external BePascalLibName name 'BTabView_SetFlags'; +procedure BTabView_SetResizingMode(AObject : TCPlusObject; mode : Cardinal); cdecl; external BePascalLibName name 'BTabView_SetResizingMode'; +procedure BTabView_GetPreferredSize(AObject : TCPlusObject; width : double; height : double); cdecl; external BePascalLibName name 'BTabView_GetPreferredSize'; +procedure BTabView_ResizeToPreferred(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BTabView_ResizeToPreferred'; +function BTabView_ResolveSpecifier(AObject : TCPlusObject; msg : TCPlusObject; index : integer; specifier : TCPlusObject; form : integer; properto : PChar) : THandler; cdecl; external BePascalLibName name 'BTabView_ResolveSpecifier'; +function BTabView_GetSupportedSuites(AObject : TCPlusObject; data : TCPlusObject) : TStatus_t; cdecl; external BePascalLibName name 'BTabView_GetSupportedSuites'; +procedure BTabView_AddTab(AObject : TCPlusObject; tabContents : TCPlusObject; tab : TCPlusObject); cdecl; external BePascalLibName name 'BTabView_AddTab'; +function BTabView_RemoveTab(AObject : TCPlusObject; tabIndex : integer) : TTab; cdecl; external BePascalLibName name 'BTabView_RemoveTab'; +function BTabView_TabAt(AObject : TCPlusObject; tabIndex : integer) : TTab; cdecl; external BePascalLibName name 'BTabView_TabAt'; +procedure BTabView_SetTabWidth(AObject : TCPlusObject; s : Tbutton_width); cdecl; external BePascalLibName name 'BTabView_SetTabWidth'; +function BTabView_TabWidth(AObject : TCPlusObject) : Tbutton_width; cdecl; external BePascalLibName name 'BTabView_TabWidth'; +procedure BTabView_SetTabHeight(AObject : TCPlusObject; height : double); cdecl; external BePascalLibName name 'BTabView_SetTabHeight'; +function BTabView_TabHeight(AObject : TCPlusObject) : double; cdecl; external BePascalLibName name 'BTabView_TabHeight'; +function BTabView_ContainerView(AObject : TCPlusObject) : TView; cdecl; external BePascalLibName name 'BTabView_ContainerView'; +function BTabView_CountTabs(AObject : TCPlusObject) : integer; cdecl; external BePascalLibName name 'BTabView_CountTabs'; +function BTabView_ViewForTab(AObject : TCPlusObject; tabIndex : integer) : TView; cdecl; external BePascalLibName name 'BTabView_ViewForTab'; + +implementation + +var + TabView_AddTab_hook : Pointer; cvar; external; + TabView_Draw_hook : Pointer; cvar; external; + TabView_DrawBox_hook : Pointer; cvar; external; + TabView_DrawTabs_hook : Pointer; cvar; external; + TabView_MakeFocus_hook : Pointer; cvar; external; + TabView_RemoveTab_hook : Pointer; cvar; external; + TabView_Select_hook: Pointer; cvar; external; + TabView_SetFocusTab_hook : Pointer; cvar; external; + TabView_SetTabHeight_hook : Pointer; cvar; external; + TabView_SetTabWidth_hook : Pointer; cvar; external; + TabView_TabAt_hook : Pointer; cvar; external; + TabView_TabFrame_hook : Pointer; cvar; external; + + +constructor TTab.Create(View : TView); +begin + CreatePas; + CPlusObject := BTab_Create(Self,View.CPlusObject); +end; + +destructor TTab.Destroy; +begin + BTab_Free(CPlusObject); + inherited; +end; + +constructor TTab.Create_1(data : TMessage); +begin + CreatePas; + CPlusObject := BTab_Create_1(Self, data.CPlusObject); +end; + +function TTab.Instantiate(data : TMessage) : TArchivable; +begin + Result := BTab_Instantiate(CPlusObject, data.CPlusObject); +end; + +function TTab.Archive(data : TMessage; deep : boolean) : TStatus_t; +begin + Result := BTab_Archive(CPlusObject, data.CPlusObject, deep); +end; + +function TTab.Perform(d : Cardinal; arg : Pointer) : TStatus_t; +begin + Result := BTab_Perform(CPlusObject, d, arg); +end; + +function TTab.GetLabel : PChar; +begin + Result := BTab_Label(CPlusObject); +end; + +procedure TTab.SetLabel(alabel : PChar); +begin + BTab_SetLabel(CPlusObject, alabel); +end; + +function TTab.IsSelected : boolean; +begin + Result := BTab_IsSelected(CPlusObject); +end; + +procedure TTab.Select(owner : TView); +begin + BTab_Select(CPlusObject, owner.CPlusObject); +end; + +procedure TTab.Deselect; +begin + BTab_Deselect(CPlusObject); +end; + +procedure TTab.SetEnabled(aon : boolean); +begin + BTab_SetEnabled(CPlusObject, aon); +end; + +function TTab.IsEnabled : boolean; +begin + Result := BTab_IsEnabled(CPlusObject); +end; + +procedure TTab.MakeFocus(infocus : boolean); +begin + BTab_MakeFocus(CPlusObject, infocus); +end; + +function TTab.IsFocus : boolean; +begin + Result := BTab_IsFocus(CPlusObject); +end; + +procedure TTab.SetView(contents : TView); +begin + BTab_SetView(CPlusObject, contents.CPlusObject); +end; + +function TTab.GetView : TView; +begin + Result := BTab_View(CPlusObject); +end; + +procedure TTab.DrawFocusMark(owner : TView; tabFrame : TRect); +begin + BTab_DrawFocusMark(CPlusObject, owner.CPlusObject, tabFrame.CPlusObject); +end; + +procedure TTab.DrawLabel(owner : TView; tabFrame : TRect); +begin + BTab_DrawLabel(CPlusObject, owner.CPlusObject, tabFrame.CPlusObject); +end; + +procedure TTab.DrawTab(owner : TView; tabFrame : TRect; position: byte; full : boolean); +begin + BTab_DrawTab(CPlusObject, owner.CPlusObject, tabFrame.CPlusObject, position, full); +end; + + +//--------------------TTabView + +destructor TTabView.Destroy; +begin + BTabView_Free(CPlusObject); + inherited; +end; + +constructor TTabView.Create( frame : TRect; name : Pchar; width : Tbutton_width; resizingMode : cardinal; flags : cardinal); +begin + createPas; + CPlusObject := BTabView_Create(Self, frame.CPlusObject, name, Integer(width),resizingMode,flags); +end; + + +constructor TTabView.Create( msg: TMessage); +begin + createPas; + CPlusObject := BTabView_Create_1(Self, msg.CPlusObject); +end; + +function TTabView.Instantiate( msg : TMessage) : TArchivable; +begin + Result := BTabView_Instantiate(CPlusObject, msg.CPlusObject); +end; + +function TTabView.Archive( msg : TMessage; deep : boolean) : TStatus_t; +begin + Result := BTabView_Archive(CPlusObject, msg.CPlusObject, deep); +end; + +function TTabView.Perform(d : TPerform_code; arg : Pointer) : TStatus_t; +begin + // Result := BTabView_Perform(CPlusObject, d, arg); +end; + +procedure TTabView.WindowActivated(state : boolean); +begin + //BTabView_WindowActivated(CPlusObject, state); +end; + +procedure TTabView.AttachedToWindow; +begin + //BTabView_AttachedToWindow(CPlusObject); +end; + +procedure TTabView.AllAttached; +begin + //BTabView_AllAttached(CPlusObject); +end; + +procedure TTabView.AllDetached; +begin + //BTabView_AllDetached(CPlusObject); +end; + +procedure TTabView.DetachedFromWindow; +begin +// BTabView_DetachedFromWindow(CPlusObject); +end; + +procedure TTabView.MessageReceived(msg : TMessage); +begin + // BTabView_MessageReceived(CPlusObject, msg.CPlusObject); +end; + +procedure TTabView.FrameMoved(new_position : TPoint); +begin + //BTabView_FrameMoved(CPlusObject, new_position.CPlusObject); +end; + +procedure TTabView.FrameResized(w : double; h : double); +begin +// BTabView_FrameResized(CPlusObject, w, h); +end; + +procedure TTabView.KeyDown(bytes : PChar; n : integer); +begin + // BTabView_KeyDown(CPlusObject, bytes, n); +end; + +procedure TTabView.MouseDown( pt: TPoint); +begin + //BTabView_MouseDown(CPlusObject, pt.CPlusObject); +end; + +procedure TTabView.MouseUp( pt: TPoint); +begin + //BTabView_MouseUp(CPlusObject, pt.CPlusObject); +end; + +procedure TTabView.MouseMoved(pt : TPoint; code : Cardinal; msg : TMessage); +begin + //BTabView_MouseMoved(CPlusObject, pt.CPlusObject, code, msg); +end; + +procedure TTabView.Pulse; +begin + // BTabView_Pulse(CPlusObject); +end; + +procedure TTabView.Select(tabIndex : integer); +begin + BTabView_Select(CPlusObject, tabIndex); +end; + +function TTabView.Selection : integer; +begin +// Result := BTabView_Selection(CPlusObject); +end; + +procedure TTabView.MakeFocus(focusState : boolean); +begin + BTabView_MakeFocus(CPlusObject, focusState); +end; + +procedure TTabView.SetFocusTab(tabIndex : integer; focusState : boolean); +begin + BTabView_SetFocusTab(CPlusObject, tabIndex, focusState); +end; + +function TTabView.FocusTab : integer; +begin + Result := BTabView_FocusTab(CPlusObject); +end; + +procedure TTabView.Draw( rect: TRect); +begin + // BTabView_Draw(CPlusObject, rect.CPlusObject); +end; + +function TTabView.DrawTabs : TRect; +begin +// Result := BTabView_DrawTabs(CPlusObject); +end; + +procedure TTabView.DrawBox(selectedTabFrame : TRect); +begin + //BTabView_DrawBox(CPlusObject, selectedTabFrame.CPlusObject); +end; + +function TTabView.TabFrame(tabIndex : integer) : TRect; +begin + Result := BTabView_TabFrame(CPlusObject, tabIndex); +end; + +procedure TTabView.SetFlags(flags : Cardinal); +begin + BTabView_SetFlags(CPlusObject, flags); +end; + +procedure TTabView.SetResizingMode(mode : Cardinal); +begin + BTabView_SetResizingMode(CPlusObject, mode); +end; + +procedure TTabView.GetPreferredSize(width : double; height : double); +begin +// BTabView_GetPreferredSize(CPlusObject, width, height); +end; + +procedure TTabView.ResizeToPreferred; +begin + // BTabView_ResizeToPreferred(CPlusObject); +end; + +function TTabView.ResolveSpecifier(msg : TMessage; index : integer; specifier : TMessage; form : integer; properti : PChar) : THandler; +begin + //Result := BTabView_ResolveSpecifier(CPlusObject, msg.CPlusObject, index, specifier.CPlusObject, form, properti); +end; + +function TTabView.GetSupportedSuites(data : TMessage) : TStatus_t; +begin + //Result := BTabView_GetSupportedSuites(CPlusObject, data.CPlusObject); +end; + +procedure TTabView.AddTab(tabContents : TView; tab : TTab); +begin + BTabView_AddTab(CPlusObject, tabContents.CPlusObject, tab.CPlusObject); +end; + +function TTabView.RemoveTab(tabIndex : integer) : TTab; +begin + Result := BTabView_RemoveTab(CPlusObject, tabIndex); +end; + + +function TTabView.TabAt(tabIndex : integer) : TTab; +begin + Result := BTabView_TabAt(CPlusObject, tabIndex); +end; + +procedure TTabView.SetTabWidth(s : Tbutton_width); +begin + BTabView_SetTabWidth(CPlusObject, s); +end; + +function TTabView.TabWidth : Tbutton_width; +begin + Result := BTabView_TabWidth(CPlusObject); +end; + +procedure TTabView.SetTabHeight(height : double); +begin + BTabView_SetTabHeight(CPlusObject, height); +end; + +function TTabView.TabHeight : double; +begin + Result := BTabView_TabHeight(CPlusObject); +end; + +function TTabView.ContainerView : TView; +begin + Result := BTabView_ContainerView(CPlusObject); +end; + +function TTabView.CountTabs : integer; +begin + Result := BTabView_CountTabs(CPlusObject); +end; + +function TTabView.ViewForTab(tabIndex : integer) : TView; +begin + Result := BTabView_ViewForTab(CPlusObject, tabIndex); +end; + +// Hook + +procedure BTabView_AddTab_hook_func(tabw : TTabView; target : TCPlusObject; tab : TCPlusObject); cdecl; +Var targetv : TView; + tabtab : TTab; +begin + targetv:=TView.Wrap(target); + tabtab:=TTab.Wrap(tab); + if Tabw <> nil Then Tabw.AddTab(targetv,tabtab); + targetv.UnWrap; + tabtab.UNWrap; +end; + +procedure BTabView_Draw_hook_func(tabw : TTabView; updaterect : TCPlusObject);cdecl; +var rect : TRect; +begin + rect:=TRect.Wrap(updaterect); + if tabw <> nil then tabw.draw(rect); + rect.UnWrap; +end; + +procedure BTabView_DrawBox_hook_func(tabw : TTabView; updaterect : TCPlusObject);cdecl; +var rect : TRect; +begin + rect:=TRect.Wrap(updaterect); + if tabw <> nil then tabw.drawBox(rect); + rect.UnWrap; +end; + +procedure BTabView_DrawTabs_hook_func(tabw : TTabView);cdecl; +begin + if tabw <> nil then tabw.drawTabs; +end; + +procedure BTabView_MakeFocus_hook_func;cdecl; +begin +end; + +procedure BTabView_RemoveTab_hook_func;cdecl; +begin +end; + +procedure BTabView_Select_hook_func;cdecl; +begin +end; + +procedure BTabView_SetFocusTab_hook_func;cdecl; +begin +end; + +procedure BTabView_SetTabHeight_hook_func;cdecl; +begin +end; + +procedure BTabView_SetTabWidth_hook_func;cdecl; +begin +end; + +procedure BTabView_TabAt_hook_func;cdecl; +begin +end; + +procedure BTabView_TabFrame_hook_func;cdecl; +begin +end; + + +initialization + + TabView_AddTab_hook := @BTabView_AddTab_hook_func; + TabView_Draw_hook :=@BTabView_Draw_hook_func; + TabView_DrawBox_hook :=@BTabView_DrawBox_hook_func; + TabView_DrawTabs_hook :=@BTabView_DrawTabs_hook_func; + TabView_MakeFocus_hook :=@BTabView_MakeFocus_hook_func; + TabView_RemoveTab_hook :=@BTabView_RemoveTab_hook_func; + TabView_Select_hook:=@BTabView_Select_hook_func; + TabView_SetFocusTab_hook :=@BTabView_SetFocusTab_hook_func; + TabView_SetTabHeight_hook :=@BTabView_SetTabHeight_hook_func; + TabView_SetTabWidth_hook :=@BTabView_SetTabWidth_hook_func; + TabView_TabAt_hook :=@BTabView_TabAt_hook_func; + TabView_TabFrame_hook :=@BTabView_TabFrame_hook_func; + +end.