[Pharo-dev] [Pharo-users] [ann] moldable brick editor - alpha

Denis Kudriashov dionisiydk at gmail.com
Sun Aug 6 13:17:06 EDT 2017

Good job guys.

Here is my feedback:

1) Loading in Pharo 7 signal dependency error:

This package depends on the following classes:

Then I proceed and it was loaded fine. And editor works like in demo.

2) Text cursor up/down is not working correctly when text is wrapped.

- it jumps between real text line instead of visual wrapped lines.

- it skips empty lines

- sometimes it is just not moved (not found concrete case)

3) I look a bit at text commands (TextEditorCommand) and found that current
KeyMapping package ($a asShortcut) is not used. Instead there is new
hierarchy of BlKeyCombination.
What the reason for this?

4) I thing we should try to use Commander for new UI widgets. For example
It is very naturally applied to TextEditorCommand hierarchy. And it will
automatically remove hardcoded shortcuts defined in method

2017-08-05 0:19 GMT+02:00 Tudor Girba <tudor at tudorgirba.com>:

> Hi,
> We are very happy to announce the alpha version of a moldable editor built
> in Brick (https://github.com/pharo-graphics/Brick) which is based on
> Bloc (https://github.com/pharo-graphics/Bloc). This is primarily the work
> of Alex Syrel. The project was initially financially sponsored by ESUG and
> it is currently supported by feenk. And of course, the project is based on
> the tremendous work that went into Bloc and Brick by all contributors.
> Take a look at this 2 min video:
> https://www.youtube.com/watch?v=2vy6VMJM9W4&feature=youtu.be
> The basic editor works and it is both flexible and scalable. For example,
> the last example shown in the video is an editor opened on 1M
> characters, which is reasonably large, and as can be seen see one can
> interact with it as smoothly as with the one screen text. It actually works
> just as fine with 100M characters.
> The functionality of the editor includes: rendering, line wrapping,
> keypress and shortcut handling, navigation, selection and text styling.
> Currently, the editor is 1260  lines of code including method and class
> comments. This is not large for a text editor and this is possible because
> most of the work is done by generic concepts that already exist in Bloc
> such as layouts and text measurements. Beside the small maintenance cost,
> the benefit is that we have the option to build all sorts of variations
> with little effort. That is why we call this a moldable text editor.
> Another benefit of using elements and layouts is that we can also embed
> other kinds of non-text elements with little effort (such as pictures),
> and obtain a rich and live text editor. We already have basic examples for
> this behavior, and we will focus more in the next period on this area.
> The next immediate step is to add syntax highlighting. Beside the text
> attributes problem, this issue will also exercise the thread-safety
> the implementation is. The underlying structure (https://en.wikipedia.org/
> wiki/Rope_(data_structure)) is theoretically thread-safe, but it still
> needs to be proven in practice.
> We think this is a significant step because the editor was the main piece
> missing in Brick and it will finally allow us to build value that can be
> directly perceived by regular users on top of Brick and this, in turn, will
> generate more traction. Please also note that because now Bloc is directly
> embeddable in Morphic it means that we can actually start using it right
> away. For example, the picture below shows the text element being shown
> through a live preview in the GTInspector.
> [image: Playground @ • a8rEditorE1ement x Page — BrRopedText string:
> Emphasizing everything text : nothing' text attributes: {
> BrFontSizeAttribute size: 66 } . text attributes: { BrTextForegroundAttri
> bute paint: ( BILinearGradientPaint new stops: 9 —> Color red . start: end:
> from: 1 to: 11; Color blue} ; attributes: { BrFontWeightAttribute bold }
> from: 12 attributes: { BrFontEmphasisAttribute italic from: emphasi zi ng
> to: 17; 18 to: 22; Raw Preview Live User data Metrics Meta Em hasizing ever
> thin is emphasizing nothing attributes: { BrTextBackgroundAttribute paint:
> Color yellow from: 27 to: 37; attributes: { BrFontWeightAttribute thin.
> BrTextForegroundAttribute paint: Color gray. BrFontSizeAttribute size: 40
> from: 39 to: 45. element : BrEditorElement new size: 400 @ 600; edi tor:
> (BrTextEdi tor new text: text) .]
> This is another puzzle piece towards the final goal of engineering the
> future of the Pharo user interface. There is still a long way to go to
> reach that goal, but considering the work that is behind us, that goal that
> looked so illusive when Alain and Stef initiated the Bloc project is now
> palpable.
> We will continue the work on this over the next period and we expect to
> announce new developments soon.
> If you want to play with it, you can load the code like this (works in
> both Pharo 6 and 7):
> Iceberg enableMetacelloIntegration: true.
> Metacello new
>    baseline: 'Brick';
>    repository: 'github://pharo-graphics/Brick/src';
>    load: #development
> Please let us know what you think.
> Cheers,
> Alex and Doru
> --
> www.tudorgirba.com
> www.feenk.com
> "What is more important: To be happy, or to make happy?"
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.pharo.org/pipermail/pharo-dev_lists.pharo.org/attachments/20170806/1fd6ec31/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: AC36A55F-405C-6147-9E0F-BA1F6F1008BA.png
Type: image/png
Size: 151365 bytes
Desc: not available
URL: <http://lists.pharo.org/pipermail/pharo-dev_lists.pharo.org/attachments/20170806/1fd6ec31/attachment.png>

More information about the Pharo-dev mailing list