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

philippe.back@highoctane.be philippe.back at gmail.com
Sat Aug 5 10:55:36 EDT 2017


Awesome news.

Maybe will we have a way to get vim style bindings with it.

Will we?

Phil

On Aug 5, 2017 00:20, "Tudor Girba" <tudor at tudorgirba.com> wrote:

> 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/20170805/63882e1b/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/20170805/63882e1b/attachment.png>


More information about the Pharo-dev mailing list