00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef _FL_TOOL_BAR_H_
00023 #define _FL_TOOL_BAR_H_
00024
00025 #include "Fl_Bar.h"
00026 #include "Fl_Button.h"
00027 #include "Fl_Menu_Button.h"
00028 #include "Fl_Divider.h"
00029
00030 class Fl_Tool_Button;
00031
00042 class Fl_Tool_Bar : public Fl_Bar
00043 {
00044 public:
00046 static Fl_Named_Style* default_style;
00047
00051 enum TbSize {
00052 TB_SIZE_SMALL = 0,
00053 TB_SIZE_BIG,
00054 TB_SIZE_DEFAULT
00055 };
00056
00060 Fl_Tool_Bar(int x, int y, int w, int h, const char *label=0);
00061
00065 Fl_Tool_Bar(const char* l = 0,int layout_size=30,Fl_Align layout_al=FL_ALIGN_TOP,int label_w=-1);
00066
00068 ~Fl_Tool_Bar();
00069
00074 static void default_callback(Fl_Widget *button, void *arg);
00075
00083 Fl_Tool_Button *add_button(Fl_Image *image, long id, const char *label=0, const char *tip=0);
00092 Fl_Tool_Button *add_button(const char *label, const char *tip, Fl_Image *image=0, Fl_Callback *cb=0, void *data=0);
00093
00101 Fl_Tool_Button *add_toggle(Fl_Image *image, long id, const char *label=0, const char *tip=0);
00110 Fl_Tool_Button *add_toggle(const char *label, const char *tip, Fl_Image *image=0, Fl_Callback *cb=0, void *data=0);
00111
00115 Fl_Divider *add_divider();
00116
00118 Fl_Widget *item() const { return m_item; }
00120 void item(Fl_Widget *i) { m_item = i; }
00121
00123 virtual void draw();
00124
00126 virtual void layout();
00127
00129 virtual int handle(int ev);
00130
00132 virtual void preferred_size(int &w, int &h) const;
00133
00135 static void button_glyph(const Fl_Widget* widget, int glyph, int x,int y,int w,int h, Fl_Flags flags);
00136
00141 int spacing() const { return layout_spacing(); }
00146 void spacing(int v) { layout_spacing(v); }
00147
00152 static void set_icon_size(TbSize size, int w, int h) { m_icon_sizes[size][0] = w; m_icon_sizes[size][1] = h; }
00157 static void get_icon_size(TbSize size, int &w, int &h) { w = m_icon_sizes[size][0]; h = m_icon_sizes[size][1]; }
00158
00163 TbSize tb_size() const { return (m_tb_size==TB_SIZE_DEFAULT) ? default_tb_size() : m_tb_size; }
00168 void tb_size(TbSize s) { m_tb_size = s; }
00169
00174 static TbSize default_tb_size() { return m_tb_def_size; }
00179 static void default_tb_size(TbSize s) { m_tb_def_size = s; }
00180
00181 private:
00182 TbSize m_tb_size;
00183 static TbSize m_tb_def_size;
00184 static int m_icon_sizes[2][2];
00185
00186 Fl_Widget *m_item;
00187
00188 Fl_Menu_ *m_menu;
00189 Fl_Widget *m_menubut, *m_right;
00190
00191 static void cb_menu(Fl_Widget *w, void *data);
00192
00193 void ctor_init();
00194 };
00195
00196 class Fl_Tool_Button : public Fl_Button
00197 {
00198 public:
00200 static Fl_Named_Style* default_style;
00201
00205 enum TbTextPos {
00206 POS_BOTTOM = 1,
00207 POS_RIGHT,
00208 POS_DEFAULT
00209 };
00210
00214 enum TbShowMode {
00215 SHOW_TEXT = 1,
00216 SHOW_IMAGE,
00217 SHOW_BOTH,
00218 SHOW_AUTO,
00219 SHOW_DEFAULT
00220 };
00221
00223 Fl_Tool_Button(Fl_Tool_Bar *bar);
00224 virtual ~Fl_Tool_Button();
00225
00234 static Fl_Tool_Button *create(Fl_Tool_Bar *bar, Fl_Image *image, const char *label, const char *tooltip, long id);
00235
00245 static Fl_Tool_Button *create(Fl_Tool_Bar *bar, Fl_Image *image, const char *label, const char *tooltip, Fl_Callback *cb, void *data);
00246
00248 virtual void draw();
00249
00251 virtual void layout();
00252
00253 virtual void preferred_size(int &w, int &h) const;
00254
00258 TbShowMode showmode() const { return m_showmode; }
00262 void showmode(TbShowMode s) { m_showmode = s; }
00263
00267 TbTextPos textpos() const { return m_textpos; }
00271 void textpos(TbTextPos p) { m_textpos = p; }
00272
00276 static TbShowMode default_showmode() { return m_def_showmode; }
00280 static void default_showmode(TbShowMode s) { m_def_showmode = s; }
00281
00285 static TbTextPos default_textpos() { return m_def_textpos; }
00289 static void default_textpos(TbTextPos p) { m_def_textpos = p; }
00290
00291 private:
00292 Fl_Tool_Bar *m_bar;
00293 TbShowMode m_showmode;
00294 TbTextPos m_textpos;
00295
00296 Fl_Image *small, *big;
00297
00298 static TbShowMode m_def_showmode;
00299 static TbTextPos m_def_textpos;
00300 };
00301
00302 #endif