Hi,
Is it possible in Roassal to draw nodes in a layout with different
opacities? A simple example would be: drawing a tree with nodes less opaque
the deeper their nesting level is.
Cheers,
Dennis
Guillaume wrote:
>You can use PetitPreprocessor:
>Gofer new
> squeaksource3: 'PetitPreprocessor';
> package: 'PetitPreprocessor';
> load
>
>Now it's just transform a matching regex to a substitution String (MyParser
>preProcess: ('toPreprocess' asRegex) into: 'preProcessed' ) but I plan to
>improve it by providing a PParser to detect a matching and apply its
>transformation block (myParser preProcessor: (matchingParser ==> [:m |
>..... ])).
Thank you. Will try that first
Stephan
Hi
What is the best way to handle pre-processor directives with PetitParser without polluting
the parsing too much? Any suggestions?
unit forms;
interface
{$IFDEF WINDOWS}
uses bla;
{$ENDIF}
{$IFDEF LINUX}
uses bla2;
{$ENDIF}
Diego & Stephan
Hello all,
I sat with Benjamin today to have a look at Glamour performance when
displaying large text files. For reminder, when displaying text in glamour,
the time to display text increases exponentially with the size of the text
being displayed.
Two observations:
1/ Whereas, with the following script the execution time remains equivalent
to that of morphs
MessageTally spyOn: [ (*GLMPluggableTextMorph*
on: [ (StandardFileStream fileNamed: 'testfile-glam-3500.txt') contents ]
text: #value
accept: nil) openInWindow extent: (1273.0(a)738.0) ]
the execution of this script is four times longer:
| browser text|
browser := *GLMTabulator* new.
browser column: #text.
browser transmit to: #text; andShow: [ :a |
a text
title: 'Text with selection';
display: [(StandardFileStream fileNamed: 'testfile-glam-3500.txt')
contents]].
MessageTally spyOn: [browser openOn: 2].
2/ A bit of digging (using time profiler) shows that the garbage collector
is taking 75% of the execution time. [image: Inline image 1]
Doru, will you have an idea what makes garbage collector execute and take
extra seconds when the text is displayed in a glamour browser instead of
individual glmaour widget?
The moose image with the scripts can be found here if you want to have a
look.
http://dl.dropbox.com/u/11804892/glamour-perf-tests.zip
thanx in advance,
Usman
Hello
PetitParser comes with a Factorial Language example.
The comment of the class FLFactorialExample states
"I implement the example given in "factorial.txt". The code can be
edited directly in the Smalltalk code browser and is automatically
parsed, transformed and eventually compiled down to Smalltalk
bytecodes."
Where do I find the description of this language, i.e. the file 'factorial.txt'?
Regards
Hannes
Status: New
Owner: ----
CC: alexandr...(a)gmail.com
Labels: Type-Defect Priority-Medium Component-Roassal Milestone-4.7
New issue 834 by tu...(a)tudorgirba.com: Roassal layouts do not properly take
into account userDefinedEdges
http://code.google.com/p/moose-technology/issues/detail?id=834
To reproduce see the example below:
| edges |
view nodes: #(1 2 3).
edges := view edgesFrom: [:each | each - 1].
view shape line color: Color red.
view edges: #(3) from: [:each | each - 2] to: #yourself.
view treeLayout userDefinedEdges: edges
If the user defined edges would be taken into account, the tree would
appear on one line (1->2->3). Instead it appears laid out as 1->2, 1->3 .
Ben Coman wrote:
>
> I've been playing with ROCircleLayout in the form of ROCircleLayoutNew
> and ROCircleDynamicLayout. This was mainly to deal with where element
> dimensions are much different (eg much wider than they are high). Its
> not polished but I've come to the limit of time I can be distracted by
> it at this time, so I'm just presenting it in case you find anything
> useful.
> Have a look at ROExample...
> #circleWideElements
> #circleWideElementsNewLayout
> #circleWideElementsDynamic
> #dynamicCirclePlay
>
> cheer -ben
>
>
btw, I'm a bit confused by what Monitcello is showing me in terms of
changes versus your Roassal.289 version. It shows ROCircleLayout2 and
ROCircleLayout3 as missing from your 289 mcz, which implies they are is
in my image, except I have previously deleted those two classes from my
image prior to saving through Monticello. Do they show up to you?
Hi,
How do I programmatically export a PNG of the entire visualization from Roassal?
I tried to use the ROView>>bitmap, but it returns a cropped image.
Cheers,
Doru
--
www.tudorgirba.com
"Every thing has its own flow"
Status: New
Owner: ----
Labels: Type-Defect Priority-Medium
New issue 792 by google....(a)ben.coman.com.au: Mondrian - broken popupText:
http://code.google.com/p/moose-technology/issues/detail?id=792
I have isolated what I assume is an issue introduced in
ConfigurationOfMondrian-AlexandreBergel.332 with #popupText:
Test Case to execute in Mondrian Easel...
view interaction popupText: [ :es | 'popupText works'].
view shape label.
view node: 'node value'.
With a freshly unzipped Moose_Suite_4_6,
hovering over the node displays a blue box that says 'popupText works'
Using Monticello Browser to load
ConfigurationOfMondrian-AlexandreBergel.331 then doing '(Smalltalk at:
#ConfigurationOfMondrian) project lastVersion load'
has the same behaviour.
With Monticello Browser, loading
ConfigurationOfMondrian-AlexandreBergel.332 then doing '(Smalltalk at:
#ConfigurationOfMondrian) project lastVersion load'
hovering over the node displays a white box that says 'node value'
This behaviour persists through to current
ConfigurationOfMondrian-AlexandreBergel.348
The comment on 332 is: 2.147 : Pharo ground is seriously shaking those
days... popupText: does not use the Pharo popup, it instead uses popupView:
Platform: Windows 7
Status: New
Owner: tu...(a)tudorgirba.com
Labels: Type-Defect Priority-Medium Component-Glamour Milestone-4.7
New issue 833 by tu...(a)tudorgirba.com: Roassal presentation should populate
by default the selection port on selection
http://code.google.com/p/moose-technology/issues/detail?id=833
Selecting a figure (or perhaps just clicking on it) in a Roassal painting
should populate the selection port of the pane containing the
RoassalPresentation.
Status: New
Owner: ----
Labels: Type-Defect Priority-Medium
New issue 830 by google....(a)ben.coman.com.au: ROLabel dynamic text not
updating bounds/ROBorder properly
http://code.google.com/p/moose-technology/issues/detail?id=830
The code below results in the image attached, where you can see the
ROBorder does not encompass the text. The border should probably expand to
encompass dynamically changing shapes. but not necessarily since you may
want to have a border only around the label with the children having no
border. The symptom is more that the width is inconsistent between each of
the text nodes.
-----------------
| view rawView node1 node2 node3 node4 |
rawView := ROView new.
view := ROMondrianViewBuilder view: rawView.
node1 := ROElement new .
node1 model: 'node1'.
node1 addShape: ROBorder.
node1 addShape: (ROLabel text: [ 'node1 ' , node1 bounds extent
asString, ' ', node1 bounds asString ] ).
node1 addInteraction: RODraggable.
rawView add: node1.
node2 := ROElement new .
node2 model: 'node2'.
node2 addShape: ROBorder.
node2 addShape: (ROLabel text: [ 'node2 ', String crlf, node2 bounds
extent asString, ' ', node2 bounds asString ] ).
node2 addInteraction: RODraggable.
rawView add: node2.
node3 := ROElement new .
node3 model: 'node3'.
node3 addShape: ROBorder.
node3 addShape: (ROLabel text: [ 'node3 ', String crlf, node3 bounds
extent asString, String crlf, node3 bounds asString ] ).
node3 addInteraction: RODraggable.
rawView add: node3.
node4 := ROElement spriteOn: 'node4' .
node4 addShape: (ROLabel text: [ 'node4 ', String crlf, node4 bounds
extent asString, String crlf, String crlf, node4 bounds asString ] ).
node4 addInteraction: RODraggable.
rawView add: node4.
ROVerticalLineLayout on: rawView elements.
ROEaselMorphic new populateMenuOn: view.
view noLayout.
view open
This is Moose4.7 with Roassal.283 on Windows 7.
Attachments:
ROBorder does not encompass ROLabel text.png 17.6 KB
It might be interesting in some cases to have very detailed moose
models, at the level of single instruction
(there is a loop, its test compares variable x to 5, ...)
That would generates incredibly huge models, of course, but for
localized tasks it could be useful.
Was there some work along these lines at any point in time?
Or are we the only one to think it could be useful?
nicolas
Status: New
Owner: tu...(a)tudorgirba.com
Labels: Type-Defect Priority-Medium Component-Finder Milestone-4.7
New issue 832 by tu...(a)tudorgirba.com: Meta Browser should provide
information about derived properties
http://code.google.com/p/moose-technology/issues/detail?id=832
It should somehow show the derived properties different from the non
derived ones. Perhaps simply using /, like in UML
Hi folks,
At the following address you will find a repository of MSE files derived from the Qualitas Corpus:
=> http://scg.unibe.ch/pangea/
The purpose of this repository is providing a common and easy to setup dataset for (moose-based) analyses.
The files can be freely downloaded and used.
The repository has the following structure:
- QualitasCorpus
- yyyymmdd(e | r): qualitas corpus with MSE files
- yyyymmdd(e | r)-compressed: original qualitas corpus (as downloaded from http://qualitascorpus.com/)
- extractor: tool used to generate MSE files (verveineJ SVN rev. 192)
- mse: generated MSE files
- scripts: shell script for setting up the analysis data folder
How to setup the analysis data folder ?
1. download all files available at http://scg.unibe.ch/pangea/scripts/
2. chmod +x
3a. ./fetchQCr.sh for downloading and uncompressing Qualitas Corpus "recent release" + MSE files
3b. ./fetchQCe.sh for downloading and uncompressing Qualitas Corpus "evolution release" + MSE files
at the end you should have an exact clone of http://scg.unibe.ch/pangea/QualitasCorpus/20120401r/ and/or http://scg.unibe.ch/pangea/QualitasCorpus/20120401e/
How to run an analysis ?
Use a script like this>
-----------------------------------------------
cog="path/to/CogVM"
moose="path/to/moose.image"
smalltalk="path/to/SmallTalkCode.st"
for m in $(find . -name 'model.mse'); do
src=${m/model.mse/src}
ln -s $m model.mse # link to model file
ln -s $src src # link to src file
$cog -nodisplay $moose $smalltalk
rm model.mse
rm src
done
-----------------------------------------------
where SmallTalkCode.st is something like>
-----------------------------------------------
| stream model |
model := MooseModel new.
stream:= MultiByteFileStream newFrom:(FileStream readOnlyFileNamed: 'model.mse').
model name:(FileDirectory baseNameFor: stream localName).
model importFromMSEStream: stream.
model size > 0 ifTrue: [ model install ].
model rootFolder:'src'.
"… analysis ..."
WorldState addDeferredUIMessage: [ SmalltalkImage current snapshot: false andQuit: true ].
-----------------------------------------------
Andrea
Status: New
Owner: alexandr...(a)gmail.com
Labels: Type-Defect Priority-High Component-Roassal
New issue 826 by alexandr...(a)gmail.com: Roassal hover popup on edges
http://code.google.com/p/moose-technology/issues/detail?id=826
With the following script, in Mondrian when you hover over edges a popup
appears showing the name of the edge. Is the same possible with Roassal?
view shape rectangle size: 20.
nodes := view nodes: (1 to: 20).
view edges: (2 to: 20) from: 1 to: #yourself.
view circleLayout.
Thanks Ben for noticing this!
Hi,
I' trying to run verveineJ on the Eclipse source code .. and i always get this:
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
at java.util.LinkedList.addBefore(LinkedList.java:778)
at java.util.LinkedList.add(LinkedList.java:198)
at fr.inria.verveine.core.Dictionary.getEntityByName(Unknown Source)
at fr.inria.verveine.extractor.java.JavaDictionary.ensureFamixMethod(Unknown Source)
at fr.inria.verveine.extractor.java.VerveineVisitor.visitVariablesDeclarations(Unknown Source)
at fr.inria.verveine.extractor.java.VerveineVisitor.visit(Unknown Source)
at org.eclipse.jdt.core.dom.FieldDeclaration.accept0(FieldDeclaration.java:279)
at org.eclipse.jdt.core.dom.ASTNode.accept(ASTNode.java:2514)
at org.eclipse.jdt.core.dom.ASTNode.acceptChildren(ASTNode.java:2585)
at org.eclipse.jdt.core.dom.TypeDeclaration.accept0(TypeDeclaration.java:484)
at org.eclipse.jdt.core.dom.ASTNode.accept(ASTNode.java:2514)
at org.eclipse.jdt.core.dom.ASTNode.acceptChildren(ASTNode.java:2585)
at org.eclipse.jdt.core.dom.CompilationUnit.accept0(CompilationUnit.java:219)
at org.eclipse.jdt.core.dom.ASTNode.accept(ASTNode.java:2514)
at fr.inria.verveine.extractor.java.FamixRequestor.acceptAST(Unknown Source)
at org.eclipse.jdt.core.dom.CompilationUnitResolver.resolve(CompilationUnitResolver.java:1016)
at org.eclipse.jdt.core.dom.CompilationUnitResolver.resolve(CompilationUnitResolver.java:628)
at org.eclipse.jdt.core.dom.ASTParser.createASTs(ASTParser.java:988)
at fr.inria.verveine.extractor.java.VerveineJParser.parse(Unknown Source)
at fr.inria.verveine.extractor.java.VerveineJParser.main(Unknown Source)
I tried adding -Xmx4000m .. but i still get the same exception.
Is there another trick ?
Thanks.
Andrea
With the Ortho layouts in Mondrian and now Roassal, I find that it can
get a bit messy when moving nodes around when each node pair has its
middle line segment spaced at 50% from each end. I have thought for a
while that it might even better if the middle segment could be shared
among child nodes. So I've done a basic implementation this, and there
are a lot of rough edges, but I wanted to share this before going any
further to check if this approach is reasonable, or if there is a better
way to proceed.
A few of the things that need to be sorted are:
1. Distortion when a node is dragged up so that the top of windows
stretches up
2. Arrows go a bit strange if the child is dragged higher than the parent.
3. The horizontal mid-segments need to be offset, otherwise the join
together when a child node is dragged to the far side.
Attached is an image showing the two methods side by side, and also the mcz.
cheer -ben
Hi,
I just wanted to wish the ESUG participants a nice conference. Please do let us know of any meaningful news.
Cheers,
Doru
--
www.tudorgirba.com
"Every thing has its own flow."
Hi!
I have a list presentation. When an item of that list is selected, a
text editor opens in another pane. I want to restrict (like when
you're editing a method) to select another item in the list if there
are changes in the editor. Is there some way to execute some code when
the user tries to select something?
Thanks in advance
Nahuel.