From d7b88a3bcc7e76f38ee5799be7722fd5a10781ef Mon Sep 17 00:00:00 2001
From: Michael R Sweet The value() method is used to get or
-set the string that is displayed:
-
- The value() method
+is used to get or set the string that is displayed: The type Fl_Boxtype stored and returned in
-Fl_Widget::box() is an enumeration defined in
-<FL/Enumerations.H>:
-
- The type Fl_Boxtype stored and returned in
+Fl_Widget::box() is an enumeration defined in
+s.H>:
+3 - Common Widgets and Attributes
-
-This chapter describes many of the widgets that are provided with FLTK and covers how
-to query and set the standard attributes.
-
+
+3 - Common Widgets and Attributes
+ This chapter describes many of the widgets that are provided with FLTK
+and covers how to query and set the standard attributes.
Buttons
-
-FLTK provides many types of buttons:
-
-
-
-
-For all of these buttons you just need to include the corresponding
-<FL/Fl_xyz_Button.H> header file. The constructor takes the
-bounding box of the button and optionally a label string:
-
-
-Fl_Button *button = new Fl_Button(x, y, width, height, "label");
+ FLTK provides many types of buttons:
+
+
+ For all of these buttons you just need to include the corresponding
+<FL/Fl_xyz_Button.H> header file. The constructor takes the
+bounding box of the button and optionally a label string:
+
+
+Fl_Button *button = new Fl_Button(x, y, width, height, "label");
Fl_Light_Button *lbutton = new Fl_Light_Button(x, y, width, height);
-Fl_Round_Button *rbutton = new Fl_Round_Button(x, y, width, height, "label");
-
-
-Each button has an associated type()
-which allows it to behave as a push button, toggle button, or radio button:
-
-
-button->type(0);
-lbutton->type(FL_TOGGLE_BUTTON);
-rbutton->type(FL_RADIO_BUTTON);
-
-
-For toggle and radio buttons, the value()
-method returns the current button state (0 = off, 1 = on). The
-set() and
-clear() methods can be used on toggle
-buttons to turn a toggle button on or off, respectively. Radio buttons can
-be turned on with the setonly()
-method; this will also turn off other radio buttons in the current group.
-
+Fl_Round_Button *rbutton = new Fl_Round_Button(x, y, width, height, "label");
+
+
+ Each button has an associated
+type() which allows it to behave as a push button, toggle
+button, or radio button:
+
+
+button->type(0);
+lbutton->type(FL_TOGGLE_BUTTON);
+rbutton->type(FL_RADIO_BUTTON);
+
+
+ For toggle and radio buttons, the
+value() method returns the current button state (0 = off,
+1 = on). The set() and
+clear() methods can be used on toggle buttons to turn a
+toggle button on or off, respectively. Radio buttons can be turned on
+with the setonly() method; this
+will also turn off other radio buttons in the current group.
Text
-
-FLTK provides several text widgets for displaying and receiving text:
-
-
-
-
-The Fl_Output and Fl_Multiline_Output widgets allow the
-user to copy text from the output field but not change it.
-
-
-Fl_Input *input = new Fl_Input(x, y, width, height, "label");
-input->value("Now is the time for all good men...");
-
-
+ FLTK provides several text widgets for displaying and receiving text:
+
+
+ The Fl_Output and Fl_Multiline_Output widgets allow
+the user to copy text from the output field but not change it.
+
+
+Fl_Input *input = new Fl_Input(x, y, width, height, "label");
+input->value("Now is the time for all good men...");
+
+
Valuators
-
-Unlike text widgets, valuators keep track of numbers instead of strings.
-FLTK provides the following valuators:
-
-
-
-
-The value() method gets and sets the
-current value of the widget. The
-minimum() and maximum
-methods set the range of values that are reported by the widget.
-
+ Unlike text widgets, valuators keep track of numbers instead of
+strings. FLTK provides the following valuators:
+
+
+ The value()
+ method gets and sets the current value of the widget. The
+minimum() and
+maximum methods set the range of values that are reported by
+the widget.
Groups
-
-The Fl_Group widget class is used as a general purpose "container"
-widget. Besides grouping radio buttons, the groups are used to encapsulate
-windows, tabs, and scrolled windows. The following group classes are available
-with FLTK:
-
-
-
-
+ The Fl_Group widget class is used as a general purpose
+"container" widget. Besides grouping radio buttons, the groups are
+used to encapsulate windows, tabs, and scrolled windows. The following
+group classes are available with FLTK:
+
+
Setting the Size and Position of Widgets
-
-The size and position of widgets is usually set when you create them. You
-can change this at any time using the position, resize(),
-and size methods:
-
-
-button->position(x, y);
-group->resize(x, y, width, height);
-window->size(width, height);
-
-
-Changing the size or position of a widget will cause a redraw of that widget
-and its children.
-
-Colors
-
-FLTK manages a virtual color palette of "standard" colors. The
-standard colors are:
-
-
-
-
-The widget color can be set using the color() method:
-
-
-button->color(FL_RED);
-
-
-Similarly, the label color can be set using the labelcolor() method:
-
-
-button->labelcolor(FL_WHITE);
-
-
-Box Types
-
-
+
+button->position(x, y);
+group->resize(x, y, width, height);
+window->size(width, height);
+
+
+ Changing the size or position of a widget will cause a redraw of that
+widget and its children.
+Colors
+ FLTK manages a virtual color palette of "standard" colors. The
+standard colors are:
+
+
+ The widget color can be set using the color() method:
+
+
+button->color(FL_RED);
+
+
+ Similarly, the label color can be set using the labelcolor()
+ method:
+
+
+button->labelcolor(FL_WHITE);
+
+
+Box Types
+
+ The drawing function is passed the bounding box and background color +for the widget: +
void xyz_draw(int x, int y, int w, int h, Fl_Color c) {
...
}
-
-
-A simple drawing function might fill a rectangle with the given
-color and then draw a black outline:
-
-++ + A simple drawing function might fill a rectangle with the given color +and then draw a black outline: +
void xyz_draw(int x, int y, int w, int h, Fl_Color c) {
fl_color(c);
fl_rectf(x, y, w, h);
fl_color(FL_BLACK);
fl_rect(x, y, w, h);
}
-
-
+
+
+ The Fl::set_boxtype() method adds or replaces the specified +box type: +
#define XYZ_BOX FL_FREE_BOXTYPE Fl::set_boxtype(XYZ_BOX, xyz_draw, 1, 1, 2, 2); -- -The last 4 arguments to Fl::set_boxtype() are the offsets -for the bounding box that should be subtracted when drawing the label -inside the box. - -
+ To setup your own label type you will need to write two functions to +draw and measure the label. The draw function is called with a pointer +to a Fl_Label structure containing the +label information, the bounding box for the label, and the label +alignment: +
void xyz_draw(Fl_Label *label, int x, int y, int w, int h, Fl_Align align) {
...
}
-
-
-The label should be drawn inside this bounding box, even if
-FL_ALIGN_INSIDE is not enabled. The function is not called if
-the label value is NULL.
-
-The measure function is called with a pointer to a Fl_Label structure -and references to the width and height: - -
-void xyz_measure(Fl_Label *label, int &w, int &h) {
+
+
+ The label should be drawn inside this bounding box, even if
+FL_ALIGN_INSIDE is not enabled. The function is not called if the
+label value is NULL.
+The measure function is called with a pointer to a +Fl_Label structure and references to the width and height:
+
+void xyz_measure(Fl_Label *label, int w int h {
...
}
-
-
-It should measure the size of the label and set w and h to
-the size it will occupy.
-
+
+
+ It should measure the size of the label and set w and h
+ to the size it will occupy.
+ The Fl::set_labeltype method creates a label type using your +draw and measure functions: +
#define XYZ_LABEL FL_FREE_LABELTYPE Fl::set_labeltype(XYZ_LABEL, xyz_draw, xyz_measure); -- -The label type number n can be any integer value starting at -the constant FL_FREE_LABELTYPE. Once you have added the label -type you can use the labeltype() method to select your label -type. - -
The Fl::set_labeltype method can also be used to overload an -existing label type such as FL_NORMAL_LABEL. - -
The FL_SYMBOL_LABEL label type uses the label() -string to look up a small drawing procedure in a hash table. For -historical reasons the string always starts with '@', if it starts with -something else (or the symbol is not found) the label is drawn -normally: - -

The Fl::set_labeltype method can also be used to overload +an existing label type such as FL_NORMAL_LABEL.
+The FL_SYMBOL_LABEL label type uses the label() + string to look up a small drawing procedure in a hash table. For +historical reasons the string always starts with '@', if it starts with +something else (or the symbol is not found) the label is drawn +normally: +

+ Callbacks are functions that are called when the value of a widget +changes. A callback function is sent a Fl_Widget pointer of +the widget that changed and optionally a pointer to data of some sort: +
void xyz_callback(Fl_Widget *w, void *data) {
...
}
-
-
-The callback() method sets the callback function for a widget. You
-can optionally pass a pointer to some data needed for the callback:
-
-++ + The callback() method sets the callback function for a +widget. You can optionally pass a pointer to some data needed for the +callback: +
int xyz_data; -button->callback(xyz_callback, &xyz_data); -- -Normally callbacks are performed only when the value of the widget -changes. You can change this using the -when() method: - -
-button->when(FL_WHEN_NEVER); -button->when(FL_WHEN_CHANGED); -button->when(FL_WHEN_RELEASE); -button->when(FL_WHEN_RELEASE_ALWAYS); -button->when(FL_WHEN_ENTER_KEY); -button->when(FL_WHEN_ENTER_KEY_ALWAYS); -button->when(FL_WHEN_CHANGED | FL_WHEN_NOT_CHANGED); -- +button->callback(xyz_callback, data); + + + Normally callbacks are performed only when the value of the widget +changes. You can change this using the +when() method: +
+button->when(FL_WHEN_NEVER); +button->when(FL_WHEN_CHANGED); +button->when(FL_WHEN_RELEASE); +button->when(FL_WHEN_RELEASE_ALWAYS); +button->when(FL_WHEN_ENTER_KEY); +button->when(FL_WHEN_ENTER_KEY_ALWAYS); +button->when(FL_WHEN_CHANGED | FL_WHEN_NOT_CHANGED); ++
-button->shortcut(FL_Enter); -button->shortcut(FL_SHIFT + 'b'); -button->shortcut(FL_CTRL + 'b'); -button->shortcut(FL_ALT + 'b'); -button->shortcut(FL_CTRL + FL_ALT + 'b'); -- -The shortcut value is the key event value (the ASCII value or one of -the special keys like FL_Enter) combined with any modifiers -(like shift, alt, and control). - - - + Shortcuts are key sequences that activate widgets (usually buttons or +menu items). The shortcut() method registers a shortcut for a +widget: +
+button->shortcut(FL_Enter); +button->shortcut(FL_SHIFT + 'b'); +button->shortcut(FL_CTRL + 'b'); +button->shortcut(FL_ALT + 'b'); +button->shortcut(FL_CTRL + FL_ALT + 'b'); ++ + The shortcut value is the key event value (the ASCII value or one of +the special keys like FL_Enter) combined with any modifiers +(like shift, alt, and control). \ No newline at end of file -- cgit v1.2.3