Hi!
I do not get an example with DCRTFocusable. What does this interaction do? I tried the following and it does not seem to do much.
-=-=-=-=-=-=
b := RTMondrian new.
b shape rectangle width: #numberOfVariables; height: #numberOfMethods.
ns := b nodes: RTShape withAllSubclasses.
es := b edges connectFrom: #superclass.
es @ DCRTFocusable.
b layout tree.
b
-=-=-=-=-=-=
Alexandre
--
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel http://www.bergel.eu
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
Hi Alex,
I'm trying to find a way how to observe all mouse clicks regardless of
elements. I can do this easily on my side, because I have control over
everything I create,
but doing that would prevent certain things like RTResizable from working
in pure Roassal...
Currently all Trachel mouse events are created in Morphic (TRMorph),
however events themselves are fired from shapes' announcers so there is no
convergence point.
So, would it be possible to basically fire the event twice, once from the
shape's announcer and once from probably view or canvas (or some TROverseer
class or whatever).
As far as performance goes this shouldn't be a problem if you consider that
just mouse movement can trigger 10 events every second.
What do you think? Is it worth for you to change/implement it?
If not I will resolve it on my side.
Thanks,
Peter
Hi Alex,
I've mentioned this very long time ago, but it wasn't on my radar so I get
back to it just now.
Basically I want to have either:
a) option to execute behavior when element is added to view --- this is
basically direct counterpart to TRRemovedCallback.
So I could do things like...
element addCallback: (TRAddedCallback: [ :shape | "add dependent elements
or whatever" ]).
or
b) have RTInteractions be lazily initialized --- only after the element has
been added to the view.
(or both)
The idea is to have more clearly resolvable interactions like RTLabelled,
which currently requires for the element to be already in the view.
I'm not sure if the second option will be entirely feasible, because many
of the interactions are stateless and require immediate evaluation... but
that could be resolved with some flags or different subclassing or
something...
Is it possible for you? Is this something you want in Roassal?
Thanks,
Peter
Hi!
I am experimenting something. There are several Roassal contributions around, and I try to make them easily accessible. I have designed a very simple plugin system, accessible within the world menu:
Does this make sense?
Maybe we could have DynaCase accessible here
Cheers,
Alexandre
--
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel http://www.bergel.eu
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
Hmm...
right now I have one burning question:
Why build a completely new layer of indirection with different API instead
of improving and extending Roassal (=Telescope alongside Roassal instead of
on top of it)? It seems like a lot of effort went into creating it while it
would have had bigger and better impact in Roassal...
So, how do you tell builder that you want to color or add interaction to a
>> "group" of nodes and not all the nodes in the visu? Groups are first-class
>> entities in Telescope. Composites are first class entities with
>> customizable interactions.
>>
>> Roassal has RTGroup, which is obviously less powerful, but often enough.
Plus the
"if node matches this add/change/do this" that is also implemented by
Telescope.
> Moreover, the model takes care of updating only the concerned nodes and
>> not all of the visualization.
>>
>> Roassal updates only what should be updated, not the whole visualization.
(And if some particular builder does rerender everything, that's the
builder's problem.) After all this is transitive --- if Telescope can do
partial changes and is on top of Roassal, so can Roassal do it...
> The paper is not the best way to see what Telescope is able to.
>>>
>>> Look at the demos and the presentation Anne did at Esug:
>>> http://www.slideshare.net/GuillaumeLarcheveque/telescope-introduction-and-e…
>>>
>>> I saw the presentation at ESUG but I wanted more insight (or
documentation)...
Anyway, I'll continue my exploration... but the idea that I might need
interaction between Telescope and Roassal elements and concepts doesn't
make me happy...
Peter
Hi guys,
Just spotted a bug in RTStackBarPlot.
If you set the height of a bar with the message #barWidth:height: the width is set but the height remains 20 pixels, as defined in #defaultBarHeight.
To reproduce, go to RTStackBarPlot>>#example03 and change the height value parameter in the #barWidth:height: message. Bar always remain 20 pixels.
P.s. I also take this opportunity to say that once you get proficient in Roassal it is really a pleasure to use it!
Cheers,
Roberto
Hi!
I am happy to send data to you guys. Just a small request: can you put the checkbox in the little pink window? Each time I download an image, I have to open the preference browser, which is… a bit painful.
Picky me :-)
Cheers,
Alexandre
--
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel http://www.bergel.eu
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
Hi,
I am working on a new generic version of MooseChef. The idea is that from an element, we can reach its children by looking at the entities whose opposite of the « belongsTo » property is this element. The idea is not to take into account the specificities of the FAMIX context as it is done currently, but to use an API that is not aware of the FAMIX concept on which it is applied and thus that is the same for any FAMIX concept already existing or not yet.
Currently, we got different issues:
1. in Smalltalk, classes are in the childnamedEntities collection of a FAMIXPackage whereas they are in the types of a FAMIXNamespace in Java. The problem is that FAMIXClass has not its own belongsTo method, but inherits it from FAMIXType. So the opposite of the belongsTo method for a FAMIXClass is types and not childnamedEntities.
2. in Smalltalk, extension methods are also in the childnamedEntities collection of a FAMIXPackage. However, if you invoke the belongsTo method from an extension method, you get the class and not the package. Moreover, in the current version of MooseChef, associations from and to an extended method are taken into account both when querying the class and the package. In a kind of way, an extended method belongs to both the class and the package. However, it is not possible at the model level to say that an element belongs to two elements.
We can fix the first issue by modifying the SmalltalkImporter and the FAMIX model in order that classes are collected in the types collection as in the case of Java. Consequences on the new version of MooseChef are the following: we can reach the classes from the package what is not possible currently and the association from and to the extension methods are considered only when querying the class belonging these extension methods, but not the package.
What do you think about this change?
Anne
Excellent!
Alexandre
> On Jul 21, 2015, at 5:33 PM, Juraj Kubelka <juraj.kubelka(a)icloud.com> wrote:
>
> Hi!
>
>> On Jul 21, 2015, at 12:22, Alexandre Bergel <alexandre.bergel(a)me.com> wrote:
>>
>> Hi!
>>
>> I have a quick question. In spotter, if I type “Roassal #c” then I get all the classes that match Roassal. If I enter “Roassal #p” then I get all the packages.
>> How can I get all the scripts contained in the stash folder?
>
> The category is called “Playground named pages”. You can write #p, #pl, #pla, or #play. There two categories, the second one is called “Playground cached pages”. So you obtain both categories, not only one.
>
>>
>> What are the associations between # shortcuts and displayed categories?
>
> It is #<prefix of a displayed category>, e.g., for a class category you can write #c, #cl, #cla, #clas, #class. You cannot use space.
>
>>
>> I am asking this since I now use Juraj’s setting to share stash playground scripts among my images. This is fantastic…
>
> Indeed, it is cool to share the named and cached scripts between images.
>
> Cheers,
> Juraj
>
>>
>> Cheers,
>> Alexandre
>>
>> --
>> _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
>> Alexandre Bergel http://www.bergel.eu
>> ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
>>
>>
>>
>
--
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel http://www.bergel.eu
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
Hi!
I have a quick question. In spotter, if I type “Roassal #c” then I get all the classes that match Roassal. If I enter “Roassal #p” then I get all the packages.
How can I get all the scripts contained in the stash folder?
What are the associations between # shortcuts and displayed categories?
I am asking this since I now use Juraj’s setting to share stash playground scripts among my images. This is fantastic…
Cheers,
Alexandre
--
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel http://www.bergel.eu
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
Hi!
How can I embed a Roassal visualization in Spec? There is the package Roassal2Spec, but since it does not contains any documentation or example, hard to use it :-)
Johan, an hello world example please :-)
Cheers,
Alexandre
--
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel http://www.bergel.eu
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
Hi Alex,
I forgot to ask at ESUG... but what are the plans for moving towards
Roassal3 and Bloc?
Because currently I am very hesitant in engaging with Telescope which may
or may not solve some of my problems... but the code is really, really hard
to read for me.
So from this perspective it might be more fruitful for me to spend energy
on Bloc, provided there will be some more gradual movement from 2 to 3.
Thanks,
Peter
Hi!
I find the name “Do it all and go” pretty long. Although it describes exactly what it does, it is still a long name that does not fit well in textual descriptions.
Maybe it can be named “Run button: do it all and go” ?
Cheers,
Alexandre
--
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel http://www.bergel.eu
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
Hi,
The moose builds are failing after fixing this issues:
https://pharo.fogbugz.com/f/cases/15933
Now in ConfigurationOfMagritte3 there is no entry for pharo5.x
for Magritte-Pharo-Model, which is loaded by ConfigurationOFGlamour.
Any ideas how to fix this?
Cheers,
Andrei
Hi!
I have worked on a new class RTData, intended to replace RTDataSet and RTStackedDataSet. The discussion with Doru made me realize that having two classes does not make sense at all.
You can now do:
-=-=-=-=-=-=-=-=-=
b := RTGrapher new.
ds := RTData new.
ds points: #(3 2 5 1 3).
b add: ds.
b
-=-=-=-=-=-=-=-=-=
b := RTGrapher new.
ds := RTData new.
ds points: RTShape withAllSubclasses.
ds y: #numberOfMethods.
ds x: #numberOfLinesOfCode.
b add: ds.
b
-=-=-=-=-=-=-=-=-=
b := RTGrapher new.
ds := RTData new.
ds points: RTShape withAllSubclasses.
ds y: #numberOfMethods.
b add: ds.
b
-=-=-=-=-=-=-=-=-=
I have marked RTDataSet and RTStackedDataSet as obsolete.
Cheers,
Alexandre
--
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel http://www.bergel.eu
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
Hi all,
thanks to help from the GT guys Andrei and Alexei here at ESUG15 I am now happy to announce that Spec can now play together nicely with GT presentations :-)
Concretely: I have implemented a new Spec ComposableModel called GlamourPresentationModel that acts as a small wrapper around any presentation of Glamour (i.e. any subclass of GLMPresentation). With this, you can use as a widget in your Spec UI such cool things like
- The GT Inspector
- The Playground
- The Browser
GlamourPresentationModel is a very small class that is easy to use, with just one API method for its configuration. By default it opens a Playground, but you can configure it to open any GLMPresentation subclass. Here are 2 examples:
"open a playground"
GlamourPresentationModel new openWithSpec.
"open an inspector on 42"
|ui|
ui := GlamourPresentationModel new.
ui presentationClass: GTInspector startOn: 42.
ui openWithSpec
The GlamourPresentationModel is currently in my Playground repository on Smalltalkhub. ( http://smalltalkhub.com/#!/~jfabry/Playground/packages/Spec-Glamour ) There is also an example UI called GlamourPMExample that shows how to use it.
I tried it with Pharo 4 but not yet with Pharo 5. I will push on its integration in Pharo 5 in a few months. Please use it and tell me how it works out for you!
---> Save our in-boxes! http://emailcharter.org <---
Johan Fabry - http://pleiad.cl/~jfabry
PLEIAD and RyCh labs - Computer Science Department (DCC) - University of Chile
Hi!
After the discussion with Doru, we have made the following improvement:
- smaller labels in Grapher
- labels are now gray and not black
- scrollbar are thinner
Cheers,
Alexandre
--
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel http://www.bergel.eu
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
Hello,
I'm thinking of attending Camp Smalltalk 2015 in Portland, OR this August.
https://www.picatic.com/event14352674835773927
Any Roassal / Moose hackers also attending? I haven't programmed in
Squeak/Smalltalk in quite a few years, I was hoping to learn to use Roassal
during the camp.
Thanks!
--
Duncan.
Hi!
Today Usman and I have pair-programmed. We improved the legend builder.
Here is an example
Check this out:
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
b := RTMondrian new.
b shape rectangle
width: [ :c | c numberOfVariables * 5 ];
height: #numberOfMethods.
b nodes: RTShape withAllSubclasses.
b edges connectFrom: #superclass.
b layout tree.
b normalizer
normalizeColor: #numberOfLinesOfCode using: { Color black. Color red }.
b build.
lb := RTLegendBuilder new.
lb view: b view.
lb addText: 'System complexity view'.
lb addRectanglePolymetricWidth: 'number of methods' height: 'Line of code' box: 'a Pharo class'.
lb addColorFadingFrom: Color red to: Color black text: 'Number of lines of code'.
lb build.
b
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Cheers,
Alexandre
--
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel http://www.bergel.eu
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
Dear Friends and Colleagues
Yesterday we had a wonderful Roassal Camp Smalltalk.
Thanks to all the participants.
We had crazy programming sessions and nice chats. Below you will find a short description of what we have done. The description contains code snippets. Feel free to try. Some of them are impressive.
Cheers,
The Roassal Team
- Move code from DynaCase to Roassal. Thanks Peter U. and his team! TRConstraint has been significantly improved! Check the class TRConstraint
- New attach points have been added. Again, thanks to Peter U. and his team! Look at the classes RTRectangleAttachPoint and its friends
-=-=-=
v := RTView new.
e1 := (RTBox new size: 50) elementOn: 1.
e2 := (RTEllipse new size: 50) elementOn: 2.
v add: e1; add: e2.
e2 translateBy: 30 @ 60.
e1 @ RTDraggable.
e2 @ RTDraggable.
s := RTArrowedLine new color: Color black.
s attachPoint: RTRectangleAttachPoint new.
l := s edgeFrom: e1 to: e2.
v add: l.
v
-=-=-=
- New interaction called RTDraggableSnapToGrid. Again, another great contribution of Peter's team. This interaction is supported by RTInteractionBuilder. Here is an example:
-=-=-=-=
b := RTMondrian new.
b interaction snapToGrid.
b shape rectangle size: 20.
b nodes: (1 to: 9).
b layout grid.
b
-=-=-=-=
- Rounded rectangle shape. Here is an example:
-=-=-=
v := RTView new.
e1 :=((RTRoundedBox new borderRadius: 10; size: 50) + RTLabel ) elementOn: 1.
e2 := (RTEllipse new size: 50) elementOn: 2.
v add: e1; add: e2.
e2 translateBy: 80 @ 60.
e1 @ RTDraggable.
e2 @ RTDraggable.
s := RTArrowedLine new color: Color black.
s attachPoint: RTRectangleAttachPoint new.
l := s edgeFrom: e1 to: e2.
v add: l.
v
-=-=-=
- A whole bunch of line decorations! Thanks Peter's team again!!!!!
-=-=-=
| v b1 b2 edges |
b1 := (RTBox new
size: 100;
element)
translateTo: 0 @ 0;
@ RTDraggable.
b2 := (RTBox new
size: 100;
element)
translateTo: 400 @ 0;
@ RTDraggable.
edges := OrderedCollection new.
edges add: ((RTArrowedLine new head: RTFilledDiamond asHead; color: Color black; width: 2; attachPoint: (RTRectangleAttachPoint new offset: 15)) edgeFrom: b1 to: b2).
edges add: ((RTDecoratedLine new color: Color blue; width: 2; attachPoint: (RTRectangleAttachPoint new offset: 15)) edgeFrom: b1 to: b2).
edges add: ((RTDecoratedLine new filledDiamondHead; color: Color green; width: 2; attachPoint: (RTRectangleAttachPoint new offset: 15)) edgeFrom: b1 to: b2).
edges add: ((RTDecoratedLine new filledDiamondHead; emptyCircleTail; color: Color red; width: 2; attachPoint: (RTRectangleAttachPoint new offset: 15)) edgeFrom: b1 to: b2).
v := RTView new
add: b1;
add: b2;
addAll: edges.
edges do: [ :each | each update ].
^ v
-=-=-=
- discussing with Thomas and Niall, we discuss about: Popups, overrides methods, a better structurre for roassal2-visualworks. a new application for visualworks with all roassal examples.
- Integration to SciSmalltalk
- Styled multiline:
-=-=-=
v := RTView new.
es := (RTEllipse new size: 20; color: (Color blue alpha: 0.3)) elementsOn: (1 to: 10).
RTCircleLayout new on: es allButFirst.
v addAll: es.
es @ RTDraggable.
TRConstraint move: es first onTheCenterOf: es allButFirst.
shape := RTStyledMultiLine new.
shape filledArrowHead; arrowTail; dashdotLine; orthoVertical.
shape attachPoint: (RTRectangleAttachPoint new).
lines := shape edgesFrom: es first toAll: es allButFirst.
v addAll: lines.
v
-=-=-=
--
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel http://www.bergel.eu
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
Hi,
The default search options that come with GTSpotter are nice, but the power
of a moldable tool like GTSpotter stems from how it can be extended by
external packages.
To get an idea of how this works in practice, you can find an example of
how to make GTSpotter to extend the search through files with the ability
of diving in an XML file in the XMLParser project.
For example, the screenshot shows that we dived in an XML file, and in that
file we can directly search for XML elements:
[image: Inline image 2]
Here are some more details of how this works:
http://www.humane-assessment.com/blog/searching-xml-with-gtspotter/
Remember that GTSpotter competes at the ESUG Innovation Awards :).
Cheers,
Doru
--
www.tudorgirba.com
"Every thing has its own flow"
Hi,
GT Spotter, the novel Pharo search interface, just entered the ESUG 2015
Innovation Technology Awards competition.
GT Spotter is part of the Glamorous Toolkit project (gt.moosetechnology.org)
and it offers an elegantly uniform search interface for any objects,
including classes, packages, methods, senders, files, playground pages,
examples, projects, and even your custom objects. It can be easily
extended, currently featuring more than 100 such extensions.
[image: Inline image 1]
To get a better idea of what GT Spotter brings, here is an overview
slideshow:
http://www.slideshare.net/girba/gt-spotter
Don't miss the live demo at ESUG :).
Cheers,
The Glamorous Team
Dear All,
Let’s meet at 9:00 in the Lobby.
We will figure out where the camp will be run.
There are nice tables outside. We will probably use them :-)
Cheers,
Alexandre
> On May 5, 2015, at 7:51 PM, Alexandre Bergel <abergel(a)dcc.uchile.cl> wrote:
>
> Dear Colleagues and Friends,
>
> We are happy to announce we will organize a CampSmalltalk about the Roassal visualization engine, on _Sunday 12 July_.
>
> As far as we have seen, the interests are multiple. Here is a list of topics we will happy to work on:
> - Port of Roassal on VisualWorks
> - Using Roassal on Gemstone
> - HTML/JavaScript export
> - Improving Grapher, our charting library
>
> If you wish to participate, get in touch with us. Since we will probably have a sponsoring of the event, it would be nice to know how many will attend to ease the logistic and the pizza ordering :-)
>
> Cheers,
> Alexandre
> --
> _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
> Alexandre Bergel http://www.bergel.eu
> ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
>
>
>
>
> _______________________________________________
> Esug-list mailing list
> Esug-list(a)lists.esug.org
> http://lists.esug.org/mailman/listinfo/esug-list_lists.esug.org
>
--
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel http://www.bergel.eu
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.