yes!
and we decided for the builder in the image :)
>>> 
>> Hi Sean,
>> you can declare a menu item with a precondition block.
>> the menu item is not added to the menu if the precondition is false.
>> We have one example in the core. See the precondition in the #'Software 
>> update' item.
>> 
>> WorldState class>>systemOn: aBuilder
>>  <worldMenu>    (aBuilder item: #System)
>>      order: 4.0;
>>      withSeparatorAfter;
>>      icon: MenuIcons smallConfigurationIcon;
>>      with: [
>>          (aBuilder item: #'About...')
>>              order: 0;
>>              action: [Smalltalk aboutThisSystem].
>>          (aBuilder item: #'Software update')
>>              order: 1;
>>              precondition: [self showUpdateOptionInWorldMenu];
>>              action: [Utilities updateFromServer];
>>              help: 'Load latest code updates via the internet']
>> 
>> Cheers
>> Alain
> 
> Comparing Settings to Preference Annotations might gleam at the difference 
> you might expect between menu annotations in Pharo and Squeak.
> 
> In Pharo the method contains a simple annotation with no args, and the method 
> contains code for building a menuitem using the builder passed as argument,
> My speculation: If following the existing preference-style, Squeak will 
> probably use an annotation with more args, with the method body containing 
> the actual action.
> i.e. Alains example would be written something like:
> WorldState class>>aboutMenuItem
> <menuItemIn: #('WorldMenu' 'System')
>       order: 0
>       label: 'About... '>
> Smalltalk aboutThisSystem
> 
> WorldState>>updateFromServertMenuItem
> <menuItemIn: #('WorldMenu' 'System')
>       order: 1
>       label: 'About... '
>       visible: #showUpdateOptionInWorldMenu
>       help: 'Load latest code updates via the internet'>
> Utilites updateFromServer
> 
> 
> Both approaches have their pros and cons.
> The one in Pharo depends on a builder responding to certain messages, so 
> expanding the API might lead to breakage if you try to load into an old image.
> You also have to define new annotation keywords for each menu you want to 
> build this way, .
> 
> The one for Squeak might suffer a risk of needing a large amount of 
> permutations of annotations  , depending on which PluggableMenuItemSpec 
> properties you'd want to be able to leave optional. 
> 
> In short: In Pharo you have access to the builder in the method, while in 
> Squeak (based on how Preferences annotations work) I'd expect they end up 
> with a builder parsing an annotation instead.
> 
> Cheers,
> Henry
> 
> 
> _______________________________________________
> Pharo-project mailing list
> [email protected]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project


_______________________________________________
Pharo-project mailing list
[email protected]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project

Reply via email to