[Pharo-project] Fwd: [ANN] pharo focused sprint - bern, feb 26

Tudor Girba tudor.girba at gmail.com
Sun Feb 27 15:36:15 CET 2011


Hi,

On 27 Feb 2011, at 12:04, Stéphane Ducasse wrote:

>>>> - Lukas went over the WeakAnnouncements implementation to get the WeakMessageSend working. The code is in PharoTaskForces
>>> 
>>> should we take action on this one?
>>> I mean integrating it.
>> 
>> It can be integrated, because the base code works in the same way as before.
>> 
>> Currently, the solution is implemented through a WeakAnnouncer which subclasses Announcer. I wanted the weak thing to be merged, because the clients of announcements should benefit from the Weak implementation, but Lukas says that he does not trust the Weak support in Pharo and that if you have many WeakAnnouncers it somehow does not scale.
> 
> ok so ...?

So, we need to investigate more :). It would be cool if someone with more knowledge would take a look, too. Igor, would you have a bit of time to look into it?

I will probably also give it a look to see how it works in the context of Glamour. I hope that Esteban will join me again. Esteban, what do you say :)?


>> The problem with the current approach is that models have to take an explicit stand of whether they want weak or non weak when instantiating the announcer. Unfortunately, I do have enough technical knowledge for this. It would be cool if someone with better knowledge in this area would take a look.
>> 
>>>> - Lukas worked on getting OB work with the changes in TextMorph from Pharo 1.2.
>>>> 
>>>> - Adrian, Jorge and Toon worked on implementing a Debugger on top of Glamour. They got a first version working that is able to do basic actions: step, restart, step into. The challenge was to get to understand the model, and to figure out that <primitive: 19> is used for marking that a method should not be debugged. In any case, working with Glamour seemed to work quite smoothly. The code is available in the Glamorous Toolkit. Adrian, did I get it right? :)
>>>> 
>>>> - Mircea built a new widget for searching multiple categories of items in the same time, similar to spotlight where you enter one string and you get multiple hits from multiple categories. The implementation was spawned from the OBCompletionDialog / OBCompletionRequest and currently it simply provides multiple lists one below the other. The idea is to use this kind of widget to search simultaneously for classes / methods / packages. The code is available in Glamour (Glamour-Morphic-Renderer). The widget can definitely be improved visually, but Mircea already did a nice job.
>>> 
>>> is the widget only for glamour because I think that a widget with search list integrated should be used everywhere?
>>> We were discussing with alain to have a look at the one in OB and push it/rewrite it as a core widget
>> 
>> Neither the OB nor the Glamour widgets depend on Glamour, so they can be used independently. You just need to take the Request and the Dialog together.
> 
> 
> ok where is the code?


OBCompletionDialog / OBCompletionRequest come with the OB from Pharo 1.2. The way to use it is like:

	OBCompletionRequest new
			prompt: 'Find Class';
			searchBlock: [ :string | OBCmdFindClass new findClassIn: Smalltalk pattern: string ];
			labelBlock: [ :class | class name ];
			iconBlock: [ :class | class browserIcon ];
			signal.

The GLMSpotterRequest / GLMMorphicSpotterDialog are in Glamour-Morphic-Renderer. You can use them like

	| composite classRequest methodRequest thirdRequest |
	composite  := GLMSpotterRequest new.

	classRequest := GLMSingleSpotterRequest new 
			prompt: 'Find Class';
			searchBlock: [ :string | OBCmdFindClass new findClassIn: Smalltalk pattern: string ];
			labelBlock: [ :class | class name ];
			iconBlock: [ :class | class browserIcon ].

	methodRequest := GLMSingleSpotterRequest new 
			prompt: 'Object Selectors';
			searchBlock: [ :string | Object selectors select: [:e| string, '*' match: e asString] ];
			labelBlock: [ :e | e ].

	thirdRequest := GLMSingleSpotterRequest new 
			prompt: 'Other Selectors';
			searchBlock: [ :string | Class selectors select: [:e| string, '*' match: e asString] ];
			labelBlock: [ :e | e ].
			
	composite 
		add: classRequest;
		add: methodRequest;
		add: thirdRequest;
		signal


Cheers,
Doru



--
www.tudorgirba.com

"Reasonable is what we are accustomed with."





More information about the Pharo-project mailing list