1 #ifndef __BF_GUI_TOPMENU_H__
2 #define __BF_GUI_TOPMENU_H__
3
4 #include <View.h>
5 #include <Window.h>
6 #include <Messenger.h>
7 #include "BL_Tools.h"
8 #include "BF_GUI_DlgViews.h"
9
10 class BF_GUI_TopMenu;
11
12 class BF_GUI_TopMenu_HItem:public BF_GUI_ViewMenu_Item{
13 public:
14 BF_GUI_TopMenu_HItem(const char *pc_Title,
15 BBitmap *po_SIcon=NULL);
16
17 void AddHItem (const char *pc_Title,
18 BMessage *po_Message,
19 const char *pc_KeyLabel="");
20 void AddHItem (const char *pc_Title,
21 int32 i_MessageWhat,
22 BView *po_Owner,
23 const char *pc_KeyLabel="");
24
25 BL_List loVItem;
26 };
27
28 class BF_GUI_TopMenu_VItem:public BF_GUI_ViewMenu_Item{
29 public:
30 BF_GUI_TopMenu_VItem( const char *pc_Title,
31 BMessage *po_Message,
32 const char *pc_KeyLabel="");
33 ~BF_GUI_TopMenu_VItem();
34
35 virtual float CalcWidth(BF_GUI_Setup_Font * po_Font);
36 BL_String sKeyLabel;
37 float fKeyWidth;
38 BMessage *poMessage;
39 };
40
41 class BF_GUI_TopVMenu:public BF_GUI_DlgView_VMenu{
42 public:
43 BF_GUI_TopVMenu(BRect & o_Rect,BL_List *plo_Menu,BF_GUI_TopMenu *po_HMenu);
44 virtual void KeyDown(const char *bytes, int32 numBytes);
45 virtual void NavEnter();
46 virtual void NavEscape();
47 virtual void DrawItem(BView *po_Render,int32 i_Index,bool b_ReqDrawBack);
48 private:
49 BF_GUI_TopMenu *poHMenu;
50
51 };
52
53
54 class BF_GUI_TopMenu:public BF_GUI_DlgView_HMenu{
55 public:
56 BF_GUI_TopMenu(const BRect &o_Rect,
57 BL_List *plo_HItem);
58 virtual void NavEnter();
59 virtual void NavEscape();
60 virtual void NavChangeCursor(int32 i_NewCursor,int i_DirectMove,bool b_Redraw=true);
61
62 virtual void MakeFocus(bool b_Focused=true);
63 virtual void Show(void);
64 virtual void MessageReceived(BMessage* po_Message);
65
66 BView* poParent;
67 private:
68 BF_GUI_TopVMenu *poVMenu;
69 BF_GUI_DlgPanel *poVMenuPanel;
70 int iHCursor;
71
72 void OpenVMenu(bool b_FocusHMenu=true);
73 void CloseVMenu();
74 void Invoke(bool b_Ok);
75 };
76
77 void BF_GUI_TopMenu_Run();
78
79 #endif
80