[ann] moldable brick editor - alpha

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
6 messages Options
Reply | Threaded
Open this post in threaded view
|

[ann] moldable brick editor - alpha

Tudor Girba-2
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.
 
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?"


_______________________________________________
Moose-dev mailing list
[hidden email]
https://www.list.inf.unibe.ch/listinfo/moose-dev

AC36A55F-405C-6147-9E0F-BA1F6F1008BA.png (202K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: [Pharo-users] [ann] moldable brick editor - alpha

Tudor Girba-2
Is this still an issue?

Could you also try on another OS (just to make sure)?

Cheers,
Doru


> On Aug 10, 2017, at 2:12 PM, stephan <[hidden email]> wrote:
>
> On 10-08-17 13:09, stephan wrote:
>> On 05-08-17 00:19, Tudor Girba wrote:
>> >Iceberg enableMetacelloIntegration: true.
>> That doesn't work. It hangs the image, keeping one CPU
>> busy.
>
> With 60510 that is non-interruptable, b.t.w.
>
> Stephan
>
>
>
>

--
www.tudorgirba.com
www.feenk.com

"Problem solving efficiency grows with the abstractness level of problem understanding."




_______________________________________________
Moose-dev mailing list
[hidden email]
https://www.list.inf.unibe.ch/listinfo/moose-dev
Reply | Threaded
Open this post in threaded view
|

Re: [Pharo-users] [ann] moldable brick editor - alpha

Aliaksei Syrel
Hello Stephan,
 
Yep. I tried with a clean 6.1 install.
The Moz2D library is downloaded, but does not seem to be installed correctly

Below is the list of dependencies for 64bit Ubuntu and 32bit Pharo: (on 64bit pharo it should theoretically work out of the box, except 64bit related issues)
 
sudo dpkg --add-architecture i386;
sudo apt-get update;
export PKG_CONFIG_PATH=/usr/lib/i386-linux-gnu/pkgconfig/;
      
echo "Installing c++ libraries";
sudo apt install libstdc++6:i386;
      
echo "Installing GTK-2.0...";
sudo apt-get install libgtk2.0-0:i386;
echo "Installing GTK-3.0...";
sudo apt-get install libgtk-3-0:i386;
      
echo "Installing libGL...";
sudo apt-get install libglu1-mesa:i386;

We have travis Build which is green:


On Windows users should install Visual C++ Redistributable for Visual Studio 2015: (reduces binary size by >10mb)
 
On OSX works out of the box

Cheers,
Alex

On 18 August 2017 at 17:01, stephan <[hidden email]> wrote:
On 12-08-17 10:47, Tudor Girba wrote:
Is this still an issue?

Yep. I tried with a clean 6.1 install.
The Moz2D library is downloaded, but does not seem to be installed correctly

> Could you also try on another OS (just to make sure)?

next step

Stephan



_______________________________________________
Moose-dev mailing list
[hidden email]
https://www.list.inf.unibe.ch/listinfo/moose-dev
Reply | Threaded
Open this post in threaded view
|

Re: [ann] moldable brick editor - alpha

Stephan Eggermont-3
On 18-08-17 17:12, Aliaksei Syrel wrote:
>     echo "Installing GTK-2.0...";
>     sudo apt-get install libgtk2.0-0:i386;
>     echo "Installing GTK-3.0...";
>     sudo apt-get install libgtk-3-0:i386;

Great, that works. Those two were missing.

Stephan

It still complains:
Installing library to File @
/home/stephan/Desktop/pharo6.1/bin/lib/pharo/5.0-201707201942/libMoz2D.so
Launching Moz2D services...
Gtk-Message: Failed to load module "overlay-scrollbar"
Gtk-Message: Failed to load module "gail"
Gtk-Message: Failed to load module "atk-bridge"
Gtk-Message: Failed to load module "unity-gtk-module"

(pharo:8447): Gtk-WARNING **: Unable to locate theme engine in
module_path: "murrine",

_______________________________________________
Moose-dev mailing list
[hidden email]
https://www.list.inf.unibe.ch/listinfo/moose-dev
Reply | Threaded
Open this post in threaded view
|

Re: [ann] moldable brick editor - alpha

Aliaksei Syrel
That is ok :) Those are not used modules and can be ignored.

I am glad it worked! I will see, maybe it is possible to get rid of at least one gtk dependency. 

Cheers,
Alex

On Aug 18, 2017 6:19 PM, "stephan" <[hidden email]> wrote:
On 18-08-17 17:12, Aliaksei Syrel wrote:
    echo "Installing GTK-2.0...";
    sudo apt-get install libgtk2.0-0:i386;
    echo "Installing GTK-3.0...";
    sudo apt-get install libgtk-3-0:i386;

Great, that works. Those two were missing.

Stephan

It still complains:
Installing library to File @ /home/stephan/Desktop/pharo6.1/bin/lib/pharo/5.0-201707201942/libMoz2D.so
Launching Moz2D services...
Gtk-Message: Failed to load module "overlay-scrollbar"
Gtk-Message: Failed to load module "gail"
Gtk-Message: Failed to load module "atk-bridge"
Gtk-Message: Failed to load module "unity-gtk-module"

(pharo:8447): Gtk-WARNING **: Unable to locate theme engine in module_path: "murrine",


_______________________________________________
Moose-dev mailing list
[hidden email]
https://www.list.inf.unibe.ch/listinfo/moose-dev


_______________________________________________
Moose-dev mailing list
[hidden email]
https://www.list.inf.unibe.ch/listinfo/moose-dev
Reply | Threaded
Open this post in threaded view
|

Re: [ann] moldable brick editor - alpha

Hannes Hirzel
Hello

Are the installation issues resolved? The video (link in the initial
mail) shows a Pharo 7 image.

Is it possible to install it into a Pharo 6.1 release image?


Iceberg enableMetacelloIntegration: true.
Metacello new
   baseline: 'Brick';
   repository: 'github://pharo-graphics/Brick/src';
   load: #development


How do I start the editor?

--Hannes

On 8/18/17, Aliaksei Syrel <[hidden email]> wrote:

> That is ok :) Those are not used modules and can be ignored.
>
> I am glad it worked! I will see, maybe it is possible to get rid of at
> least one gtk dependency.
>
> Cheers,
> Alex
>
> On Aug 18, 2017 6:19 PM, "stephan" <[hidden email]> wrote:
>
> On 18-08-17 17:12, Aliaksei Syrel wrote:
>
>>     echo "Installing GTK-2.0...";
>>     sudo apt-get install libgtk2.0-0:i386;
>>     echo "Installing GTK-3.0...";
>>     sudo apt-get install libgtk-3-0:i386;
>>
>
> Great, that works. Those two were missing.
>
> Stephan
>
> It still complains:
> Installing library to File @ /home/stephan/Desktop/pharo6.1
> /bin/lib/pharo/5.0-201707201942/libMoz2D.so
> Launching Moz2D services...
> Gtk-Message: Failed to load module "overlay-scrollbar"
> Gtk-Message: Failed to load module "gail"
> Gtk-Message: Failed to load module "atk-bridge"
> Gtk-Message: Failed to load module "unity-gtk-module"
>
> (pharo:8447): Gtk-WARNING **: Unable to locate theme engine in module_path:
> "murrine",
>
>
> _______________________________________________
> Moose-dev mailing list
> [hidden email]
> https://www.list.inf.unibe.ch/listinfo/moose-dev
>
_______________________________________________
Moose-dev mailing list
[hidden email]
https://www.list.inf.unibe.ch/listinfo/moose-dev