Hi Stef,

I faced similar issue and then I've found out that PragmaMenuBuilder is 
compatible with Spec.

Something like...

builder := PragmaMenuBuilder pragmaKeyword: 'myPragma' model: self.
menu := MenuModel new.
menu fromSpec: builder menuSpec.

Peter


On Sat, Aug 05, 2017 at 06:26:45PM +0200, Stephane Ducasse wrote:
> Hi guys
> 
> I would like to know if there is a pattern to build extensible menu in Spec.
> For example, I extending Epicea to support pillar fileout so that I
> can turn a coding section into a pillar steps of action.
> 
> I wanted to extend the epicea browser to get my menu in:
> But the code is like that:
> 
> EPLogBrowserModel >> addMenuItemsForSelectedItemsIn: aMenu
> 
>   aMenu addGroup: [ :aGroup |
>     self menuActionsForSelectedItems do: [ :oldStyleMenuItemArray |
>          aGroup addItem: [ :anItem |
>             anItem
>                name: oldStyleMenuItemArray first;
>                description: oldStyleMenuItemArray third;
>                icon: (self iconNamed: oldStyleMenuItemArray fourth);
>                action: [ self perform: oldStyleMenuItemArray second ] ] ] ].
> 
>   aMenu addGroup: [ :aGroup |
>      aGroup addItem: [ :anItem |
>             anItem
>               name: 'Filters';
>               icon: (self iconNamed: #smallFindIcon);
>               subMenu: self filtersSubMenu ] ].
> 
>   aMenu addGroup: [ :aGroup |
>         aGroup addItem: [ :anItem |
>             anItem
>              name: 'File Out';
>              description: 'Write selected entries to an Ombu file';
>              icon: (self iconNamed: #smallSaveAsIcon);
>              action: [ self fileOutSelection ] ] ].
> 
> 
> EPLogBrowserModel >> menuMorphForSelectedItems
> 
>          | aMenu |
>          aMenu := MenuModel new.
>          showEntryItemMenu ifTrue: [ self
> addMenuItemsForSelectedItemsIn: aMenu ].
>          ^ aMenu buildWithSpecAsPopup
> 
> 
> So I would like to improve Epicea but I face the problem of the limits
> of Spec (presumably).
> I'm thinking to add a <specMenu: 10> pragma to handle this case.
> Any thought.
> 
> Stef
> 

Reply via email to