I

(<id> )
Sets the object passed to a form in the '*ID' global via the URL into the form's 'obj' property. Takes care of handling enable/disable, locking, and displaying the object's name or similar property. Usually called in a HTML '<hN>' tag, or implicitly in 'idForm'. See also idForm.
(idForm Entity Cho Var Cls Able Del Lst . Prg)
idForm is used to display and edit objects in the system. Here is an example from the demo application included with the PicoLisp distribution, in item.l:

    (menu ,"Item"
       (idForm ,"Item" '(choItem) 'nr '+Item T '(may Delete) '((: nr) " -- " (: nm))
          (<grid> 4
             ,"Number" NIL (gui '(+E/R +NumField) '(nr : home obj) 10) NIL
             ,"Description" NIL (gui '(+E/R +Cue +TextField) '(nm : home obj) ,"Item" 30) NIL
             ,"Supplier" (choCuSu 0)
             (gui '(+E/R +Obj +TextField) '(sup : home obj) '(nm +CuSu) 30)
             (gui '(+View +TextField) '(field -1 'obj 'ort) 30)
             ,"Inventory" NIL (gui '(+E/R +NumField) '(inv : home obj) 12)
             (gui '(+View +NumField) '(cnt> (: home obj)) 12)
             ,"Price" NIL (gui '(+E/R +FixField) '(pr : home obj) 2 12) )
          (--)
          (<grid> 2
             ,"Memo" (gui '(+BlobField) '(txt : home obj) 60 8)
             ,"Picture"
             (prog
                (gui '(+Able +UpField) '(not (: home obj jpg)) 30)
                (gui '(+Drop +Button) '(field -1)
                   '(if (: home obj jpg) ,"Uninstall" ,"Install")
                   '(cond
                      ((: home obj jpg)
                         (ask ,"Uninstall Picture?"
                            (put!> (: home top 1 obj) 'jpg NIL) ) )
                      ((: drop) (blob! (: home obj) 'jpg @)) ) ) ) )
          (<spread> NIL (editButton T))
          (gui '(+Upd +Img)
             '(and (: home obj jpg) (allow (blob (: home obj) 'jpg)))
             ,"Picture" ) ) )
    
The first argument to idForm is used to create a header, in our case "Item". This is followed by 'choItem(), which is a search function. This allows us to use both search and edit functionality from the same page. Then we have two arguments, 'nr '+Item used to count how many objects of a certain type is in the database.

The T argument that follows decides whether a user can edit objects in this form or not. Next up is '(may Delete), checking if the current user has permission to delete objects. Finally, the list '((: nr) "--" (: nm)) is passed to the idForm function. This is used to create a heading that is displayed when a single object has been selected. Our example will use the 'nr' and 'nm' properties of an +Item object combined with " -- ". The result is something like this: "Item: 2 -- Spare Part".

See also diaform, form.
+Icon
This class is somewhat similar to +Img, but is more dynamic. +Icon takes an 'exe' which can be used to show different icons depending on the situation.
+Img
Image form field. This field can take 4 arguments that affect the resulting html. These arguments are Alt, Url, Dx and Dy.

    (gui '(+Upd +Img)
    '(and (: home obj jpg) (allow (blob (: home obj) 'jpg)))
    ,"Picture" "http://picolisp.com" 35 55) ) )
    
Alt, Dx and Dy all set properties in the resulting img tag:

    <img src="..." alt="Picture" width="35" height="55 id=".." />
    
Adding a Url argument turns the resulting image into a link:

    <a href="http://picolisp.com"><img src="..." alt="Picture" width="35" height="55 id=".."/></a>
    
See also +gui and +Upd.
+Init
Prefix class used to give an initial value to a GUI component. Takes an expression to give the field an initial value.

    (gui '(+Init +TextField) "Initial value" 30)
    
+InsRowButton
This button inserts a new, empty, row in a chart. See also +Tiny, +JS, +Able, +Tip, +Button.