Thanks Alex this is exactly what I needed.  This language is truly the most
capable and integrated I've found.  Bravo a million times over.

-David


On Mon, Feb 17, 2014 at 2:19 AM, Alexander Burger <a...@software-lab.de>wrote:

> On Sun, Feb 16, 2014 at 01:51:18PM -0500, me wrote:
> > Are there any pro tips for how could I go about adding/altering css
> styling
> > via a css framework like bootstrap for example?  Including the necessary
> > files is no problem
>
> Right. Let me explain, just for the records: You can pass either a
> single CSS file to the 'html' function
>
>    (html 0 "Project" "my.css" NIL
>
> or a list of files
>
>    (html 0 "Project" '("@lib.css" "my1.css" "my2.css") NIL
>
> In the latter case, definitions in later CSS files override the earlier
> ones, so "my.css' can, for example, redefine things in "@lib.css".
>
> Normally, you'll set a globel in your main pogram
>
>    (setq *Css '("@lib.css" "my1.css" "my2.css"))
>
> and use that as in the individual pages
>
>    (html 0 "Project" *Css NIL
>
>
> > but I'm finding it difficult to specify CSS classes and
> > such for gui components.  Thank you in advance for your help.
>
> Most low-level HTML functions accept an style attribute argument, e.g.:
>
>    (de <div> (Attr . Prg)  # In @lib/xhtml.l
>
> You call it like
>
>    (<div> NIL
>       (<p> NIL
>          "Text" ) )
>
> This 'Attr' argument may be
>
> 1. A single atom. Then it should be a CSS class name
>
>    (<div> "myCls1"
>       (<p> "myCls2"
>
> 2. A cons pair, specifying an HTML attribute
>
>    (<div> '(id . "myId")
>
>    or
>
>    (<div> '(style . "margin: 60px;")
>
> 3. an arbitrarily nested combination of the above
>
>    (<div> '("myClass" (style . "margin: 60px;") ..)
>
>
> Finally (back to your original question ;-):
>
> If you have a 'gui' component like
>
>    (gui '(+E/R +Cue +TextField) '(key : home obj) "Test" 20)
>
> then you can pass styles in a  dynamical environment via
>
> 1. the <style> function
>
>    (<style> "myClass"
>       (gui '(+E/R +Cue +TextField) '(key : home obj) "Test" 20) )
>
>    or
>
>    (<style> '("myClass" (style . "margin: 60px;") ..)
>       ...
>       (gui '(+E/R +Cue +TextField) '(key : home obj) "Test" 20)
>       ... )
>
> 2. via the +Style prefix class
>
>       (gui '(+Style +E/R +Cue +TextField)
>          "myClass"
>          '(key : home obj)
>          "Test" 20 ) )
>
>
> Note that using '+Style' is the most powerful way, because the argument
> is evaluated whenever needed while the form is executing, so the style
> can change dynamically depending on the situation and the form contents:
>
>    (gui '(+Style +E/R +Cue +TextField)
>       '(cond
>          ((someCondition1) "myClass")
>          ((someOtherCondition "someOtherClass"))
>          (T "somethingElse) )
>       ...
>
> With that, the style will be adjusted upon arbitrary XMLHttpRequests
> from the "@lib/form.js" functionality.
>
> ♪♫ Alex
> --
> UNSUBSCRIBE: mailto:picolisp@software-lab.de?subject=Unsubscribe
>

Reply via email to