[Openmcl-devel] Lisp User Interface LUI

Alexander Repenning ralex at cs.colorado.edu
Fri Jan 9 23:05:20 PST 2009


On Jan 9, 2009, at 12:58 AM, Terje Norderhaug wrote:

> On Jan 8, 2009, at 9:41 PM, Terje Norderhaug wrote:
>> On Jan 2, 2009, at 11:30 AM, Alexander Repenning wrote:
>>> This may be a good moment to discuss some of the ideas regarding
>>> the creation of LUI, the "Lisp User Interface as a cross platform,
>>> but Mac first" open source GUI tool.
>>
>> One technique that I have found very useful through the years is to
>> automatically generate the user interface from extended/amended type
>> declarations of the information to be presented and/or modified.  I
>> know other LISP developers are using similar strategies.
>
> Applying this to the previous examples, consider the "OpenGL 3D"  
> window in the earliers posting.  It contains sliders that (with  
> style information separated out) are represented by elements like  
> this in an XML based layout template:
>
>     <slider name="red" action="adjust-vertex-color-action" max- 
> value="1.0"/>
>
> Say the LISP application declares the red, green and blue editable  
> variable values to be real numbers between 0.0 and 1.0, using  
> constructs like:
>
>    (defvalue red-vertex 0.0
> 	(:documentation "the amount of red color")
> 	(:name "red")
>        (:type (real 0.0 1.0))
>        (:action adjust-vertex-color-action)
>        (:group color))


Makes sense. Have a peek at:

http://www.cs.colorado.edu/~ralex/papers/PDF/AVI08_end-user_visualizations.pdf 
   and
http://www.cs.colorado.edu/~ralex/papers/PDF/AVI08demo.pdf


>
>
> This declaration provides sufficient information to infer that the  
> red-quantity can be presented and modified using a slider on a Mac,  
> and that the value is between 0 and 1. Thus an external layout for  
> the window would no longer have to specify the use of sliders nor  
> the max value, but may use a more general value placeholder. This  
> leaves more to the user interface engine, opening for automatically  
> adapting the presentation to the platform and/or context.
>
> <unknown.tiff>
> Using that the application has more information about the editable  
> and presentable information, the layout might be simplified and more  
> of the presentation can be defined in the stylesheet (or  
> alternatively inferred by the interface engine), perhaps leading to  
> a layout like e.g. this:
>
> <application-window>
>   <value name="red"/>
>   <value name="green"/>
>   <value name="blue"/>
>  <visual name="opengl"/>
>  <group>
>    <visual name="opengl2"/>
>    <visual name="opengl3"/>
>  </group>
> </application-window>
>
> Here is a possible corresponding stylesheet:
>
> <style select="application-window" title="OpenGL 3D" margin="12"  
> width="300" height="300" display="column" align="stretch"  
> valign="stretch" />
> <style select="value" flex="1" display="row" minimize="vertical"  
> align="stretch" valign="middle"/>
> <style select="value#red" label="Red">
> <style select="value#green" label="Green">
> <style select="value#blue" label="Blue">
> <style select="value:label" align="right" width="50"/>
> <style select="visual" vflex="1"/>
> <style select="visual#opengl" display="row" margin-top="12/>
> <style select="group" display="row" align="stretch" valign="stretch"  
> vflex="2" margin-top="12"/>
> <style select="visual#opengl2" margin-right="6"/>
> <style select="visual#opengl3" margin-left="6"/>
>
> Processing this information, the user interface engine can build the  
> same window as the original "OpenGL 3D" application-window XMLisp  
> template.

I think one could do this with X-expression transformers.

alex


>
>
> -- Terje Norderhaug
>
> _______________________________________________
> Openmcl-devel mailing list
> Openmcl-devel at clozure.com
> http://clozure.com/mailman/listinfo/openmcl-devel

Prof. Alexander Repenning

University of Colorado
Computer Science Department
Boulder, CO 80309-430

vCard: http://www.cs.colorado.edu/~ralex/AlexanderRepenning.vcf


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.clozure.com/pipermail/openmcl-devel/attachments/20090110/d6709f2e/attachment.htm>


More information about the Openmcl-devel mailing list