##
20.4.2 Form Objects

Form objects (returned by `make_form()` above) have the following methods. Each method corresponds to a C function whose name is prefixed with "`fl_`"; and whose first argument is a form pointer; please refer to the official FORMS documentation for descriptions.

All the `add_*()` methods return a Python object representing the FORMS object. Methods of FORMS objects are described below. Most kinds of FORMS object also have some methods specific to that kind; these methods are listed here.

`show_form`(placement, bordertype, name)
  Show the form.

`hide_form`()
  Hide the form.

`redraw_form`()
  Redraw the form.

`set_form_position`(x, y)
  Set the form's position.

`freeze_form`()
  Freeze the form.

`unfreeze_form`()
  Unfreeze the form.

`activate_form`()
  Activate the form.

`deactivate_form`()
  Deactivate the form.

`bgn_group`()
  Begin a new group of objects; return a group object.

`end_group`()
  End the current group of objects.

`find_first`()
  Find the first object in the form.

`find_last`()
  Find the last object in the form.

`add_box`(type, x, y, w, h, name)
  Add a box object to the form. No extra methods.

`add_text`(type, x, y, w, h, name)
  Add a text object to the form. No extra methods.

`add_clock`(type, x, y, w, h, name)
  Add a clock object to the form.
  Method: `get_clock()`.

`add_button`(type, x, y, w, h, name)
  Add a button object to the form.
  Methods: `get_button()`, `set_button()`.

`add_lightbutton`(type, x, y, w, h, name)
  Add a lightbutton object to the form.
  Methods: `get_button()`, `set_button()`.

`add_roundbutton`(type, x, y, w, h, name)
  Add a roundbutton object to the form.
  Methods: `get_button()`, `set_button()`.

`add_slider`(type, x, y, w, h, name)
  Add a slider object to the form.
  Methods: `set_slider_value()`, `get_slider_value()`, `set_slider_bounds()`, `get_slider_bounds()`, `set_slider_return()`, `set_slider_size()`, `set_slider_precision()`, `set_slider_step()`.

`add_valslider`(type, x, y, w, h, name)
  Add a valslider object to the form.
  Methods: `set_slider_value()`, `get_slider_value()`, `set_slider_bounds()`, `get_slider_bounds()`, `set_slider_return()`, `set_slider_size()`, `set_slider_precision()`, `set_slider_step()`.

`add_dial`(type, x, y, w, h, name)
  Add a dial object to the form.
  Methods: `set_dial_value()`, `get_dial_value()`, `set_dial_bounds()`, `get_dial_bounds()`.

`add_positioner`(type, x, y, w, h, name)
  Add a positioner object to the form.
  Methods: `set_positioner_xvalue()`, `set_positioner_yvalue()`, `set_positioner_xbounds()`, `set_positioner_ybounds()`, `get_positioner_xvalue()`, `get_positioner_yvalue()`, `get_positioner_xbounds()`, `get_positioner_ybounds()`.

`add_counter`(type, x, y, w, h, name)
  Add a counter object to the form.
  Methods: `set_counter_value()`, `get_counter_value()`, `set_counter_bounds()`, `set_counter_step()`, `set_counter_precision()`, `set_counter_return()`.

`add_input`(type, x, y, w, h, name)
  Add a input object to the form.
  Methods: `set_input()`, `get_input()`, `set_input_color()`, `set_input_return()`.

`add_menu`(type, x, y, w, h, name)
  Add a menu object to the form.
  Methods: `set_menu()`, `get_menu()`, `addto_menu()`.

`add_choice`(type, x, y, w, h, name)
  Add a choice object to the form.
  Methods: `set_choice()`, `get_choice()`, `clear_choice()`, `addto_choice()`, `replace_choice()`, `delete_choice()`, `get_choice_text()`, `set_choice_fontsize()`, `set_choice_fontstyle()`.

`add_browser`(type, x, y, w, h, name)
  Add a browser object to the form.
  Methods: `set_browser_topline()`, `clear_browser()`, `add_browser_line()`, `addto_browser()`, `insert_browser_line()`, `delete_browser_line()`, `replace_browser_line()`, `get_browser_line()`, `load_browser()`, `get_browser_maxline()`, `select_browser_line()`, `deselect_browser_line()`, `deselect_browser()`, `isselected_browser_line()`, `get_browser()`, `set_browser_fontsize()`, `set_browser_fontstyle()`, `set_browser_specialkey()`.

`add_timer`(type, x, y, w, h, name)
  Add a timer object to the form.
  Methods: `set_timer()`, `get_timer()`.

Form objects have the following data attributes; see the FORMS documentation:

Name | C Type | Meaning
--- | --- | ---
`window` | int (read-only) | GL window id
`w` | float | form width
`h` | float | form height
`x` | float | form x origin
`y` | float | form y origin
`deactivated` | int | nonzero if form is deactivated
`visible` | int | nonzero if form is visible
`frozen` | int | nonzero if form is frozen
`doublebuf` | int | nonzero if double buffering on