<html><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><br><div><div>On Jan 9, 2009, at 12:58 AM, Terje Norderhaug wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div>On Jan 8, 2009, at 9:41 PM, Terje Norderhaug wrote:<br><blockquote type="cite">On Jan 2, 2009, at 11:30 AM, Alexander Repenning wrote:<br></blockquote><blockquote type="cite"><blockquote type="cite">This may be a good moment to discuss some of the ideas regarding<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">the creation of LUI, the "Lisp User Interface as a cross platform,<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">but Mac first" open source GUI tool.<br></blockquote></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">One technique that I have found very useful through the years is to<br></blockquote><blockquote type="cite">automatically generate the user interface from extended/amended type<br></blockquote><blockquote type="cite">declarations of the information to be presented and/or modified. I<br></blockquote><blockquote type="cite">know other LISP developers are using similar strategies.<br></blockquote><br>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:<br><br> <slider name="red" action="adjust-vertex-color-action" max-value="1.0"/><br><br>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:<br><br> (defvalue red-vertex 0.0<br><span class="Apple-tab-span" style="white-space:pre"> </span>(:documentation "the amount of red color")<br><span class="Apple-tab-span" style="white-space:pre"> </span>(:name "red")<br> (:type (real 0.0 1.0))<br> (:action adjust-vertex-color-action)<br> (:group color))</div></blockquote><div><br></div><div><br></div><div>Makes sense. Have a peek at:</div><div><br></div><div><a href="http://www.cs.colorado.edu/~ralex/papers/PDF/AVI08_end-user_visualizations.pdf">http://www.cs.colorado.edu/~ralex/papers/PDF/AVI08_end-user_visualizations.pdf</a> and</div><div><a href="http://www.cs.colorado.edu/~ralex/papers/PDF/AVI08demo.pdf">http://www.cs.colorado.edu/~ralex/papers/PDF/AVI08demo.pdf</a></div><div><br></div><br><blockquote type="cite"><div><br><br>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.<br><br><span><unknown.tiff></span><br>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:<br><br><application-window><br> <value name="red"/><br> <value name="green"/><br> <value name="blue"/><br> <visual name="opengl"/><br> <group><br> <visual name="opengl2"/><br> <visual name="opengl3"/><br> </group><br></application-window><br><br>Here is a possible corresponding stylesheet:<br><br><style select="application-window" title="OpenGL 3D" margin="12" width="300" height="300" display="column" align="stretch" valign="stretch" /><br><style select="value" flex="1" display="row" minimize="vertical" align="stretch" valign="middle"/><br><style select="value#red" label="Red"><br><style select="value#green" label="Green"><br><style select="value#blue" label="Blue"><br><style select="value:label" align="right" width="50"/><br><style select="visual" vflex="1"/><br><style select="visual#opengl" display="row" margin-top="12/><br><style select="group" display="row" align="stretch" valign="stretch" vflex="2" margin-top="12"/><br><style select="visual#opengl2" margin-right="6"/><br><style select="visual#opengl3" margin-left="6"/><br><br>Processing this information, the user interface engine can build the same window as the original "OpenGL 3D" application-window XMLisp template.</div></blockquote><div><br></div><div>I think one could do this with X-expression transformers.</div><div><br></div><div>alex</div><div><br></div><br><blockquote type="cite"><div><br><br>-- Terje Norderhaug<br><br>_______________________________________________<br>Openmcl-devel mailing list<br><a href="mailto:Openmcl-devel@clozure.com">Openmcl-devel@clozure.com</a><br>http://clozure.com/mailman/listinfo/openmcl-devel<br></div></blockquote></div><br><div apple-content-edited="true"> <span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><span class="Apple-style-span" style="border-collapse: separate; border-spacing: 0px 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; text-align: auto; -khtml-text-decorations-in-effect: none; text-indent: 0px; -apple-text-size-adjust: auto; text-transform: none; orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; "><span class="Apple-style-span" style="border-collapse: separate; border-spacing: 0px 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; text-align: auto; -khtml-text-decorations-in-effect: none; text-indent: 0px; -apple-text-size-adjust: auto; text-transform: none; orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; "><span class="Apple-style-span" style="border-collapse: separate; border-spacing: 0px 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; text-align: auto; -khtml-text-decorations-in-effect: none; text-indent: 0px; -apple-text-size-adjust: auto; text-transform: none; orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; "><p style="margin: 0.0px 0.0px 0.0px 0.0px"><font face="Helvetica" size="3" style="font: 12.0px Helvetica">Prof. Alexander Repenning</font></p><p style="margin: 0.0px 0.0px 0.0px 0.0px"><br class="khtml-block-placeholder"></p><p style="margin: 0.0px 0.0px 0.0px 0.0px">University of Colorado</p><p style="margin: 0.0px 0.0px 0.0px 0.0px">Computer Science Department</p><p style="margin: 0.0px 0.0px 0.0px 0.0px">Boulder, CO 80309-430</p><p style="margin: 0.0px 0.0px 0.0px 0.0px"><br class="khtml-block-placeholder"></p><p style="margin: 0.0px 0.0px 0.0px 0.0px"><font face="Helvetica" size="3" style="font: 12.0px Helvetica">vCard: <a href="http://www.cs.colorado.edu/~ralex/AlexanderRepenning.vcf">http://www.cs.colorado.edu/~ralex/AlexanderRepenning.vcf</a></font></p><br class="Apple-interchange-newline"></span></span></span></div></span> </div><br></body></html>