00001
00002
00003
00004
00005
00006 #ifdef USE_TILE
00007 #ifndef TILEREG_TAB_H
00008 #define TILEREG_TAB_H
00009
00010 #include "tilereg-grid.h"
00011
00012
00013 class TabbedRegion : public GridRegion
00014 {
00015 public:
00016 TabbedRegion(const TileRegionInit &init);
00017
00018 virtual ~TabbedRegion();
00019
00020 enum
00021 {
00022 TAB_OFS_UNSELECTED,
00023 TAB_OFS_MOUSEOVER,
00024 TAB_OFS_SELECTED,
00025 TAB_OFS_MAX
00026 };
00027
00028 void set_tab_region(int idx, GridRegion *reg, tileidx_t tile_tab);
00029 GridRegion *get_tab_region(int idx);
00030 tileidx_t get_tab_tile(int idx);
00031 void activate_tab(int idx);
00032 int active_tab() const;
00033 int num_tabs() const;
00034 void enable_tab(int idx);
00035 void disable_tab(int idx);
00036 int find_tab(std::string tab_name) const;
00037
00038 virtual void update();
00039 virtual void clear();
00040 virtual void render();
00041 virtual void on_resize();
00042 virtual int handle_mouse(MouseEvent &event);
00043 virtual bool update_tip_text(std::string &tip);
00044 virtual bool update_tab_tip_text(std::string &tip, bool active);
00045 virtual bool update_alt_text(std::string &alt);
00046
00047 virtual const std::string name() const { return ""; }
00048
00049 protected:
00050 virtual void pack_buffers();
00051 virtual void draw_tag();
00052 virtual void activate() {}
00053
00054 bool invalid_index(int idx) const;
00055 bool active_is_valid() const;
00056
00057 int get_mouseover_tab(MouseEvent &event) const;
00058 void set_icon_pos(int idx);
00059 void reset_icons(int from_idx);
00060
00061
00062 int m_active;
00063 int m_mouse_tab;
00064 TileBuffer m_buf_gui;
00065
00066 struct TabInfo
00067 {
00068 GridRegion *reg;
00069 tileidx_t tile_tab;
00070 int ofs_y;
00071 int min_y;
00072 int max_y;
00073 int height;
00074 bool enabled;
00075 };
00076 std::vector<TabInfo> m_tabs;
00077 };
00078
00079 #endif
00080 #endif