home *** CD-ROM | disk | FTP | other *** search
/ Geek 6 / Geek-006.iso / linux / video / xmovie-1.5.3.tar.gz / xmovie-1.5.3.tar / xmovie-1.5.3 / guicast / bcmenubar.h < prev    next >
C/C++ Source or Header  |  2000-11-29  |  4KB  |  201 lines

  1. #ifndef BCMENUBAR_H
  2. #define BCMENUBAR_H
  3.  
  4. #include "bcmenubar.inc"
  5. #include "bcpopup.inc"
  6. #include "bcsubwindow.h"
  7.  
  8. class BC_MenuBar : public BC_SubWindow
  9. {
  10. public:
  11.     BC_MenuBar(int x, int y, int w);
  12.     virtual ~BC_MenuBar();
  13.  
  14.     friend BC_Menu;
  15.  
  16.     int add_menu(BC_Menu* menu);
  17.  
  18.     int initialize();
  19.     int keypress_event();
  20.     int button_press_event();
  21.     int button_release_event();
  22.     int cursor_motion_event();
  23.     int cursor_enter_event();
  24.     int cursor_leave_event();
  25.     int resize_event(int w, int h);
  26.     int translation_event();
  27.     int deactivate();
  28.     int unhighlight();
  29.  
  30. private:
  31.     int draw_face();
  32.     int activate();
  33. // Array of menu titles
  34.     ArrayList<BC_Menu*> menu_titles;  
  35. // number of button releases since activation
  36.     int button_releases;        
  37. // When a menu is pulled down
  38.     int active;
  39. };
  40.  
  41. class BC_Menu
  42. {
  43. public:
  44.     BC_Menu(char *text);
  45.     virtual ~BC_Menu();
  46.  
  47.     friend BC_MenuBar;
  48.  
  49. // Called by user
  50.     int add_item(BC_MenuItem* menuitem);
  51.     int remove_item(BC_MenuItem* item = 0);
  52.     int total_menuitems();
  53.     int set_text(char *text);
  54.  
  55. // Called by BC_Menubar
  56.     int initialize(BC_WindowBase *top_level, BC_MenuBar *menu_bar, int x, int y, int w, int h);
  57.     int dispatch_button_press();
  58.     int dispatch_button_release();
  59.     int dispatch_keypress();
  60.     int dispatch_motion_event();
  61.     int dispatch_cursor_leave();
  62.     int dispatch_translation_event();
  63.     int deactivate_menu();
  64.     int activate_menu();
  65.     int unhighlight();
  66.  
  67. private:
  68.     int draw_title();
  69. // If this menu is pulled down
  70.     int active;
  71.     char text[1024];
  72.     BC_WindowBase *top_level;
  73. // Owner menubar if there is one
  74.     BC_MenuBar *menu_bar;
  75. // Client popup
  76.     BC_MenuPopup *menu_popup;
  77.     int highlighted;
  78. // Dimensions relative to menubar.
  79.     int x, y, w, h; 
  80. };
  81.  
  82. class BC_MenuItem
  83. {
  84. public:
  85.     BC_MenuItem(char *text, char *hotkey_text = "", int hotkey = 0);
  86.     virtual ~BC_MenuItem();
  87.  
  88.     friend BC_MenuPopup;
  89.  
  90.     int add_submenu(BC_SubMenu *submenu);
  91.     int set_checked(int value);
  92.     int get_checked();
  93.     int set_text(char *text);
  94.     int set_shift(int value = 1);
  95.  
  96.     int deactivate_submenus(BC_MenuPopup *exclude);
  97.     int activate_submenu();
  98.     virtual int handle_event() { return 1; };
  99.     int dispatch_button_press();
  100.     int dispatch_button_release(int &redraw);
  101.     int dispatch_motion_event(int &redraw);
  102.     int dispatch_translation_event();
  103.     int dispatch_cursor_leave();
  104.     int dispatch_key_press();
  105.     int add_item(BC_MenuItem *item);
  106.     int initialize(BC_WindowBase *top_level, BC_MenuBar *menu_bar, BC_MenuPopup *menu_popup);
  107.     int draw();
  108.     char* get_text();
  109.     BC_WindowBase* get_top_level();
  110.     BC_PopupMenu* get_popup_menu();
  111.  
  112. private:
  113.     BC_WindowBase *top_level;
  114.     BC_MenuBar *menu_bar;
  115.     BC_MenuPopup *menu_popup;
  116. // Submenu if this item owns one.
  117.     BC_SubMenu *submenu;          
  118. // whether the cursor is over or not
  119.     int highlighted;
  120. // whether the cursor is over and the button is down
  121.     int down;
  122. // check box
  123.     int checked;
  124. // title
  125.     char text[256];
  126. // text of hotkey
  127.     char hotkey_text[32];
  128.     int shift_hotkey;
  129. // code of hotkey
  130.     int hotkey;
  131. // y position of this item set during menu activation
  132.     int y;
  133. // height of item is set during menu activation
  134.     int h;
  135. };
  136.  
  137.  
  138. class BC_MenuPopup
  139. {
  140. public:
  141.     BC_MenuPopup();
  142.     virtual ~BC_MenuPopup();
  143.  
  144.     friend BC_MenuItem;
  145.  
  146.     int initialize(BC_WindowBase *top_level, 
  147.         BC_MenuBar *menu_bar, 
  148.         BC_Menu *menu, 
  149.         BC_MenuItem *menu_item, 
  150.         BC_PopupMenu *popup_menu);
  151.     int add_item(BC_MenuItem *item);
  152.     int remove_item(BC_MenuItem* item = 0);
  153.     int total_menuitems();
  154.  
  155. // Deactivates all submenus in a downward progression except for the exclude
  156.     int deactivate_submenus(BC_MenuPopup *exclude = 0);
  157.     int dispatch_button_press();
  158.     int dispatch_button_release();
  159.     int dispatch_key_press();
  160.     int dispatch_motion_event();
  161.     int dispatch_cursor_leave();
  162.     int dispatch_translation_event();
  163.     int deactivate_menu();
  164.     int activate_menu(int x, int y, int w, int h, int top_window_coords, int vertical_justify);
  165.     int get_key_x();
  166.     int get_w();
  167.     int draw_items();
  168.     BC_Popup* get_popup();
  169.  
  170. private:
  171.     int get_dimensions();
  172.  
  173.     ArrayList<BC_MenuItem *> menu_items;  
  174.     BC_WindowBase *top_level;
  175.     BC_MenuItem *menu_item;
  176.     BC_MenuBar *menu_bar;
  177.     BC_PopupMenu *popup_menu;
  178.     BC_Menu *menu;
  179. // Dimensions relative to root window
  180.     int x, y, w, h; 
  181. // Horizontal position of hotkey text
  182.     int key_x;
  183. // Popup window that only exists when menu is down.
  184.     BC_Popup *popup; 
  185.     int active;
  186.     int type;
  187. };
  188.  
  189. class BC_SubMenu : public BC_MenuPopup
  190. {
  191. public:
  192.     BC_SubMenu();
  193.     virtual ~BC_SubMenu();
  194.  
  195.     int add_submenuitem(BC_MenuItem *item);
  196. };
  197.  
  198.  
  199.  
  200. #endif
  201.