# R

`+/R`
  Base class for entity relations. `+/R` takes an entity specification, which is a cons pair with a relation in its CAR and an expression, evaluating to an object, in its CDR. For example:

          '(text : home obj)

  `+/R` is used in locked, read-only, GUI components. It does not modify the value in the object. However, that does not happen in '+Lock'ed components anyway. See also +E/R, +Lock.

`+Radio`
  A radio button component. Example:

          '(<grid> 2
              "Radio A" (gui '(+Var +Radio) '*DemoRadio NIL "A")
              "Radio B" (gui '(+Radio)  -1 "B")
              "Radio C" (gui '(+Radio)  -2 "C") )

  +Radio components only makes sense as a group. The first argument to a +Radio component is either NIL or a field reference. If the first argument is NIL, the component in question will be the 'leader component' of a radio group. In the example above "Radio A" holds this position.

  The following +Radio components in our example have a field reference as their first argument. This reference points back to the 'leader component' of the radio group. Our example uses a relative, numeric, offset to another field, but the symbolic name of a field can also be used.

  The 'leader component' of a radio group takes care of holding the resulting value. As can be seen above, the first +Radio component uses a prefix class, +Var. This class is used to connect a variable to a gui component. Since this is the 'leader' of the radio group, its variable (*DemoRadio) will be populated with the value that results from selecting one of the radio buttons.

  See also gui, +field and input fields.

`+RedoButton`
  A 'Redo' button. See change, +UndoButton.

`(repl Attr)`
  A form with a Lisp REPL. Runs a REPL in the browser and opens up the server completely, which is obviously a big security risk. Use with caution!

`+RgbPicker`
  A color picker component. Produces an html color picker, `<input type="color"...>` . See also +field.

`+Rid`
  Prefix class used to remove the form lock from a certain component, i.e. get rid of the lock.

         "Some text" (gui (+Rid +TextField) 30)

  The text field in the above example has had the lock removed by +Rid and is editable even when the current form as such is locked. Worth noting though is that the field may still have it's own `+Able` expression, which may happen to disable it again. See also +Able.

`(resetButton Lst)`
  This function creates a button that clears the content from a number of GUI fields. Takes a list of fields to clear as argument. Often used in search dialogs, as in the following example. This code comes from the demo app included in the PicoLisp distribution, in gui.l. In this case, the button created resets, clears, the GUI fields named nr, nm, pr, sup and query.

          (resetButton '(nr nm pr sup query)))

  The list of fields to clear can also contain an expression used to populate the field with a new value, instead of emptying the field.

          (resetButton '((dat date) nr nm))

  See also +Force, +ClrButton.

`(row D)`
  Returns the numeric offset of the current row (no arguments), or of a relative neighbor row (numeric argument) of the current chart. The implementation looks like this:

          (de row (D)
             (+ (: chart 1 ofs) (: chart 2) -1 (or D 0)) )

  See also prev.