##
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