| // |
| // "$Id: Fl_Choice.H 7981 2010-12-08 23:53:04Z greg.ercolano $" |
| // |
| // Choice header file for the Fast Light Tool Kit (FLTK). |
| // |
| // Copyright 1998-2010 by Bill Spitzak and others. |
| // |
| // This library is free software; you can redistribute it and/or |
| // modify it under the terms of the GNU Library General Public |
| // License as published by the Free Software Foundation; either |
| // version 2 of the License, or (at your option) any later version. |
| // |
| // This library is distributed in the hope that it will be useful, |
| // but WITHOUT ANY WARRANTY; without even the implied warranty of |
| // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
| // Library General Public License for more details. |
| // |
| // You should have received a copy of the GNU Library General Public |
| // License along with this library; if not, write to the Free Software |
| // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 |
| // USA. |
| // |
| // Please report all bugs and problems on the following page: |
| // |
| // http://www.fltk.org/str.php |
| // |
| |
| /* \file |
| Fl_Choice widget . */ |
| |
| #ifndef Fl_Choice_H |
| #define Fl_Choice_H |
| |
| #include "Fl_Menu_.H" |
| |
| /** |
| \class Fl_Choice |
| \brief A button that is used to pop up a menu. |
| |
| This is a button that, when pushed, pops up a menu (or hierarchy of menus) |
| defined by an array of Fl_Menu_Item objects. |
| Motif calls this an OptionButton. |
| |
| The only difference between this and a Fl_Menu_Button is that the name of |
| the most recent chosen menu item is displayed inside the box, while the |
| label is displayed outside the box. However, since the use of this is most |
| often to control a single variable rather than do individual callbacks, |
| some of the Fl_Menu_Button methods are redescribed here in those terms. |
| |
| When the user picks an item off the menu the value() is set to that item |
| and then the item's callback is done with the menu_button as the |
| \c Fl_Widget* argument. If the item does not have a callback the |
| menu_button's callback is done instead. |
| |
| All three mouse buttons pop up the menu. The Forms behavior of the first |
| two buttons to increment/decrement the choice is not implemented. This |
| could be added with a subclass, however. |
| |
| The menu will also pop up in response to shortcuts indicated by putting |
| a '\&' character in the label(). See Fl_Button::shortcut(int s) for a |
| description of this. |
| |
| Typing the shortcut() of any of the items will do exactly the same as when |
| you pick the item with the mouse. The '\&' character in item names are |
| only looked at when the menu is popped up, however. |
| |
| \image html choice.png |
| \image latex choice.png "Fl_Choice" width=4cm |
| \todo Refactor the doxygen comments for Fl_Choice changed() documentation. |
| |
| \li <tt>int Fl_Widget::changed() const</tt> |
| This value is true the user picks a different value. <em>It is turned |
| off by value() and just before doing a callback (the callback can turn |
| it back on if desired).</em> |
| \li <tt>void Fl_Widget::set_changed()</tt> |
| This method sets the changed() flag. |
| \li <tt>void Fl_Widget::clear_changed()</tt> |
| This method clears the changed() flag. |
| \li <tt>Fl_Boxtype Fl_Choice::down_box() const</tt> |
| Gets the current down box, which is used when the menu is popped up. |
| The default down box type is \c FL_DOWN_BOX. |
| \li <tt>void Fl_Choice::down_box(Fl_Boxtype b)</tt> |
| Sets the current down box type to \p b. |
| */ |
| class FL_EXPORT Fl_Choice : public Fl_Menu_ { |
| protected: |
| void draw(); |
| public: |
| int handle(int); |
| |
| Fl_Choice(int X, int Y, int W, int H, const char *L = 0); |
| |
| /** |
| Gets the index of the last item chosen by the user. |
| The index is zero initially. |
| */ |
| int value() const {return Fl_Menu_::value();} |
| |
| int value(int v); |
| |
| int value(const Fl_Menu_Item* v); |
| }; |
| |
| #endif |
| |
| // |
| // End of "$Id: Fl_Choice.H 7981 2010-12-08 23:53:04Z greg.ercolano $". |
| // |