Thank you for your explanation, I didn't have time to reply (sorry :( ) The mechanism describe is still working (or at least should), but I thought that the second argument was a boolean to know is shift was pressed or not. I may be wrong :)
Thanks again, Ben On Nov 29, 2012, at 4:05 PM, Goubier Thierry wrote: > Le 28/11/2012 10:03, Torsten Bergmann a écrit : >> Can anyone point me to a spec example >> with a (context) menu with icons and >> where we can enable/disable specific >> menue items depending on state? >> > > I'm not sure there is anything Spec specific in menus doing that but... > > A source for doing what you want is available in the OmniBrowser (Pharo 1.4). > I reused a simplified version of that code in the Alt Browser in Pharo 2.0; > if you browse around version 40, it is linked to a Spec-built interface. > > The example goes like that : > > A menu command object answer the following methods: > >>isActive (in the menu or not in the menu) > >>isEnabled (greyed out in the menu) > >>execute (the command to execute when selected) > >>icon (the icon symbol name) > >>label (the text of the menu item) > >>keyString (if you want to add a keymapping shortcut as well, it lists > >>itself in the menu). > > Building a menu item is then the following, once you get the menu given to > you by the widget : > > buildTreeMenu: aMenu on: aTarget > > ... > self isActive ifTrue: [ > (aMenu add: self label target: self selector: #execute) > enablementSelector: #isEnabled; > icon: (self icon notNil > ifTrue: [ UITheme current perform: self icon ] > ifFalse: [ nil ]); > keyText: self keyString ] > ... > > When you create your Spec GUI, you ask the widget model to give you the menu > before showing it to the user (this is in initializePresenter) > > textModel menu: [:aMenu :aTarget | self buildMenu: aMenu on: aTarget ] > > The resulting menu will look like the picture in attachment. > > Note: This is with a fairly old version of Spec. Newer versions may have > changed the way to get the menu from the widget model. > > Note 2: Since the menu is built each time the user asks for it then its easy > to have a menu which depends on the state of the application (the type of > selected item, etc...) > > Thierry > -- > Thierry Goubier > CEA list > Laboratoire des Fondations des Systèmes Temps Réel Embarqués > 91191 Gif sur Yvette Cedex > France > Phone/Fax: +33 (0) 1 69 08 32 92 / 83 95 > <Capture du 2012-11-29 15:45:34.png>
