Hello
RTZoomableView should enable zooming with mouse wheel. It works fine on
Linux, not tested on Mac, but doesn't work for me on Windows (mouse wheel
does nothing). For example, this one:
RTRoassalExample new exampleScrollZoom
Jan
--
View this message in context: http://forum.world.st/Roassal2-RTZoomableView-not-working-on-Windows-tp4786…
Sent from the Moose mailing list archive at Nabble.com.
Dear All,
Over the last few weeks, we have worked on a new Mondrian builder.
Look for the class RTMondrian.
The new Mondrian is faster than the previous Mondrian (in Roassal2) and supposedly contains less bug.
In this builder, the syntax slightly changed. However, the migration is fairly trivial.
Before you had to write:
-=-=-=-=-=-=-=-=-=-=-=-=
b := RTMondrianViewBuilder new.
b nodes: (1 to: 5).
b edgesFrom:: [:v | v + 1].
b treeLayout.
b build.
-=-=-=-=-=-=-=-=-=-=-=-=
Now, you will write:
-=-=-=-=-=-=-=-=-=-=-=-=
b := RTMondrian new.
b nodes: (1 to: 5).
b edges connectFrom: [:v | v + 1].
b layout tree.
b build.
-=-=-=-=-=-=-=-=-=-=-=-=
As you can see, edges and layout are defined slightly differently. There are good reason for this. I foresee the fact that should be able to build some more elaborated and expressive line and layout. For example, we should be able to say we want edges that are taken into account by the layout or not. Or providing control points, or conditional instruction. For the layout, same things, we may want to partition (e.g., elements with edges using a particular layout, and isolated elements in a different locations). Behind the scene, we will have edge and layout builder. Maybe in the future we will have node builder as well… No idea for now :-)
Also, the default shape builder has also changed. Let’s see if you guys can live without a border color :-D
Anyway, I recommend to try out this new Mondrian builder and report for bugs and wanted features.
Also, we will soon deprecate the RTGraphBuilder, since this new Mondrian builder will do much more than what RTGraphBuilder offers. RTGraphBuilder was a very nice experiment, and we learned a lot from it. Now, it is time to capitalize and push Roassal further!
We also have other cool stuff coming. Have you noticed the HTML exporter? :-D
Cheers,
Alexandre
--
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel http://www.bergel.eu
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
Hi!
A new builder, part of Charter is now in!
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
b := RTDoubleGrapherBuilder new.
b extent: 300 @ 200.
ds := RTStackedDataSet new.
ds points: #(4 3 2 2).
ds barShape width: 40.
b add: ds.
ds := RTStackedDataSet new.
ds points: (10 to: 13).
ds dotShape color: Color blue.
ds connectColor: Color red.
b addRight: ds.
b axisXNoLabel; axisY.
b axisConfiguration color: Color red.
b axisYRight.
b build.
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Cheers,
Alexandre
--
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel http://www.bergel.eu
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
Status: New
Owner: ----
Labels: Type-Defect Priority-Medium
New issue 1097 by nicolaih...(a)gmail.com: Not all shapes support
borderColor/borderWidth
https://code.google.com/p/moose-technology/issues/detail?id=1097
Some shapes are using the default stroke and/or the default stroke width,
even if the user sets a borderColor/borderWidth
|v ver circle box poly es |
v := RTView new.
ver := (1 to:5)collect:[:i | Point r:100 degrees:(360/5*i)].
circle := RTEllipse new size: 200; color: Color red;
borderWidth:5;borderColor: Color green.
box := RTBox new size: 200; color: Color red; borderWidth:5;borderColor:
Color green.
poly := RTPolygon new size: 200; vertices:ver; color: Color red;
borderWidth:5;borderColor: Color green.
es := circle elementOn:'hello'.
v add: es.
es := box elementOn:'hello'.
v add: es.
es := poly elementOn:'hello'.
v add: es.
v @ RTDraggableView .
RTGridLayout on: v elements.
v
"all shapes should use the provided borderWidth (5) and borderColor (Green)"
moose build 3147
* Type-Defect
* Component-Roassal2
Attachments:
shapes.png 11.5 KB
--
You received this message because this project is configured to send all
issue notifications to this address.
You may adjust your notification preferences at:
https://code.google.com/hosting/settings
Hi,
I put my java source code directory in the root folder of the infamix. At
execute the command to generate MSE file, the infamix throws the
NullPointerException while processing a class.
The MSE file is generated, but I dont know if this can to cause problems in
the model.
What is the cause this problem?
--
View this message in context: http://forum.world.st/inFamix-throws-NullPointerException-error-at-generate…
Sent from the Moose mailing list archive at Nabble.com.
Hi Alex,
In Eyesee, we have the concept of composite diagrams i.e. you can have
multiple charts in the same diagram with individual y axes (see attached
screenshot). This is a handy concept because not only you could have two
charts on the same diagram but each chart has its own axis. For comparing
disparate values, this is convenient because one does not need to think
about normalizing Y values of charts to the same scale. One example could
be showing trends of software metrics over time.
I saw that you ported more code from Charter to Grapher so I am having a
look at the examples. Is it possible to have composite chart diagrams with
Grapher? Do you plan to add this feature?
Here is a exemplary script that illustrates the need for composite diagrams:
| grapher minDate ds random dates grapherBlock|
dates := (Array with: Date today with: Date yesterday with: Date tomorrow)
collect: #asDateAndTime.
minDate := dates min.
random := Random seed: 10.
grapher := RTGrapherBuilder new
extent: 300 @ 200;
yourself.
grapherBlock := [:index |
ds := RTDataSet new.
ds interaction popup.
ds dotShape ellipse color: (Color red alpha: 0.5); size: 10.
ds points: dates sorted;
x: [ :aDate | aDate asUnixTime - minDate asUnixTime ];
connectColor: (Color random alpha: 0.5);
y: [ :d | (random nextInt: 100) * index].
grapher add: ds].
100 to: 103 do: grapherBlock.
1 to: 3 do: grapherBlock.
grapher axisConfiguration noDecimals.
grapher axisY.
grapher axisConfiguration
labelRotation: -30;
title: '';
numberOfLabels: dates size - 1;
labelConvertion: [ :v | (DateAndTime fromUnixTime: v + minDate asUnixTime)
asDate ] .
grapher axisX; build.
grapher view open
regards,
Usman
[image: Inline image 2]
[image: Inline image 3]
[image: Inline image 1]
Hi!
We had a wonderful week here in Cochabamba, Bolivia. Juan-Pablo, Juraj and I have taught Pharo and Moose during 5 days. Was pretty cool!
Here is a script that shows that one of the group was able to produce in just 3 days.
The figures analyze the content of my package-cache directory. It shows the number of commit per day, per hour, per author.
-=-=-=-=-=-=-=—=
myRepository := MCCacheRepository default.
myRepository allVersionNames.
packageNames := myRepository allVersionNames select: [ :e | 'Roassal*' match: e ].
"packageNames := myRepository allVersionNames. "
lista := packageNames collect: [ :packageName |
myRepository versionInfoFromVersionNamed: packageName. ].
autores := lista groupedBy: [ :e | e author ].
fechas := lista groupedBy: [ :e | e date ].
horas := lista groupedBy: [ :e | e time hour ].
c := RTComposer new.
v := c view.
c gap: 50.
popup := RTPopup text: [:assoc | assoc key asString, ', commits:', assoc value size asString].
elements := (RTEllipse elementsOn: fechas associations).
v addAll: elements @ popup.
builder := RTGlobalBuilder new.
builder
view: v;
normalizeX: [ :e | e key asTimeStamp asUnixTime ]
min: 0
max: 50000;
normalizeSize: [:e | e value size ] min: 10 max: 20;
normalizeColor: [:e | e value size ];
alphaColor: 0.3;
elementsToConsider: elements;
execute.
"We add a line from the left most element to the right most element"
v add: ((RTLine new color: Color lightGray) edgeFrom: v elements leftMostElement to: v elements rightMostElement).
"It make sense to only drag horizontally"
v @ RTHorizontalDraggableView.
c propagateHighlight.
c group: 'date'.
listTags := Array new: autores size.
autores doWithIndex: [ :each :i|
test := each groupedBy: [ :e | e date ].
elements := (RTEllipse elementsOn: test associations).
v addAll: elements @ popup.
builder
elementsToConsider: elements;
execute.
v add: ((RTLine new color: Color lightGray) edgeFrom: elements leftMostElement to: elements rightMostElement).
newTag := 'Author' asString, i asString.
listTags at: i put: newTag.
c propagateHighlight.
c group: newTag.
].
popup := RTPopup text: [:assoc | 'Hour: ' asString, assoc key asString, ', commits:', assoc value size asString].
elements := (RTEllipse elementsOn: horas associations).
v addAll: elements @ popup.
builder := RTGlobalBuilder new.
builder
view: v;
normalizeX: [ :e | e key ]
min: 0
max: 380;
normalizeSize: [:e | e value size ] min: 10 max: 20;
normalizeColor: [:e | e value size ];
alphaColor: 0.3;
elementsToConsider: elements;
execute.
v add: ((RTLine new color: Color lightGray) edgeFrom: elements leftMostElement to: elements rightMostElement).
c propagateHighlight.
c group: 'Hour'.
popup := RTPopup text: [:assoc | assoc author asString, ', ' , ' message size: ', assoc message size asString].
elements := (RTEllipse elementsOn: lista).
v addAll: elements @ popup.
builder := RTGlobalBuilder new.
builder
view: v;
normalizeX: [ :e | e timeStamp asUnixTime ]
min: 0
max: 50000;
normalizeSize: [ :e | e message size ] min: 10 max: 20;
normalizeColor: [ :e | e message size ];
alphaColor: 0.3;
elementsToConsider: elements;
execute.
v add: ((RTLine new color: Color lightGray) edgeFrom: elements leftMostElement to: elements rightMostElement).
c propagateHighlight.
c group: 'Comment'.
listTags doWithIndex: [ :e :i|
(i == 1)
ifTrue: [
c move: e below: 'date'.
last := e.
c nameGroup: 'date' as: 'History by Date'.
aAuthor := autores keys at: i.
c nameGroup: e as: 'History by: ' asString, aAuthor asString.
]
ifFalse: [
c move: e below: last.
last := e.
aAuthor := autores keys at: i.
c nameGroup: e as: 'History by: ' asString, aAuthor asString.
]
].
c move: 'Hour' below: last.
c nameGroup: 'Hour' as: 'History by Hour'.
c move: 'Comment' below: 'Hour'.
c nameGroup: 'Comment' as: 'History by Comment'.
"We add a small legend"
v canvas addFixedShape: (TRLabelShape new text: 'History of Changes').
TRConstraint stickAtTheBottomOfTheWindow: v canvas fixedShapes last.
^v
-=-=-=-=-=-=-=—=
Cheers,
Alexandre
--
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel http://www.bergel.eu
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
Hi, sorry for bothering, but I’m trying to understand what I can use to build cool UIs. And with GToolkit I’ve started to think about Glamour. I’ve read a chapter in Deep Into Pharo book, and all there is in Moose Book. And everywhere there is this idea of “flow”, that one parts of visualization, are representing something transmitted from other parts. There are a lot of cases when I want to do something that does not have this notion of a flow. For example I want to have a main view and then use some widgets to modify it, or I have two representations of the same model and want to keep them in sync. Should I use a “dynamic presentation” for that? Are there any real projects like that, to see how they are implemented?
Uko
I' trying to customize label in RTPieBuilder this is my sample.
b := RTPieBuilder new.
b interaction popup.
b view: v.
b objects: listByRegion associations.
b slice: [ :e | e value size ].
b globalRule distinctColor.
"b labelled."
b label: (RTLabel new text: 'label test').
b build.
I commented "b labelled", but when I try to set label with RTLabel I get
it error in trachelShape, there is a way to set a custom label?
Thanks to the advances of GT, I have my doubt about the usefulness of the easel.
Cheers,
Alexandre
--
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel http://www.bergel.eu
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.