Hi Nicolai,
I like the idea. cool
The current Morph classes are too big. It is difficult to understand them and to find out how to work with them "the right way" (event handling for example or layouting).
this is our goal to clean and make the hierarchy easier to understand. Morph has to much responsibilities. Regarding the Morph hierarchy, so far, there are: BlProtoMorph BlAtomicMorph BlImageMorph BlHandMorph BlMorph BlCompositeMorph BlMorphWithLayout ( not ready ) BlPasteUpMorph BlWorldMorph BlProtoMorph "space owner drawer announcer visible locked position properties layerNumber transform errorOnDraw" BlHandMorph "pointer targetOffset savedPatch dragged" BlImageMorph "form alpha cachedForm" BlMorph "extent layoutProperties fillStyle boundsCache eventHandler borderStyle" BlCompositeMorph "submorphs" BlMorphWithLayout "layoutPolicy" BlWorldMorph "menuBuilder" As an example of cleaning, just compare HandMorph and BlHandMorph. HandMorph 'mouseFocus keyboardFocus eventListeners mouseListeners keyboardListeners mouseClickState mouseOverHandler lastMouseEvent targetOffset damageRecorder cacheCanvas cachedCanvasHasHoles temporaryCursor temporaryCursorOffset hardwareCursor hasChanged savedPatch lastEventBuffer lastKeyScanCode combinedChar eventSource lastSystemEvent captureBlock recentModifiers' A lot of HandMorph responsibilities and inst vars are now implemented in other classes (BlUserInputProcessor and BlSpace) Sorry it is a bit short but we will explain them (and more) in deeper detail later with a separate documentation and then we will discuss and learn from feedbacks :)
Can you describe something more about the design. Or is the design a work in progress.
yes, it is in progress
Please, I hope the "properties"-Dictionary is only a left over for Morphic compatibility. I never understood why these are used instead of proper selector and objects representing actual properties.
It is mandatory for MorphCompatibility. A lot of properties have already been properly reified as inst vars. But I don't have a definitive opinion about if it is useful/good design or not. Cheers Alain
nicolai
On 11 juin 2014, at 22:11, Tudor Girba <tudor@tudorgirba.com> wrote:
I would be interested in trying to play with Block. Is it available?
Cheers, Doru
On Wed, Jun 11, 2014 at 9:55 PM, Esteban Lorenzano <estebanlm@gmail.com> wrote:
On 11 Jun 2014, at 16:39, kilon alios <kilon.alios@gmail.com> wrote:
excellent news. I really believe in Morphic and I really like its general design. If you we can clean the mud I am sure we will discover quite a diamond underneath. Thanks.
which general design? the pattern in which is based? thatâs not enough to keep it :) Sorry but there is no easy/efficient way to clean it. The only way to clean Morphic is to reimplement it. Clean it is just too much work⦠and too many design decisions where made that time and patches made them obsolete or not correct. Not to talk about the mix of concepts (bah, the no existence of separation between them).
Block is not a clean. Is a revamp.
No offence intended to Morphic: no matter how good was at the beginning, *every* system evolves up to a point the effort required to maintain it is superior to the effort required to reimplement it (with all the experience as a superior step). (yeah, yeah⦠a lot of people will disagree. But time has proven me right⦠and will continue doing it :P)
Esteban
On Wed, Jun 11, 2014 at 10:25 PM, François Stephany <tulipe.moutarde@gmail.com> wrote: \o/
On Wed, Jun 11, 2014 at 4:23 PM, Camille Teruel <camille.teruel@gmail.com> wrote:
On 11 juin 2014, at 15:31, François Stephany <tulipe.moutarde@gmail.com> wrote:
What is bloc ? I've searched in the pharo-dev list but couldn't find it :/
A Morphic clean/revamp lead by Alain and Stef.
On Wed, Jun 11, 2014 at 2:26 PM, stepharo <stepharo@free.fr> wrote: looks so exciting...
From: Alain Plantec <alain.plantec@univ-brest.fr> Subject: Bloc news Date: 11 Jun 2014 14:10:29 GMT+2 To: Stéphane Ducasse <stephane.ducasse@inria.fr> Cc: Alain Plantec <alain.plantec@univ-brest.fr>
Name: Bloc-Core-AlainPlantec.15 Author: AlainPlantec Time: 11 June 2014, 2:07:16.813171 pm UUID: d58ae82e-b5dd-41d9-bc31-a48c3e9e5cf1 Ancestors: Bloc-Core-AlainPlantec.14
- BlMorphs manage their submorphs with local coordinate. - Drawing and drag&drop has been adapted to local coordinate - Consequence: TransformationMorph should not be useful anymore because each morph has its own transform (not only TransformationMorph). Each morph uses its own transform to declare changed portions of its bounds and to draw its submorphs. - The world is no more a special morph: - the hand is owned by the space - the canvas and the display/redisplay of morphs are space responsibilities. This open the door to several worlds per space.
Now the current global redrawing mechanism efficiency is not obvious. Next actions: - try to localize as much as possible the redrawing of morphs, - dig several Worlds for a space - start to comment and write a separate documentation with the help of Stephane :)
-- www.tudorgirba.com
"Every thing has its own flow"