[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