00001 #ifndef BCMENUPOPUP_H
00002 #define BCMENUPOPUP_H
00003
00004
00005
00006 #include "arraylist.h"
00007 #include "bcmenu.inc"
00008 #include "bcmenubar.inc"
00009 #include "bcmenuitem.inc"
00010 #include "bcpopup.inc"
00011 #include "bcpopupmenu.inc"
00012 #include "bcwindowbase.inc"
00013
00014
00015
00016
00017
00018 class BC_MenuPopup
00019 {
00020 public:
00021 BC_MenuPopup();
00022 virtual ~BC_MenuPopup();
00023
00024 friend class BC_MenuItem;
00025 friend class BC_PopupMenu;
00026
00027 int initialize(BC_WindowBase *top_level,
00028 BC_MenuBar *menu_bar,
00029 BC_Menu *menu,
00030 BC_MenuItem *menu_item,
00031 BC_PopupMenu *popup_menu);
00032 int add_item(BC_MenuItem *item);
00033 int remove_item(BC_MenuItem* item = 0);
00034 int total_menuitems();
00035
00036
00037 int deactivate_submenus(BC_MenuPopup *exclude = 0);
00038 int dispatch_button_press();
00039 int dispatch_button_release();
00040 int dispatch_key_press();
00041 int dispatch_motion_event();
00042 int dispatch_cursor_leave();
00043 int dispatch_translation_event();
00044 int deactivate_menu();
00045 int activate_menu(int x, int y, int w, int h, int top_window_coords, int vertical_justify);
00046 int get_key_x();
00047 int get_w();
00048 int draw_items();
00049 BC_Popup* get_popup();
00050
00051 private:
00052 int get_dimensions();
00053
00054 ArrayList<BC_MenuItem *> menu_items;
00055 BC_WindowBase *top_level;
00056 BC_MenuItem *menu_item;
00057 BC_MenuBar *menu_bar;
00058 BC_PopupMenu *popup_menu;
00059 BC_Menu *menu;
00060
00061 int x, y, w, h;
00062
00063 int key_x;
00064
00065 BC_Popup *popup;
00066 int active;
00067 int type;
00068
00069 BC_Pixmap *window_bg;
00070 BC_Pixmap *item_bg[3];
00071 };
00072
00073 class BC_SubMenu : public BC_MenuPopup
00074 {
00075 public:
00076 BC_SubMenu();
00077 virtual ~BC_SubMenu();
00078
00079 int add_submenuitem(BC_MenuItem *item);
00080 };
00081
00082
00083
00084
00085 #endif