Main Page   Modules   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members  

Fl_Tool_Bar.h

00001 /*
00002  * $Id: Fl_Tool_Bar.h,v 1.9 2003/05/13 23:53:08 laza2000 Exp $
00003  *
00004  * Extended Fast Light Toolkit (EFLTK)
00005  * Copyright (C) 2002-2003 by EDE-Team
00006  * WWW: http://www.sourceforge.net/projects/ede
00007  *
00008  * Fast Light Toolkit (FLTK)
00009  * Copyright (C) 1998-2003 by Bill Spitzak and others.
00010  * WWW: http://www.fltk.org
00011  *
00012  * This library is distributed under the GNU LIBRARY GENERAL PUBLIC LICENSE
00013  * version 2. See COPYING for details.
00014  *
00015  * Author : Mikko Lahteenmaki
00016  * Email  : mikko@fltk.net
00017  *
00018  * Please report all bugs and problems to "efltk-bugs@fltk.net"
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

Generated on Thu Jul 31 15:33:45 2003 for eFLTK by doxygen1.2.15