A new version of Morphic was added to project The Inbox: http://source.squeak.org/inbox/Morphic-yo.519.mcz
==================== Summary ====================
Name: Morphic-yo.519 Author: yo Time: 30 June 2011, 2:41:06.841 pm UUID: ae729cff-3598-439c-a437-e24c79d87993 Ancestors: Morphic-mtf.518
Implements "Button for it" feature.
=============== Diff against Morphic-mtf.518 ===============
Item was added: + ----- Method: SmalltalkEditor>>buttonForIt (in category 'do-its') ----- + buttonForIt + + ^ self doItButtonFromSelection ifNotNilDo: [:e | e openInHand]!
Item was added: + ----- Method: SmalltalkEditor>>doItButtonFromSelection (in category 'do-its') ----- + doItButtonFromSelection + + | button string cm | + self lineSelectAndEmptyCheck: [^ nil]. + button := SimpleButtonMorph new. + string := self selection. + (model respondsTo: #doItReceiver) + ifTrue: [ + button setProperty: #rcvr toValue: model doItReceiver. + button setProperty: #ctxt toValue: model doItContext]. + + cm := (button valueOfProperty: #rcvr) class compilerClass new + compiledMethodFor: string readStream + in: (button valueOfProperty: #ctxt) + to: (button valueOfProperty: #rcvr) + notifying: nil + ifFail: [^ nil] + logged: false. + button setProperty: #cm toValue: cm. + button target: [:b | + [(b valueOfProperty: #cm) valueWithReceiver: (b valueOfProperty: #rcvr) arguments: + ((b valueOfProperty: #ctxt) ifNotNil: [{(b valueOfProperty: #ctxt) }] ifNil: [#()])] + on: OutOfScopeNotification + do: [ :ex | ex resume: true]]; + actionSelector: #value:; + arguments: {button}. + button label: string. + ^ button. + !
squeak-dev@lists.squeakfoundation.org