From a826637324d28f86a01d3e2fc4750b1770fcad74 Mon Sep 17 00:00:00 2001 From: ocoursiere Date: Sun, 30 Mar 2003 14:56:37 +0000 Subject: [PATCH] after 2 months : menu support works + fixes --- bepascal/bepascal/be/app/messenger.pp | 6 +- bepascal/bepascal/be/interface/MenuBar.cpp | 19 +- bepascal/bepascal/be/interface/MenuItem.cpp | 39 +- bepascal/bepascal/be/interface/menu.pp | 428 +++++++++++--------- bepascal/bepascal/be/interface/menubar.pp | 8 +- bepascal/bepascal/be/interface/menuitem.h | 7 + 6 files changed, 314 insertions(+), 193 deletions(-) diff --git a/bepascal/bepascal/be/app/messenger.pp b/bepascal/bepascal/be/app/messenger.pp index 67708b8..58d3d30 100644 --- a/bepascal/bepascal/be/app/messenger.pp +++ b/bepascal/bepascal/be/app/messenger.pp @@ -59,9 +59,9 @@ type 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'; +function BMessenger_Create(AObject : TBeObject; mime_sig : PChar; team : TTeam_id; perr : PStatus_t) : TCplusObject; cdecl; external BePascalLibName name 'BMessenger_Create_1'; +function BMessenger_Create(AObject : TBeObject; handler : THandler; looper : TLooper; perr : PStatus_t) : TCplusObject; cdecl; external BePascalLibName name 'BMessenger_Create_2'; +function BMessenger_Create(AObject : TBeObject; from : TMessenger) : TCplusObject; cdecl; external BePascalLibName name 'BMessenger_Create_3'; 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'; diff --git a/bepascal/bepascal/be/interface/MenuBar.cpp b/bepascal/bepascal/be/interface/MenuBar.cpp index 07a7841..de1f41f 100644 --- a/bepascal/bepascal/be/interface/MenuBar.cpp +++ b/bepascal/bepascal/be/interface/MenuBar.cpp @@ -33,22 +33,25 @@ void BPMenuBar::MessageReceived(BMessage *message) void BPMenuBar::AllAttached(void) { + BMenuBar::AllAttached(); // AllAttached_hookCall(message); } void BPMenuBar::AttachedToWindow(void) { BMenuBar::AttachedToWindow(); -// AttachedToWindow_hookCall(); + AttachedToWindow_hookCall(); } void BPMenuBar::AllDetached(void) { + BMenuBar::AllDetached(); // View_AllDetached_hook(GetPasObject()); } void BPMenuBar::DetachedFromWindow(void) { + BMenuBar::DetachedFromWindow(); // View_DetachedFromWindow_hook(GetPasObject()); } @@ -60,56 +63,67 @@ void BPMenuBar::Draw(BRect updateRect) void BPMenuBar::DrawAfterChildren(BRect updateRect) { + BMenuBar::DrawAfterChildren(updateRect); // View_DrawAfterChildren_hook(GetPasObject(), &updateRect); } void BPMenuBar::FrameMoved(BPoint parentPoint) { + BMenuBar::FrameMoved(parentPoint); // View_FrameMoved_hook(GetPasObject(), &parentPoint); } void BPMenuBar::FrameResized(float width, float height) { + BMenuBar::FrameResized(width, height); // View_FrameResized_hook(GetPasObject(), width, height); } void BPMenuBar::GetPreferredSize(float *width, float *height) { + BMenuBar::GetPreferredSize(width, height); // View_GetPreferredSize_hook(GetPasObject(), width, height); } void BPMenuBar::ResizeToPreferred(void) { + BMenuBar::ResizeToPreferred(); // View_ResizeToPreferred_hook(GetPasObject()); } void BPMenuBar::KeyDown(const char *bytes, int32 numBytes) { + BMenuBar::KeyDown(bytes, numBytes); // View_KeyDown_hook(GetPasObject(), bytes, numBytes); } void BPMenuBar::KeyUp(const char *bytes, int32 numBytes) { + BMenuBar::KeyUp(bytes, numBytes); // View_KeyUp_hook(GetPasObject(), bytes, numBytes); } void BPMenuBar::MouseDown(BPoint point) { + BMenuBar::MouseDown(point); // View_MouseDown_hook(GetPasObject(), &point); } void BPMenuBar::MouseMoved(BPoint point, uint32 transit, const BMessage *message) { + BMenuBar::MouseMoved(point, transit, message); // View_MouseMoved_hook(GetPasObject(), &point, transit, &message); } void BPMenuBar::MouseUp(BPoint point) { + BMenuBar::MouseUp(point); // View_MouseUp_hook(GetPasObject(), &point); } void BPMenuBar::Pulse(void) { + BMenuBar::Pulse(); // View_Pulse_hook(GetPasObject()); } @@ -120,15 +134,18 @@ void BPMenuBar::Pulse(void) void BPMenuBar::WindowActivated(bool active) { + BMenuBar::WindowActivated(active); // View_WindowActivated_hook(GetPasObject(), active); } void BPMenuBar::SetEnabled(bool enabled) { + BMenuBar::SetEnabled(enabled); } void BPMenuBar::SetValue(int32 value) { + } void BPMenuBar::MakeDefault(bool flag) diff --git a/bepascal/bepascal/be/interface/MenuItem.cpp b/bepascal/bepascal/be/interface/MenuItem.cpp index 1afb6ac..351007f 100644 --- a/bepascal/bepascal/be/interface/MenuItem.cpp +++ b/bepascal/bepascal/be/interface/MenuItem.cpp @@ -52,6 +52,36 @@ void BPMenuItem::Draw(void) BMenuItem::Draw(); } +void BPMenuItem::DrawContent(void) +{ + BMenuItem::DrawContent(); +} + +void BPMenuItem::GetContentSize(float *width, float *height) +{ + BMenuItem::GetContentSize(width, height); +} + +void BPMenuItem::TruncateLabel(float max, char *new_label) +{ + BMenuItem::TruncateLabel(max, new_label); +} + +void BPMenuItem::Highlight(bool on) +{ + BMenuItem::Highlight(on); +} + +bool BPMenuItem::IsSelected() const +{ + return BMenuItem::IsSelected(); +} + +BPoint BPMenuItem::ContentLocation() const +{ + return BMenuItem::ContentLocation(); +} + BPSeparatorItem::BPSeparatorItem(TPasObject PasObject) :BSeparatorItem(), BPMenuItem(PasObject, "", NULL), @@ -71,6 +101,11 @@ void BPSeparatorItem::Draw(void) BSeparatorItem::Draw(); } +void BPSeparatorItem::DrawContent(void) +{ + BSeparatorItem::DrawContent(); +} + #if defined(__cplusplus) extern "C" { @@ -118,7 +153,7 @@ TCPlusObject BMenuItem_Create_2 ***********************************************************************/ void BMenuItem_Free(BMenuItem *MenuItem) { - return MenuItem->~BMenuItem(); + delete MenuItem; } @@ -347,7 +382,7 @@ TCPlusObject BSeparatorItem_Create_1 ***********************************************************************/ void BSeparatorItem_Free(BSeparatorItem *SeparatorItem) { - return SeparatorItem->~BSeparatorItem(); + delete SeparatorItem; } diff --git a/bepascal/bepascal/be/interface/menu.pp b/bepascal/bepascal/be/interface/menu.pp index 1ed28b3..a36598e 100644 --- a/bepascal/bepascal/be/interface/menu.pp +++ b/bepascal/bepascal/be/interface/menu.pp @@ -43,24 +43,26 @@ type TMenu_Tracking_Hook = function() : TStatus_t; cdecl; type TMenuItem = class; -type TMenu = class(TView) private public - constructor Create; override; +// constructor Create; override; constructor Create(title : PChar; width : double; height : double); + constructor Create(title : PChar; layout : TMenu_Layout); destructor Destroy; override; - constructor Create(data : TMessage); +// constructor Create(data : TMessage); function Instantiate(data : TMessage) : TArchivable; function Archive(data : TMessage; deep : boolean) : TStatus_t; procedure AttachedToWindow; override; procedure DetachedFromWindow; override; + + function AddItem(item : TMenuItem) : boolean; virtual; function AddItem(item : TMenuItem; index : integer) : boolean; virtual; function AddItem(item : TMenuItem; frame : TRect) : boolean; virtual; - function AddItem(menu : TMenu) : boolean; virtual; - function AddItem(menu : TMenu; index : integer) : boolean; virtual; + function AddItem(menu : TMenu; index : integer) : boolean; virtual; function AddItem(menu : TMenu; frame : TRect) : boolean; virtual; - function AddItem(item : TMenuItem) : boolean; virtual; + function AddItem(menu : TMenu) : boolean; virtual; + function AddList(list : TList; index : integer) : boolean; function AddSeparatorItem : boolean; function RemoveItem(item : TMenuItem) : boolean; @@ -206,6 +208,163 @@ type procedure bool fAttachAborted;} end; + TMenuItem = class(TBeObject) + private + public + constructor Create; override; + constructor Create(aMenu : TMenu; message : TMessage); virtual; + constructor Create(data : TMessage); virtual; + constructor Create(aLabel : PChar; message : TMessage; aShortcut : Char; modifiers : Cardinal); virtual; + destructor Destroy; override; + function Instantiate(data : TMessage) : TArchivable; + function Archive(data : TMessage; deep : boolean) : TStatus_t; + procedure SetLabel(name : PChar); + procedure SetEnabled(state : boolean); + procedure SetMarked(state : boolean); + procedure SetTrigger(ch : Char); + procedure SetShortcut(ch : Char; modifiers : Cardinal); +// function aLabel : PChar; + function IsEnabled : boolean; + function IsMarked : boolean; + function Trigger : Char; +// function Shortcut(modifiers : Cardinal) : Char; + function Submenu : TMenu; + function Menu : TMenu; + function Frame : TRect; +{ procedure GetContentSize(width : double; height : double); + procedure TruncateLabel(max : double; new_label : PChar); + procedure DrawContent; + procedure Draw; + procedure Highlight(aOn : boolean); + function IsSelected : boolean; + function ContentLocation : TPoint; + procedure _ReservedMenuItem2; + procedure _ReservedMenuItem3; + procedure _ReservedMenuItem4; + constructor Create(MenuItem : TMenuItem); + function operator=(MenuItem : TMenuItem) : TMenuItem; + procedure InitData; + procedure InitMenuData(menu : TMenu); + procedure Install(window : TWindow); + function Invoke(msg : TMessage) : TStatus_t; + procedure Uninstall; + procedure SetSuper(super : TMenu); + procedure Select(on : boolean); + procedure DrawMarkSymbol; + procedure DrawShortcutSymbol; + procedure DrawSubmenuSymbol; + procedure DrawControlChar(control : PChar); + procedure SetSysTrigger(ch : Char); + procedure char *fLabel; + procedure BMenu *fSubmenu; + procedure BWindow *fWindow; + procedure BMenu *fSuper; + procedure BRect fBounds; + procedure uint32 fModifiers; + procedure float fCachedWidth; + procedure int16 fTriggerIndex; + procedure char fUserTrigger; + procedure char fSysTrigger; + procedure char fShortcutChar; + procedure bool fMark; + procedure bool fEnabled; + procedure bool fSelected; + procedure uint32 _reserved[4]; +} + end; +type + TSeparatorItem = class(TMenuItem) + private + public + constructor Create; override; + constructor Create(data : TMessage); override; + destructor Destroy; override; + function Archive(data : TMessage; deep : boolean) : TStatus_t; + function Instantiate(data : TMessage) : TArchivable; + procedure SetEnabled(state : boolean); +{ procedure GetContentSize(width : double; height : double); + procedure Draw; + procedure _ReservedSeparatorItem1; + procedure _ReservedSeparatorItem2; + function operator=( : TSeparatorItem) : TSeparatorItem; + procedure uint32 _reserved[1]; +} + end; + +//function BMenuItem_Create(AObject : TBeObject) : TCPlusObject; cdecl; external BePascalLibName name 'BMenuItem_Create'; +function BMenuItem_Create(AObject : TBeObject; aLabel : PChar; message : TCPlusObject; shortcut : Char; modifiers : Cardinal) : TCPlusObject; cdecl; external BePascalLibName name 'BMenuItem_Create'; +function BMenuItem_Create(AObject : TBeObject; menu : TCPlusObject; message : TCPlusObject) : TCPlusObject; cdecl; external BePascalLibName name 'BMenuItem_Create_1'; +function BMenuItem_Create(AObject : TBeObject; data : TCPlusObject) : TCPlusObject; cdecl; external BePascalLibName name 'BMenuItem_Create_2'; +procedure BMenuItem_Free(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BMenuItem_Free'; +function BMenuItem_Instantiate(AObject : TCPlusObject; data : TCPlusObject) : TArchivable; cdecl; external BePascalLibName name 'BMenuItem_Instantiate'; +function BMenuItem_Archive(AObject : TCPlusObject; data : TCPlusObject; deep : boolean) : TStatus_t; cdecl; external BePascalLibName name 'BMenuItem_Archive'; +procedure BMenuItem_SetLabel(AObject : TCPlusObject; name : PChar); cdecl; external BePascalLibName name 'BMenuItem_SetLabel'; +procedure BMenuItem_SetEnabled(AObject : TCPlusObject; state : boolean); cdecl; external BePascalLibName name 'BMenuItem_SetEnabled'; +procedure BMenuItem_SetMarked(AObject : TCPlusObject; state : boolean); cdecl; external BePascalLibName name 'BMenuItem_SetMarked'; +procedure BMenuItem_SetTrigger(AObject : TCPlusObject; ch : Char); cdecl; external BePascalLibName name 'BMenuItem_SetTrigger'; +procedure BMenuItem_SetShortcut(AObject : TCPlusObject; ch : Char; modifiers : Cardinal); cdecl; external BePascalLibName name 'BMenuItem_SetShortcut'; +function BMenuItem_Label(AObject : TCPlusObject) : PChar; cdecl; external BePascalLibName name 'BMenuItem_Label'; +function BMenuItem_IsEnabled(AObject : TCPlusObject) : boolean; cdecl; external BePascalLibName name 'BMenuItem_IsEnabled'; +function BMenuItem_IsMarked(AObject : TCPlusObject) : boolean; cdecl; external BePascalLibName name 'BMenuItem_IsMarked'; +function BMenuItem_Trigger(AObject : TCPlusObject) : Char; cdecl; external BePascalLibName name 'BMenuItem_Trigger'; +function BMenuItem_Shortcut(AObject : TCPlusObject; modifiers : Cardinal) : Char; cdecl; external BePascalLibName name 'BMenuItem_Shortcut'; +function BMenuItem_Submenu(AObject : TCPlusObject) : TMenu; cdecl; external BePascalLibName name 'BMenuItem_Submenu'; +function BMenuItem_Menu(AObject : TCPlusObject) : TMenu; cdecl; external BePascalLibName name 'BMenuItem_Menu'; +function BMenuItem_Frame(AObject : TCPlusObject) : TRect; cdecl; external BePascalLibName name 'BMenuItem_Frame'; +{procedure BMenuItem_GetContentSize(AObject : TCPlusObject; width : double; height : double); cdecl; external BePascalLibName name 'BMenuItem_GetContentSize'; +procedure BMenuItem_TruncateLabel(AObject : TCPlusObject; max : double; new_label : PChar); cdecl; external BePascalLibName name 'BMenuItem_TruncateLabel'; +procedure BMenuItem_DrawContent(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BMenuItem_DrawContent'; +procedure BMenuItem_Draw(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BMenuItem_Draw'; +procedure BMenuItem_Highlight(AObject : TCPlusObject; aOn : boolean); cdecl; external BePascalLibName name 'BMenuItem_Highlight'; +function BMenuItem_IsSelected(AObject : TCPlusObject) : boolean; cdecl; external BePascalLibName name 'BMenuItem_IsSelected'; +function BMenuItem_ContentLocation(AObject : TCPlusObject) : TPoint; cdecl; external BePascalLibName name 'BMenuItem_ContentLocation'; +procedure BMenuItem__ReservedMenuItem2(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BMenuItem__ReservedMenuItem2'; +procedure BMenuItem__ReservedMenuItem3(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BMenuItem__ReservedMenuItem3'; +procedure BMenuItem__ReservedMenuItem4(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BMenuItem__ReservedMenuItem4'; +function BMenuItem_Create(AObject : TBeObject; : TMenuItem) : TCPlusObject; cdecl; external BePascalLibName name 'BMenuItem_Create'; +function BMenuItem_operator=(AObject : TCPlusObject; : TMenuItem) : TMenuItem; cdecl; external BePascalLibName name 'BMenuItem_operator='; +procedure BMenuItem_InitData(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BMenuItem_InitData'; +procedure BMenuItem_InitMenuData(AObject : TCPlusObject; menu : TCPlusObject); cdecl; external BePascalLibName name 'BMenuItem_InitMenuData'; +procedure BMenuItem_Install(AObject : TCPlusObject; window : TCPlusObject); cdecl; external BePascalLibName name 'BMenuItem_Install'; +function BMenuItem_Invoke(AObject : TCPlusObject; msg : TCPlusObject) : TStatus_t; cdecl; external BePascalLibName name 'BMenuItem_Invoke'; +procedure BMenuItem_Uninstall(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BMenuItem_Uninstall'; +procedure BMenuItem_SetSuper(AObject : TCPlusObject; super : TCPlusObject); cdecl; external BePascalLibName name 'BMenuItem_SetSuper'; +procedure BMenuItem_Select(AObject : TCPlusObject; on : boolean); cdecl; external BePascalLibName name 'BMenuItem_Select'; +procedure BMenuItem_DrawMarkSymbol(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BMenuItem_DrawMarkSymbol'; +procedure BMenuItem_DrawShortcutSymbol(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BMenuItem_DrawShortcutSymbol'; +procedure BMenuItem_DrawSubmenuSymbol(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BMenuItem_DrawSubmenuSymbol'; +procedure BMenuItem_DrawControlChar(AObject : TCPlusObject; control : PChar); cdecl; external BePascalLibName name 'BMenuItem_DrawControlChar'; +procedure BMenuItem_SetSysTrigger(AObject : TCPlusObject; ch : Char); cdecl; external BePascalLibName name 'BMenuItem_SetSysTrigger'; +procedure BMenuItem_char *fLabel(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BMenuItem_char *fLabel'; +procedure BMenuItem_BMenu *fSubmenu(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BMenuItem_BMenu *fSubmenu'; +procedure BMenuItem_BWindow *fWindow(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BMenuItem_BWindow *fWindow'; +procedure BMenuItem_BMenu *fSuper(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BMenuItem_BMenu *fSuper'; +procedure BMenuItem_BRect fBounds(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BMenuItem_BRect fBounds'; +procedure BMenuItem_uint32 fModifiers(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BMenuItem_uint32 fModifiers'; +procedure BMenuItem_float fCachedWidth(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BMenuItem_float fCachedWidth'; +procedure BMenuItem_int16 fTriggerIndex(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BMenuItem_int16 fTriggerIndex'; +procedure BMenuItem_char fUserTrigger(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BMenuItem_char fUserTrigger'; +procedure BMenuItem_char fSysTrigger(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BMenuItem_char fSysTrigger'; +procedure BMenuItem_char fShortcutChar(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BMenuItem_char fShortcutChar'; +procedure BMenuItem_bool fMark(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BMenuItem_bool fMark'; +procedure BMenuItem_bool fEnabled(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BMenuItem_bool fEnabled'; +procedure BMenuItem_bool fSelected(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BMenuItem_bool fSelected'; +procedure BMenuItem_uint32 _reserved[4](AObject : TCPlusObject); cdecl; external BePascalLibName name 'BMenuItem_uint32 _reserved[4]'; +} +function BSeparatorItem_Create(AObject : TBeObject) : TCPlusObject; cdecl; external BePascalLibName name 'BSeparatorItem_Create'; +function BSeparatorItem_Create(AObject : TBeObject; data : TCPlusObject) : TCPlusObject; cdecl; external BePascalLibName name 'BSeparatorItem_Create_1'; +procedure BSeparatorItem_Free(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BSeparatorItem_Free'; +function BSeparatorItem_Archive(AObject : TCPlusObject; data : TCPlusObject; deep : boolean) : TStatus_t; cdecl; external BePascalLibName name 'BSeparatorItem_Archive'; +function BSeparatorItem_Instantiate(AObject : TCPlusObject; data : TCPlusObject) : TArchivable; cdecl; external BePascalLibName name 'BSeparatorItem_Instantiate'; +procedure BSeparatorItem_SetEnabled(AObject : TCPlusObject; state : boolean); cdecl; external BePascalLibName name 'BSeparatorItem_SetEnabled'; +procedure BSeparatorItem_GetContentSize(AObject : TCPlusObject; width : double; height : double); cdecl; external BePascalLibName name 'BSeparatorItem_GetContentSize'; +//procedure BSeparatorItem_Draw(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BSeparatorItem_Draw'; +{procedure BSeparatorItem__ReservedSeparatorItem1(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BSeparatorItem__ReservedSeparatorItem1'; +procedure BSeparatorItem__ReservedSeparatorItem2(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BSeparatorItem__ReservedSeparatorItem2'; +function BSeparatorItem_operator=(AObject : TCPlusObject; : TSeparatorItem) : TSeparatorItem; cdecl; external BePascalLibName name 'BSeparatorItem_operator='; +procedure BSeparatorItem_uint32 _reserved[1](AObject : TCPlusObject); cdecl; external BePascalLibName name 'BSeparatorItem_uint32 _reserved[1]'; +} + //procedure menu_info_float font_size(AObject : TCPlusObject); cdecl; external BePascalLibName name 'menu_info_float font_size'; //procedure menu_info_font_family f_family(AObject : TCPlusObject); cdecl; external BePascalLibName name 'menu_info_font_family f_family'; //procedure menu_info_font_style f_style(AObject : TCPlusObject); cdecl; external BePascalLibName name 'menu_info_font_style f_style'; @@ -213,20 +372,21 @@ type //procedure menu_info_int32 separator(AObject : TCPlusObject); cdecl; external BePascalLibName name 'menu_info_int32 separator'; //procedure menu_info_bool click_to_open(AObject : TCPlusObject); cdecl; external BePascalLibName name 'menu_info_bool click_to_open'; //procedure menu_info_bool triggers_always_shown(AObject : TCPlusObject); cdecl; external BePascalLibName name 'menu_info_bool triggers_always_shown'; -function BMenu_Create(AObject : TBeObject) : TCPlusObject; cdecl; external BePascalLibName name 'BMenu_Create'; -function BMenu_Create(AObject : TBeObject; title : PChar; width : double; height : double) : TCPlusObject; cdecl; external BePascalLibName name 'BMenu_Create'; +//function BMenu_Create(AObject : TBeObject) : TCPlusObject; cdecl; external BePascalLibName name 'BMenu_Create'; +function BMenu_Create(AObject : TBeObject; title : PChar; layout : Integer) : TCPlusObject; cdecl; external BePascalLibName name 'BMenu_Create'; +function BMenu_Create(AObject : TBeObject; title : PChar; width : double; height : double) : TCPlusObject; cdecl; external BePascalLibName name 'BMenu_Create_1'; procedure BMenu_Free(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BMenu_Free'; -function BMenu_Create(AObject : TBeObject; data : TCPlusObject) : TCPlusObject; cdecl; external BePascalLibName name 'BMenu_Create'; +function BMenu_Create(AObject : TBeObject; data : TCPlusObject) : TCPlusObject; cdecl; external BePascalLibName name 'BMenu_Create_3'; function BMenu_Instantiate(AObject : TCPlusObject; data : TCPlusObject) : TArchivable; cdecl; external BePascalLibName name 'BMenu_Instantiate'; function BMenu_Archive(AObject : TCPlusObject; data : TCPlusObject; deep : boolean) : TStatus_t; cdecl; external BePascalLibName name 'BMenu_Archive'; procedure BMenu_AttachedToWindow(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BMenu_AttachedToWindow'; procedure BMenu_DetachedFromWindow(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BMenu_DetachedFromWindow'; -function BMenu_AddItem(AObject : TCPlusObject; item : TCPlusObject) : boolean; cdecl; external BePascalLibName name 'BMenu_AddItem'; -function BMenu_AddItem(AObject : TCPlusObject; item : TCPlusObject; index : integer) : boolean; cdecl; external BePascalLibName name 'BMenu_AddItem_1'; -function BMenu_AddItem(AObject : TCPlusObject; item : TCPlusObject; frame : TCPlusObject) : boolean; cdecl; external BePascalLibName name 'BMenu_AddItem_2'; -function BMenu_AddItem_2(AObject : TCPlusObject; menu : TCPlusObject) : boolean; cdecl; external BePascalLibName name 'BMenu_AddItem'; -function BMenu_AddItem_2(AObject : TCPlusObject; menu : TCPlusObject; index : integer) : boolean; cdecl; external BePascalLibName name 'BMenu_AddItem'; -function BMenu_AddItem_2(AObject : TCPlusObject; menu : TCPlusObject; frame : TCPlusObject) : boolean; cdecl; external BePascalLibName name 'BMenu_AddItem'; +function BMenu_AddItem_1(AObject : TCPlusObject; item : TCPlusObject) : boolean; cdecl; external BePascalLibName name 'BMenu_AddItem'; +function BMenu_AddItem_2(AObject : TCPlusObject; item : TCPlusObject; index : integer) : boolean; cdecl; external BePascalLibName name 'BMenu_AddItem_1'; +function BMenu_AddItem_3(AObject : TCPlusObject; item : TCPlusObject; frame : TCPlusObject) : boolean; cdecl; external BePascalLibName name 'BMenu_AddItem_2'; +function BMenu_AddItem_4(AObject : TCPlusObject; menu : TCPlusObject) : boolean; cdecl; external BePascalLibName name 'BMenu_AddItem_3'; +function BMenu_AddItem_5(AObject : TCPlusObject; menu : TCPlusObject; index : integer) : boolean; cdecl; external BePascalLibName name 'BMenu_AddItem_4'; +function BMenu_AddItem_6(AObject : TCPlusObject; menu : TCPlusObject; frame : TCPlusObject) : boolean; cdecl; external BePascalLibName name 'BMenu_AddItem_5'; function BMenu_AddList(AObject : TCPlusObject; list : TCPlusObject; index : integer) : boolean; cdecl; external BePascalLibName name 'BMenu_AddList'; function BMenu_AddSeparatorItem(AObject : TCPlusObject) : boolean; cdecl; external BePascalLibName name 'BMenu_AddSeparatorItem'; function BMenu_RemoveItem(AObject : TCPlusObject; item : TCPlusObject) : boolean; cdecl; external BePascalLibName name 'BMenu_RemoveItem'; @@ -537,164 +697,6 @@ procedure BMenu_bool fRedrawAfterSticky(AObject : TCPlusObject); cdecl; external procedure BMenu_bool fAttachAborted(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BMenu_bool fAttachAborted'; } -type - TMenuItem = class(TBeObject) - private - public - constructor Create; override; - constructor Create(aMenu : TMenu; message : TMessage); virtual; - constructor Create(data : TMessage); virtual; - constructor Create(aLabel : PChar; message : TMessage; aShortcut : Char; modifiers : Cardinal); virtual; - destructor Destroy; override; - function Instantiate(data : TMessage) : TArchivable; - function Archive(data : TMessage; deep : boolean) : TStatus_t; - procedure SetLabel(name : PChar); - procedure SetEnabled(state : boolean); - procedure SetMarked(state : boolean); - procedure SetTrigger(ch : Char); - procedure SetShortcut(ch : Char; modifiers : Cardinal); -// function aLabel : PChar; - function IsEnabled : boolean; - function IsMarked : boolean; - function Trigger : Char; -// function Shortcut(modifiers : Cardinal) : Char; - function Submenu : TMenu; - function Menu : TMenu; - function Frame : TRect; -{ procedure GetContentSize(width : double; height : double); - procedure TruncateLabel(max : double; new_label : PChar); - procedure DrawContent; - procedure Draw; - procedure Highlight(aOn : boolean); - function IsSelected : boolean; - function ContentLocation : TPoint; - procedure _ReservedMenuItem2; - procedure _ReservedMenuItem3; - procedure _ReservedMenuItem4; - constructor Create(MenuItem : TMenuItem); - function operator=(MenuItem : TMenuItem) : TMenuItem; - procedure InitData; - procedure InitMenuData(menu : TMenu); - procedure Install(window : TWindow); - function Invoke(msg : TMessage) : TStatus_t; - procedure Uninstall; - procedure SetSuper(super : TMenu); - procedure Select(on : boolean); - procedure DrawMarkSymbol; - procedure DrawShortcutSymbol; - procedure DrawSubmenuSymbol; - procedure DrawControlChar(control : PChar); - procedure SetSysTrigger(ch : Char); - procedure char *fLabel; - procedure BMenu *fSubmenu; - procedure BWindow *fWindow; - procedure BMenu *fSuper; - procedure BRect fBounds; - procedure uint32 fModifiers; - procedure float fCachedWidth; - procedure int16 fTriggerIndex; - procedure char fUserTrigger; - procedure char fSysTrigger; - procedure char fShortcutChar; - procedure bool fMark; - procedure bool fEnabled; - procedure bool fSelected; - procedure uint32 _reserved[4]; -} - end; -type - TSeparatorItem = class(TMenuItem) - private - public - constructor Create; override; - constructor Create(data : TMessage); override; - destructor Destroy; override; - function Archive(data : TMessage; deep : boolean) : TStatus_t; - function Instantiate(data : TMessage) : TArchivable; - procedure SetEnabled(state : boolean); -{ procedure GetContentSize(width : double; height : double); - procedure Draw; - procedure _ReservedSeparatorItem1; - procedure _ReservedSeparatorItem2; - function operator=( : TSeparatorItem) : TSeparatorItem; - procedure uint32 _reserved[1]; -} - end; - -function BMenuItem_Create(AObject : TBeObject) : TCPlusObject; cdecl; external BePascalLibName name 'BMenuItem_Create'; -function BMenuItem_Create(AObject : TBeObject; menu : TCPlusObject; message : TCPlusObject) : TCPlusObject; cdecl; external BePascalLibName name 'BMenuItem_Create_1'; -function BMenuItem_Create(AObject : TBeObject; data : TCPlusObject) : TCPlusObject; cdecl; external BePascalLibName name 'BMenuItem_Create_2'; -function BMenuItem_Create(AObject : TBeObject; aLabel : PChar; message : TCPlusObject; shortcut : Char; modifiers : Cardinal) : TCPlusObject; cdecl; external BePascalLibName name 'BMenuItem_Create'; -procedure BMenuItem_Free(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BMenuItem_Free'; -function BMenuItem_Instantiate(AObject : TCPlusObject; data : TCPlusObject) : TArchivable; cdecl; external BePascalLibName name 'BMenuItem_Instantiate'; -function BMenuItem_Archive(AObject : TCPlusObject; data : TCPlusObject; deep : boolean) : TStatus_t; cdecl; external BePascalLibName name 'BMenuItem_Archive'; -procedure BMenuItem_SetLabel(AObject : TCPlusObject; name : PChar); cdecl; external BePascalLibName name 'BMenuItem_SetLabel'; -procedure BMenuItem_SetEnabled(AObject : TCPlusObject; state : boolean); cdecl; external BePascalLibName name 'BMenuItem_SetEnabled'; -procedure BMenuItem_SetMarked(AObject : TCPlusObject; state : boolean); cdecl; external BePascalLibName name 'BMenuItem_SetMarked'; -procedure BMenuItem_SetTrigger(AObject : TCPlusObject; ch : Char); cdecl; external BePascalLibName name 'BMenuItem_SetTrigger'; -procedure BMenuItem_SetShortcut(AObject : TCPlusObject; ch : Char; modifiers : Cardinal); cdecl; external BePascalLibName name 'BMenuItem_SetShortcut'; -function BMenuItem_Label(AObject : TCPlusObject) : PChar; cdecl; external BePascalLibName name 'BMenuItem_Label'; -function BMenuItem_IsEnabled(AObject : TCPlusObject) : boolean; cdecl; external BePascalLibName name 'BMenuItem_IsEnabled'; -function BMenuItem_IsMarked(AObject : TCPlusObject) : boolean; cdecl; external BePascalLibName name 'BMenuItem_IsMarked'; -function BMenuItem_Trigger(AObject : TCPlusObject) : Char; cdecl; external BePascalLibName name 'BMenuItem_Trigger'; -function BMenuItem_Shortcut(AObject : TCPlusObject; modifiers : Cardinal) : Char; cdecl; external BePascalLibName name 'BMenuItem_Shortcut'; -function BMenuItem_Submenu(AObject : TCPlusObject) : TMenu; cdecl; external BePascalLibName name 'BMenuItem_Submenu'; -function BMenuItem_Menu(AObject : TCPlusObject) : TMenu; cdecl; external BePascalLibName name 'BMenuItem_Menu'; -function BMenuItem_Frame(AObject : TCPlusObject) : TRect; cdecl; external BePascalLibName name 'BMenuItem_Frame'; -{procedure BMenuItem_GetContentSize(AObject : TCPlusObject; width : double; height : double); cdecl; external BePascalLibName name 'BMenuItem_GetContentSize'; -procedure BMenuItem_TruncateLabel(AObject : TCPlusObject; max : double; new_label : PChar); cdecl; external BePascalLibName name 'BMenuItem_TruncateLabel'; -procedure BMenuItem_DrawContent(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BMenuItem_DrawContent'; -procedure BMenuItem_Draw(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BMenuItem_Draw'; -procedure BMenuItem_Highlight(AObject : TCPlusObject; aOn : boolean); cdecl; external BePascalLibName name 'BMenuItem_Highlight'; -function BMenuItem_IsSelected(AObject : TCPlusObject) : boolean; cdecl; external BePascalLibName name 'BMenuItem_IsSelected'; -function BMenuItem_ContentLocation(AObject : TCPlusObject) : TPoint; cdecl; external BePascalLibName name 'BMenuItem_ContentLocation'; -procedure BMenuItem__ReservedMenuItem2(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BMenuItem__ReservedMenuItem2'; -procedure BMenuItem__ReservedMenuItem3(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BMenuItem__ReservedMenuItem3'; -procedure BMenuItem__ReservedMenuItem4(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BMenuItem__ReservedMenuItem4'; -function BMenuItem_Create(AObject : TBeObject; : TMenuItem) : TCPlusObject; cdecl; external BePascalLibName name 'BMenuItem_Create'; -function BMenuItem_operator=(AObject : TCPlusObject; : TMenuItem) : TMenuItem; cdecl; external BePascalLibName name 'BMenuItem_operator='; -procedure BMenuItem_InitData(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BMenuItem_InitData'; -procedure BMenuItem_InitMenuData(AObject : TCPlusObject; menu : TCPlusObject); cdecl; external BePascalLibName name 'BMenuItem_InitMenuData'; -procedure BMenuItem_Install(AObject : TCPlusObject; window : TCPlusObject); cdecl; external BePascalLibName name 'BMenuItem_Install'; -function BMenuItem_Invoke(AObject : TCPlusObject; msg : TCPlusObject) : TStatus_t; cdecl; external BePascalLibName name 'BMenuItem_Invoke'; -procedure BMenuItem_Uninstall(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BMenuItem_Uninstall'; -procedure BMenuItem_SetSuper(AObject : TCPlusObject; super : TCPlusObject); cdecl; external BePascalLibName name 'BMenuItem_SetSuper'; -procedure BMenuItem_Select(AObject : TCPlusObject; on : boolean); cdecl; external BePascalLibName name 'BMenuItem_Select'; -procedure BMenuItem_DrawMarkSymbol(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BMenuItem_DrawMarkSymbol'; -procedure BMenuItem_DrawShortcutSymbol(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BMenuItem_DrawShortcutSymbol'; -procedure BMenuItem_DrawSubmenuSymbol(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BMenuItem_DrawSubmenuSymbol'; -procedure BMenuItem_DrawControlChar(AObject : TCPlusObject; control : PChar); cdecl; external BePascalLibName name 'BMenuItem_DrawControlChar'; -procedure BMenuItem_SetSysTrigger(AObject : TCPlusObject; ch : Char); cdecl; external BePascalLibName name 'BMenuItem_SetSysTrigger'; -procedure BMenuItem_char *fLabel(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BMenuItem_char *fLabel'; -procedure BMenuItem_BMenu *fSubmenu(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BMenuItem_BMenu *fSubmenu'; -procedure BMenuItem_BWindow *fWindow(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BMenuItem_BWindow *fWindow'; -procedure BMenuItem_BMenu *fSuper(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BMenuItem_BMenu *fSuper'; -procedure BMenuItem_BRect fBounds(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BMenuItem_BRect fBounds'; -procedure BMenuItem_uint32 fModifiers(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BMenuItem_uint32 fModifiers'; -procedure BMenuItem_float fCachedWidth(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BMenuItem_float fCachedWidth'; -procedure BMenuItem_int16 fTriggerIndex(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BMenuItem_int16 fTriggerIndex'; -procedure BMenuItem_char fUserTrigger(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BMenuItem_char fUserTrigger'; -procedure BMenuItem_char fSysTrigger(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BMenuItem_char fSysTrigger'; -procedure BMenuItem_char fShortcutChar(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BMenuItem_char fShortcutChar'; -procedure BMenuItem_bool fMark(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BMenuItem_bool fMark'; -procedure BMenuItem_bool fEnabled(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BMenuItem_bool fEnabled'; -procedure BMenuItem_bool fSelected(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BMenuItem_bool fSelected'; -procedure BMenuItem_uint32 _reserved[4](AObject : TCPlusObject); cdecl; external BePascalLibName name 'BMenuItem_uint32 _reserved[4]'; -} -function BSeparatorItem_Create(AObject : TBeObject) : TCPlusObject; cdecl; external BePascalLibName name 'BSeparatorItem_Create'; -function BSeparatorItem_Create(AObject : TBeObject; data : TCPlusObject) : TCPlusObject; cdecl; external BePascalLibName name 'BSeparatorItem_Create_1'; -procedure BSeparatorItem_Free(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BSeparatorItem_Free'; -function BSeparatorItem_Archive(AObject : TCPlusObject; data : TCPlusObject; deep : boolean) : TStatus_t; cdecl; external BePascalLibName name 'BSeparatorItem_Archive'; -function BSeparatorItem_Instantiate(AObject : TCPlusObject; data : TCPlusObject) : TArchivable; cdecl; external BePascalLibName name 'BSeparatorItem_Instantiate'; -procedure BSeparatorItem_SetEnabled(AObject : TCPlusObject; state : boolean); cdecl; external BePascalLibName name 'BSeparatorItem_SetEnabled'; -procedure BSeparatorItem_GetContentSize(AObject : TCPlusObject; width : double; height : double); cdecl; external BePascalLibName name 'BSeparatorItem_GetContentSize'; -//procedure BSeparatorItem_Draw(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BSeparatorItem_Draw'; -{procedure BSeparatorItem__ReservedSeparatorItem1(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BSeparatorItem__ReservedSeparatorItem1'; -procedure BSeparatorItem__ReservedSeparatorItem2(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BSeparatorItem__ReservedSeparatorItem2'; -function BSeparatorItem_operator=(AObject : TCPlusObject; : TSeparatorItem) : TSeparatorItem; cdecl; external BePascalLibName name 'BSeparatorItem_operator='; -procedure BSeparatorItem_uint32 _reserved[1](AObject : TCPlusObject); cdecl; external BePascalLibName name 'BSeparatorItem_uint32 _reserved[1]'; -} - implementation {procedure PMenu_Info.float font_size; @@ -732,25 +734,39 @@ begin menu_info_bool triggers_always_shown(CPlusObject); end; } -constructor TMenu.Create; +{constructor TMenu.Create; begin - CPlusObject := BMenu_Create(Self); + CPlusObject := BMenu_Create_0(Self); end; +} constructor TMenu.Create(title : PChar; width : double; height : double); begin CPlusObject := BMenu_Create(Self, title, width, height); end; +constructor TMenu.Create(title : PChar; layout : TMenu_Layout); +begin +// CPlusObject := BMenu_Create(Self, title, 0); + + case layout of + B_ITEMS_IN_ROW : CPlusObject := BMenu_Create(Self, title, 0); + B_ITEMS_IN_COLUMN : CPlusObject := BMenu_Create(Self, title, 1); + B_ITEMS_IN_MATRIX : CPlusObject := BMenu_Create(Self, title, 2); + end; +end; + + destructor TMenu.Destroy; begin BMenu_Free(CPlusObject); end; -constructor TMenu.Create(data : TMessage); +{constructor TMenu.Create(data : TMessage); begin CPlusObject := BMenu_Create(Self, data.CPlusObject); end; +} function TMenu.Instantiate(data : TMessage) : TArchivable; begin @@ -772,43 +788,89 @@ begin // BMenu_DetachedFromWindow(CPlusObject); end; + function TMenu.AddItem(item : TMenuItem) : boolean; begin WriteLn('function TMenu.AddItem(item : TMenuItem) : boolean;'); - Result := BMenu_AddItem(CPlusObject, item.CPlusObject); + Result := BMenu_AddItem_1(CPlusObject, item.CPlusObject); end; function TMenu.AddItem(item : TMenuItem; index : integer) : boolean; begin WriteLn('function TMenu.AddItem(item : TMenuItem; index : integer) : boolean;'); - Result := BMenu_AddItem(CPlusObject, item.CPlusObject, index); + Result := BMenu_AddItem_2(CPlusObject, item.CPlusObject, index); end; function TMenu.AddItem(item : TMenuItem; frame : TRect) : boolean; begin WriteLn('ici'); WriteLn('function TMenu.AddItem(item : TMenuItem; frame : TRect) : boolean;'); - Result := BMenu_AddItem(CPlusObject, item.CPlusObject, frame.CPlusObject); + frame.PrintToStream; + Writeln('toto'); + Result := BMenu_AddItem_3(CPlusObject, item.CPlusObject, frame.CPlusObject); end; function TMenu.AddItem(menu : TMenu) : boolean; begin WriteLn('function TMenu.AddItem(menu : TMenu) : boolean;'); - Result := BMenu_AddItem_2(CPlusObject, menu.CPlusObject); + WriteLn('Bonjour'); + Result := BMenu_AddItem_4(CPlusObject, menu.CPlusObject); end; function TMenu.AddItem(menu : TMenu; index : integer) : boolean; begin WriteLn('function TMenu.AddItem(menu : TMenu; index : integer) : boolean;'); - Result := BMenu_AddItem_2(CPlusObject, menu.CPlusObject, index); + Result := BMenu_AddItem_5(CPlusObject, menu.CPlusObject, index); end; function TMenu.AddItem(menu : TMenu; frame : TRect) : boolean; begin WriteLn('function TMenu.AddItem(menu : TMenu; frame : TRect) : boolean;'); - Result := BMenu_AddItem_2(CPlusObject, menu.CPlusObject, frame.CPlusObject); + Result := BMenu_AddItem_6(CPlusObject, menu.CPlusObject, frame.CPlusObject); end; + +{function TMenu.AddItem(item : TMenuItem) : boolean; +begin + WriteLn('function TMenu.AddItem(item : TMenuItem) : boolean;'); + Result := BMenu_AddItem_1(CPlusObject, item.CPlusObject); +end; + +function TMenu.AddItem(item : TMenuItem; index : integer) : boolean; +begin + WriteLn('function TMenu.AddItem(item : TMenuItem; index : integer) : boolean;'); + Result := BMenu_AddItem_2(CPlusObject, item.CPlusObject, index); +end; + +function TMenu.AddItem(item : TMenuItem; frame : TRect) : boolean; +begin + WriteLn('ici'); + WriteLn('function TMenu.AddItem(item : TMenuItem; frame : TRect) : boolean;'); + frame.PrintToStream; + Writeln('toto'); + Result := BMenu_AddItem_3(CPlusObject, item.CPlusObject, frame.CPlusObject); +end; + +function TMenu.AddItem(menu : TMenu) : boolean; +begin + WriteLn('function TMenu.AddItem(menu : TMenu) : boolean;'); + WriteLn('Bonjour'); + Result := BMenu_AddItem_4(CPlusObject, menu.CPlusObject); +end; + +function TMenu.AddItem(menu : TMenu; index : integer) : boolean; +begin + WriteLn('function TMenu.AddItem(menu : TMenu; index : integer) : boolean;'); + Result := BMenu_AddItem_5(CPlusObject, menu.CPlusObject, index); +end; + +function TMenu.AddItem(menu : TMenu; frame : TRect) : boolean; +begin + WriteLn('function TMenu.AddItem(menu : TMenu; frame : TRect) : boolean;'); + Result := BMenu_AddItem_6(CPlusObject, menu.CPlusObject, frame.CPlusObject); +end; +} + function TMenu.AddList(list : TList; index : integer) : boolean; begin Result := BMenu_AddList(CPlusObject, list.CPlusObject, index); @@ -1520,7 +1582,7 @@ end; constructor TMenuItem.Create; begin - CPlusObject := BMenuItem_Create(Self); +// CPlusObject := BMenuItem_Create(Self); end; constructor TMenuItem.Create(aMenu : TMenu; message : TMessage); diff --git a/bepascal/bepascal/be/interface/menubar.pp b/bepascal/bepascal/be/interface/menubar.pp index 48fd8dc..41b2c37 100644 --- a/bepascal/bepascal/be/interface/menubar.pp +++ b/bepascal/bepascal/be/interface/menubar.pp @@ -77,8 +77,8 @@ type } end; -function BMenuBar_Create(AObject : TBeObject; frame : TCPlusObject; viewName : PChar; resizingMode : Cardinal; layout : TMenu_Layout; resizeToFit : boolean) : TCPlusObject; cdecl; external BePascalLibName name 'BMenuBar_Create'; -function BMenuBar_Create(AObject : TBeObject) : TCPlusObject; cdecl; external BePascalLibName name 'BMenuBar_Create'; +function BMenuBar_Create(AObject : TBeObject; frame : TCPlusObject; viewName : PChar; resizingMode : Cardinal; layout : Integer; resizeToFit : boolean) : TCPlusObject; cdecl; external BePascalLibName name 'BMenuBar_Create'; +//function BMenuBar_Create(AObject : TBeObject) : TCPlusObject; cdecl; external BePascalLibName name 'BMenuBar_Create'; procedure BMenuBar_Free(AObject : TCPlusObject); cdecl; external BePascalLibName name 'BMenuBar_Free'; function BMenuBar_Instantiate(AObject : TCPlusObject; data : TCPlusObject) : TArchivable; cdecl; external BePascalLibName name 'BMenuBar_Instantiate'; function BMenuBar_Archive(AObject : TCPlusObject; data : TCPlusObject; deep : boolean) : TStatus_t; cdecl; external BePascalLibName name 'BMenuBar_Archive'; @@ -127,13 +127,13 @@ implementation constructor TMenuBar.Create(frame : TRect; viewName : PChar; resizingMode : Cardinal; layout : TMenu_Layout; resizeToFit : boolean); begin - CPlusObject := BMenuBar_Create(Self, frame.CPlusObject, viewName, resizingMode, layout, resizeToFit); + CPlusObject := BMenuBar_Create(Self, frame.CPlusObject, viewName, resizingMode, 0, resizeToFit); end; constructor TMenuBar.Create; begin CreatePas; - CPlusObject := BMenuBar_Create(Self); +// CPlusObject := BMenuBar_Create_1(Self); end; destructor TMenuBar.Destroy; diff --git a/bepascal/bepascal/be/interface/menuitem.h b/bepascal/bepascal/be/interface/menuitem.h index 14160b5..b36e7e3 100644 --- a/bepascal/bepascal/be/interface/menuitem.h +++ b/bepascal/bepascal/be/interface/menuitem.h @@ -30,6 +30,12 @@ class BPMenuItem : public BMenuItem, virtual public BPasObject BPMenuItem(TPasObject PasObject, BMenu *submenu, BMessage *message = NULL); BPMenuItem(TPasObject PasObejct, BMessage *data); virtual void Draw(void); + virtual void DrawContent(void); + virtual void GetContentSize(float *width, float *height); + virtual void TruncateLabel(float max, char *new_label); + virtual void Highlight(bool on); + bool IsSelected() const; + BPoint ContentLocation() const; private: }; @@ -39,6 +45,7 @@ class BPSeparatorItem : public BSeparatorItem, virtual public BPMenuItem BPSeparatorItem(TPasObject PasObject); BPSeparatorItem(TPasObject PasObject, BMessage *data); virtual void Draw(void); + virtual void DrawContent(void); }; #endif /* _MENUITEM_H_ */ \ No newline at end of file