Here's something else... I changed the example to:
<class name="box1" width="100" height="100"
bgcolor="${lz.colors['gold4']}" />
<class name="box2" width="100" height="100"
bgcolor="${lz.colors.iceblue1}" />
Which works fine in SWF8, but doesn't show the colors for the boxes in
DHTML (If I remove the constraints from the first one, I get a compiler
error, and if I remove them from the second, it shows black and gives an
"Invalid value for bgcolor" message in the Debugger) and gives this
error in SWF9:
TypeError: Error #1034: Type Coercion failed: cannot convert
[EMAIL PROTECTED] to LzEventable.
at LzNode/applyConstraintMethod()[C:\Documents and
Settings\laszlo\Local Settings\Temp\lzswf9\lzgen2652\LzNode.as:1048]
at LzNode/applyConstraintExpr()[C:\Documents and
Settings\laszlo\Local Settings\Temp\lzswf9\lzgen2652\LzNode.as:1083]
at LzNode/__LZresolveReferences()[C:\Documents and
Settings\laszlo\Local Settings\Temp\lzswf9\lzgen2652\LzNode.as:943]
at LzNode/__LZcallInit()[C:\Documents and Settings\laszlo\Local
Settings\Temp\lzswf9\lzgen2652\LzNode.as:424]
at LzCanvas/__LZcallInit()[C:\Documents and Settings\laszlo\Local
Settings\Temp\lzswf9\lzgen2652\LzCanvas.as:443]
at LzCanvas/__LZinstantiationDone()[C:\Documents and
Settings\laszlo\Local Settings\Temp\lzswf9\lzgen2652\LzCanvas.as:390]
at LzInstantiatorService/makeSomeViews()[C:\Documents and
Settings\laszlo\Local
Settings\Temp\lzswf9\lzgen2652\LzInstantiatorService.as:193]
at LzInstantiatorService/checkQ()[C:\Documents and
Settings\laszlo\Local
Settings\Temp\lzswf9\lzgen2652\LzInstantiatorService.as:130]
at Function/http://adobe.com/AS3/2006/builtin::call()
at LzEvent/sendEvent()[C:\Documents and Settings\laszlo\Local
Settings\Temp\lzswf9\lzgen2652\LzEvent.as:92]
at LzIdleService/__idleupdate()[C:\Documents and
Settings\laszlo\Local Settings\Temp\lzswf9\lzgen2652\LzIdleService.as:53]
at LzIdleKernel$/__update()[C:\Documents and Settings\laszlo\Local
Settings\Temp\lzswf9\lzgen2652\LzIdleKernel.as:27]
P T Withington wrote:
But he should also be able to say:
bgcolor="iceblue"
and/or
bgcolor="${this.acceptValue('iceblue', 'color')}"
Which might be more instructive. In the first case, you are
specifying a constant color, and since bgcolor is an attribute with a
type of `color` the token `iceblue` is acceptable as a value (not
tested). In the second case, you are using a constraint, and (at
least as of now), constraints are simply expressions that _directly_
set the value of an attribute -- they _do_not_ pass through the data
interface, which converts string representations into values according
to type. (I think this is desirable.) So, in the second case, I am
calling the (currently unpublished) `acceptValue` method, which takes
a string representation of a value and parses it according to the
specified type.
There should be a better way. Perhaps I should be able to say:
bgcolor="$accept{'iceblue'}"
(meaning use acceptValue and the attribute's declared type to parse
the value of the expression)? We've already got $path and $style, why
not $accept (unless someone can come up with a better name). I think
this would allow me to say something like:
<inputtext id="color" />
<view bgcolor="$accept{color.text}" />
would that be useful?
On 2008-11-13, at 21:16EST, Max Carlson wrote:
You should be able to just set it to bgcolor="lz.colors.iceblue4" -
constraints shouldn't be required. Also note that colors aren't in
global[] anymore - use lz.colors[''] instead.
J Crowley wrote:
So, I'm working on fixing one of the color dguide examples. The
description on the doc page (docs/developers/color.html) reads:
-----
To specify any color but the 16 which are usable by name, use
0xFFFFFF hex codes. Alternatively, the non-standard colors named in
|lps/components/base/colors.lzx| were added to OpenLaszlo's global
namespace. Those colors can also be employed by name, but note the
${constraint} syntax around the bgcolor specification. There are two
ways to make the constraint: |bgcolor="${global['iceblue1']}"| is
the same as |bgcolor="${iceblue1}"|.
-----
The example this describes is:
-----
<canvas debug="true">
<simplelayout axis="x" spacing="10"/>
<class name="box1" width="100" height="100"
bgcolor="${global['gold4']}" />
<class name="box2" width="100" height="100" bgcolor="${iceblue1}" />
<box1 id="sun">
<text text="Sun"/>
</box1>
<box2 id="mystic">
<text fgcolor="0xFFFFFF" text="Mystic"/>
</box2>
</canvas>
-----
Thing is, the only way to get the example to work is to change
bgcolor="${iceblue1}" to bgcolor="${lz.colors.iceblue1}", and trying
to use the global['gold4'] syntax doesn't actually work. So my
question is: Is the description in the documentation wrong?
Because doing it the way the description states results in a
Debugger error. (Keep in mind I'm using the docs on openlaszlo.org,
since I can't build locally, so if the description has already been
changed, let me know and I won't file the bug, but I do need to fix
the example. What I need to know then is, what is the new way of
doing this?)
Thanks!
Josh
--
Regards,
Max Carlson
OpenLaszlo.org