This package depends on the following classes:�� NewList�� NewListRenderer�� TabActionButton�� Tab�� TabBar
- 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)
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.
��
��
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