1998-10-20 01:39:29 +04:00
|
|
|
//
|
2005-02-25 00:55:12 +03:00
|
|
|
// "$Id$"
|
1998-10-20 01:39:29 +04:00
|
|
|
//
|
|
|
|
// Choice header file for the Fast Light Tool Kit (FLTK).
|
|
|
|
//
|
2009-01-01 19:11:32 +03:00
|
|
|
// Copyright 1998-2009 by Bill Spitzak and others.
|
1998-10-20 01:39:29 +04:00
|
|
|
//
|
|
|
|
// 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.
|
|
|
|
//
|
2005-04-16 04:13:17 +04:00
|
|
|
// Please report all bugs and problems on the following page:
|
|
|
|
//
|
|
|
|
// http://www.fltk.org/str.php
|
1998-10-20 01:39:29 +04:00
|
|
|
//
|
1998-10-06 22:21:25 +04:00
|
|
|
|
2008-10-15 17:46:06 +04:00
|
|
|
/* \file
|
2008-09-16 11:26:22 +04:00
|
|
|
Fl_Choice widget . */
|
|
|
|
|
1998-10-06 22:21:25 +04:00
|
|
|
#ifndef Fl_Choice_H
|
|
|
|
#define Fl_Choice_H
|
|
|
|
|
|
|
|
#include "Fl_Menu_.H"
|
|
|
|
|
2008-09-16 10:49:08 +04:00
|
|
|
/**
|
|
|
|
\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.gif
|
2008-10-15 15:27:29 +04:00
|
|
|
\image latex choice.eps "Fl_Choice" width=4cm
|
2008-09-16 10:49:08 +04:00
|
|
|
\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.
|
|
|
|
*/
|
2002-08-14 20:49:38 +04:00
|
|
|
class FL_EXPORT Fl_Choice : public Fl_Menu_ {
|
1998-10-06 22:21:25 +04:00
|
|
|
protected:
|
2002-08-14 20:49:38 +04:00
|
|
|
void draw();
|
1998-10-06 22:21:25 +04:00
|
|
|
public:
|
2002-08-14 20:49:38 +04:00
|
|
|
int handle(int);
|
2008-09-16 10:49:08 +04:00
|
|
|
|
|
|
|
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.
|
|
|
|
*/
|
2002-08-14 20:49:38 +04:00
|
|
|
int value() const {return Fl_Menu_::value();}
|
2008-09-16 10:49:08 +04:00
|
|
|
|
|
|
|
int value(int v);
|
|
|
|
|
|
|
|
int value(const Fl_Menu_Item* v);
|
1998-10-06 22:21:25 +04:00
|
|
|
};
|
|
|
|
|
|
|
|
#endif
|
1998-10-20 01:39:29 +04:00
|
|
|
|
|
|
|
//
|
2005-02-25 00:55:12 +03:00
|
|
|
// End of "$Id$".
|
1998-10-20 01:39:29 +04:00
|
|
|
//
|