This is gorgeous! Alexandre -- _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;: Alexandre Bergel http://www.bergel.eu ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
> On Aug 4, 2017, at 6:19 PM, Tudor Girba <tu...@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. > > <AC36A55F-405C-6147-9E0F-BA1F6F1008BA.png> > > 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?" >