We have a bug for tinting/dolors not working in dhtml.
----- Original Message -----
From: "J Crowley" <[EMAIL PROTECTED]>
To: "P T Withington" <[EMAIL PROTECTED]>
Cc: "Platform Team" <[EMAIL PROTECTED]>; "Max Carlson"
<[EMAIL PROTECTED]>; "Laszlo-dev bug reporting" <[email protected]>
Sent: Friday, November 14, 2008 4:20 PM
Subject: Re: [Platform-team] lz.colors question
Thanks. There also seems to be a bug in that DHTML doesn't display colors
that are displayed in SWF8. I'll file that one as well...
P T Withington wrote:
That sounds like at least 2 bugs.
1) I'm not sure the compiler should be giving an error if you write an
expression as the initial (immediate) value for a color. The compiler
should just let that expression be passed through and evaluated at load
time. It is an optimization for the compiler to try to evaluate constant
colors at compile time, so it should not give an error if it cannot.
2) The constraint/swf9 issue is a bug in constraints. If you try to
constrain to an object property and the object is not an LzEventable
(i.e., cannot participate in our event system) then the constraint should
not be trying to 'listen' for events from that object. _Maybe_ you
should be getting a warning, but I don't think you need to. If you
thought you could update lz.colors and have constraints update, you would
have to say lz.colors.setAttribute('iceblue', ...) and that _would_ give
you an error, so you would know right then that something was rotten.
Please file both bugs with your test cases.
On 2008-11-14, at 14:46EST, J Crowley wrote:
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