[squeak-dev] About customizing Squeak -> custom world menu?

H. Hirzel hannes.hirzel at gmail.com
Sat Feb 24 17:18:00 UTC 2018


On 2/24/18, Bob Arning <arning315 at comcast.net> wrote:
> Or you could...
>
> World on: #mouseDown send: #putUpSomeOtherMenu: to: World

This would be a better solution since it does involve adding a method
but not changing a method of the base image.

I tested it with adding #buildWorldMenu4: to PasteUpMorph

    buildWorldMenu4: evt
    |project |

    project := self project ifNil: [Project current]  "mvc??".


    ^(TheWorldMenu4 new
		world: self
		project: project
		hand: evt hand) buildWorldMenu.


I executed
    World on: #mouseDown send: #putUpSomeOtherMenu: to: World

But the new world menu did not come up.

So far

    http://wiki.squeak.org/squeak/1047

is the working solution I found for customizing the red button [1] menu

--Hannes


[1] Red button -- http://wiki.squeak.org/squeak/1904 - usually the
left mouse button.

>
> On 2/24/18 9:05 AM, H. Hirzel wrote:
>> Yes, implementation is easy but my question is how it should be done
>> in a way that conforms to the intention of the framework code.  A
>> "recommended good solution".
>>
>> What about using a project preference?
>>
>> It needs the method PasteUpMorph buildWorldMenu: evt from May 2000
>>
>>      buildWorldMenu: evt
>> 	^(TheWorldMenu new
>> 		world: self
>> 		project: (self project ifNil: [Project current])       "mvc??"
>> 		hand: evt hand) buildWorldMenu.
>>
>>
>> to be replaced with
>>
>>
>>          buildWorldMenu: evt
>>          |project worldMenuClassSymbol|
>>
>>          project := self project ifNil: [Project current]  "mvc??".
>>
>>          worldMenuClassSymbol := project
>> projectPreferenceFlagDictionary at:
>> #worldMenuClassSymbol ifAbsent: [#TheWorldMenu].
>>
>>      ^((Smalltalk at:  worldMenuClassSymbol) new
>> 		world: self
>> 		project: project
>> 		hand: evt hand) buildWorldMenu.
>>
>>
>> Detailed description:     http://wiki.squeak.org/squeak/1047
>>
>
>


More information about the Squeak-dev mailing list