[Laszlo-user] [Laszlo-dev] Need to be able to override resource declarations in OpenLaszlo without warnings.
Elliot Winard
enw at laszlosystems.com
Wed Aug 29 15:02:23 PDT 2007
Bret mentioned placing the responsibility on the library developer is
preferable.
I think that both would be useful.
-e
Henry Minsky wrote:
> Having a "replace is ok" flag seems like a good solution. I wonder
> which would be preferable, placing the declaration on the base library
> defs, or would the user put it in their code when overriding? Or
> both?
>
> On 8/29/07, Sarah Allen <sallen at laszlosystems.com> wrote:
>
>> That is exactly the dilemma. The tension is between a the frustration of an
>> accidental override and the frustration if you want to set up your library
>> to allow customizing a resource, where you have to provide a resource file
>> and library separately and then the user of the library needs to create a
>> new resource file and include all your resources except the logo and include
>> the logo.
>> I suppose there could be some kind of flag that says that I meant to
>> override this resource, like:
>> <resource name="logo" src="logo.png" replace="true"/>
>> I don't know if that would complicate the implementation or the language
>> folk would consider it weird, but as a user of the language it would work
>> for me.
>> Sarah
>>
>> On Wed, Aug 29, 2007 at 5:01 AM, Elliot Winard wrote:
>>
>> I don't know about removing the platform warnings.
>> If I include two libraries that have resources with conflicting names, I
>> want to know about it. For example - I might include multiple libraries ,
>> each defining a 'logo' resource and expecting the logo to be sized a certain
>> way -
>> <include "mailwindow" />
>> <include "stockwindow" />
>> I want the compiler to tell me that the stockwindow's logo is overwriting
>> the mailwindow's logo. Warnings are informative, non-fatal and should be
>> used to provide this kind of information.
>> This proposal skirts CSS altogether. If this gets implemented as proposed
>> then the display of warnings should be configurable at compile-time. I
>> think it would be confusing to users if resources (or classes or instances)
>> get clobbered without any warning.
>> -e
>>
>> Sarah Allen wrote:
>>
>>> I think this is an excellent proposal. cc'ing laszlo-user to see if
>>> other folks developing in LZX have strong feelings about this ...
>>>
>>>
>>> On Tue, Aug 28, 2007 at 3:12 PM, Bret Simister wrote:
>>>
>>>
>>> Currently, in the OpenLaszlo platform, it was decided that declaring a
>>> resource twice within an LZX app
>>> causes a server warning. This was intended to help developers just in
>>> case they accidentally overrode a
>>> resource that had already been declared in another library.
>>>
>>>
>>> <!-- the following code produces a warning, but still compiles -->
>>> <canvas>
>>> <resource name="logo" src="logo.gif" />
>>> <resource name="logo" src="logo2.gif" />
>>>
>>> <!-- view appears with logo2.gif -->
>>> <view resource="logo" />
>>> </canvas>
>>>
>>>
>>>
>>> At this time, I would suggest that the platform remove these
>>> warnings and have
>>> the last resource declaration override all other previous declarations.
>>>
>>>
>>> Here is why...
>>>
>>>
>>> OpenLaszlo now has a CSS implementation. It gives developers an
>>> elegant method
>>> of skinning their applications. This works, currently, by first
>>> declaring a resource
>>>
>>>
>>> <resource name="someimage_rsc" src="somepath/someimage.jpg" />
>>>
>>>
>>> and then referring to that resource in a CSS selector
>>>
>>>
>>> view[name="someview"] {
>>> resource: someimage_rsc;
>>> }
>>>
>>>
>>>
>>>
>>>
>>> If a developer builds a library ....
>>>
>>>
>>> myCustomLibrary ( folder )
>>> library.lzx
>>> myresources.lzx ( contains many resource definitions including
>>> 'lowerRightCorner_rsc' )
>>> mystyles.css ( contains many selectors including one that
>>> references 'lowerRightCorner_rsc' )
>>> ... ( other class and source image files )
>>>
>>>
>>> where library.lzx includes both myresources.lzx and mystyles.css
>>>
>>> Then library can be used with a simple inclusion in the main app.
>>>
>>>
>>> <canvas>
>>>
>>>
>>> <include name="myCustomLibrary" />
>>>
>>>
>>> <!-- instance of a class from myCustomLibrary -->
>>> <mycustomclass />
>>>
>>>
>>> </canvas>
>>>
>>>
>>>
>>>
>>> Let's assume that " mycustomclass " contains a number of resources,
>>> and that you ( as a developer )
>>> only want to change one of those resources . The simplest method to
>>> accomplish this would be ...
>>>
>>>
>>> <canvas>
>>>
>>>
>>> <include name="myCustomLibrary" />
>>>
>>>
>>> <!-- override resource definition "lowerRightCorner_rsc" defined
>>> earlier in myresouces.lzx -->
>>> <resource name="lowerRightCorner"
>>> src="my_new_path/my_lower_right_corner.jpg" />
>>>
>>>
>>>
>>> <!-- instance of mycustomclass that will now display
>>> the new resource based on the unchanged css selector -->
>>> <mycustomclass />
>>>
>>>
>>> </canvas>
>>>
>>>
>>> Currently, this code would cause a compiler warning. To avoid these
>>> warnings ( without changing OpenLaszlo ) the resouces.lzx file(s) and
>>> possibly the library .lzx would have to be edited.
>>>
>>>
>>> If instead, we allow for resource overriding, then ...
>>>
>>>
>>> 1) the original CSS and resource files will remain unchanged
>>> 2) The old resource for " lowerRightCorner" would NOT be included in
>>> the app
>>> 3) There would be clean separation between external libraries and the
>>> skinning of theses libraries included in an application.
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>
>
>
More information about the Laszlo-user
mailing list