Hi all
allDeclaredProperties
^self mooseDescription computableAttributes
and I need computableAttributes
because apparently fame does not have that.
Stef
Dear list,
After a fruitful meeting with Doru at Bern, here is the current list
of issue to be resolved in the reference implementation of Famix3
(SqMoose), just so you know. Feel free to ask
38
Assigned
[FAME] Handling of unknown attributes when importing MSE files
(mismatched models)
39
Started
Implement a Visitor for Famix3
40
Closed
FAMIX3: review method organization to clean Famix-Core
41
New
[MOOSE] port SCG algorithms to SqMoose
42
New
[FAME] Add annotation/comment support in Fame metametamodel
43
New
[FAME] add helper methods for multivalued attributes
44
New
[FAMIX] Compability visitor for Famix2/famix3
45
Assigned
[FAMIX3] NamedEntity#packagedIn should be derived and renamed to
parentPackage
46
Assigned
[FAMIX3] SmalltalkImporter: Classes/Types should be registered in
ContainerEntity#types and not in Package#childNamedEntities
47
Assigned
Smalltalk importer: check class registration
48
Assigned
Smalltalk importer: fix stub
49
Assigned
[FAMIX3] Smalltalk Importer: implement candidate invocations
50
Assigned
[FAMIX3] Check attribute declarations are correct and synchronized
51
Assigned
[FAMIX3] Remove generic setters from the model (from: to: belongsTo:)
52
Assigned
Check current usage of NamedEntity#modifiers attribute
53
Assigned
[FAMIX3] round-trip extraction/generation test with Fame
--
Simon
With such a name, I couldn't resist to try.
I downloaded Glamour and all the test pass (except one expected
failure).
What next? How I can open one? I skimmed the test, but I do not know
where to start.
Cheers,
Alexandre
--
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel http://www.bergel.eu
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
> I've loaded the mondrian form squeaksource and I'm trying it. I find
> it quite different for the one used in OB.
Yes, but very close to the VW version. We have a number of scripts and
visualization made in VW that we would like to reuse. Moreover, in my
opinion, the new version is simpler to use (and probably faster to
render).
The incantation to install the latest version of Mondrian in Pharo:
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
ScriptLoader new installer ss project: 'Mondrian'; install:
'MondrianLoader'. ScriptLoader perform: #loadMondrian
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
> I'll continue to try it as I'm reading Micheal Master thesis. I'm
> trying on a simple graph first with tasks and node, but also I'd like
> a special kinf of shape. Alex, I didn't found the way to compose
> shape. Is it possible already ?
Yes, you can compose them using MOFormsBuilder. There are numerous
example in MOReadme, MONewFormsBuilderTest, and MOFormsBuilderTest
(but some of them go red).
An example that you can run with: MOReadme new flagExample
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
| builder view |
builder := MOFormsBuilder new.
"Assuming you want a grid made up of 3 columns and 2 rows"
builder
column; fill;
column; fill; center;
column; fill.
builder
row; fill; row; fill; row; fill; "For the German flag"
row; center; "The EU text"
row; pref. "For the French flag"
"We draw a German flag"
builder x: 1 y: 1 w: 3 add: (MORectangleShape new width: 30; height:
7; fillColor: Color black).
builder x: 1 y: 2 w: 3 add: (MORectangleShape new width: 30; height:
7; fillColor: Color red).
builder x: 1 y: 3 w: 3 add: (MORectangleShape new width: 30; height:
7; fillColor: Color yellow).
builder x: 1 y: 4 w: 3 add: (MOLabelShape new text: [:aNumber |'EU ',
aNumber printString]).
"We draw a French flag"
builder x: 1 y: 5 add: (MORectangleShape new width: 10; height: 20;
fillColor: Color blue).
builder x: 2 y: 5 add: (MORectangleShape new width: 10; height: 20;
fillColor: Color white).
builder x: 3 y: 5 add: (MORectangleShape new width: 10; height: 20;
fillColor: Color red).
view := MOViewRenderer new.
view popupText: [:aNumber | 'my value is ', aNumber printString ].
view draggable. "Let's make nodes draggable, yeah!"
view nodeShape: (builder shape).
view nodes: (1 to: 27).
view edges: (1 to: 27) from: #yourself to: [:each | each * each].
view layout: (MOCircleLayout new).
view open
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
> I also wonder if we could imagine a SVGRenderer to use in conjunction
> with seaside :) ? What do you think ?
Yeah, that would be nice!
> ps: David, concerning the graph button bar in OB, I'll suggest showing
> it only in the comment view.
It depends... I seldom press the comment button, except if there is a
comment in it, which is rare.
Alexandre
--
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel http://www.bergel.eu
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
Hi all,
In FAMIXScopingEntity, the method initialize is:
---
initialize
super initialize.
childNamespaces := FMMultivalueLink on: self opposite:
#parentNamespace:.
parentNamespace := nil.
globalVariables := FMMultivalueLink on: self opposite:
#parentNamespace:.
---
The class FMMultivalueLink does not exist.
Does anyone know what it is and how to fix it?
Thanks
Jannik
Hi everybody
I'm trying to use iPlasma to parse Java source files, export the model
as MSE, then import them in SqMoose using Fame.
I ran into a couple of problems when doing this, specificall the MSE
format built with iPlasma is not well parsed by Fame.
Here is a sample generated by iPlasma:
Beginning of MSE file:
(Moose.Model (entity
A) According to the MSE spec, the file cant begin directly with a name
like that, should be ((Moose.Model (entity (....))
Besides, I dont see the point of this header, it works fine without it.
(FAMIX.Namespace
(id: 6)
(name 'java::lang')
)
B) Fame infers accessor 'smalltalk-style', ie it will call #name: to
set the name of the Namespace entity in the example above.
It works in Famix3 but not in Famix2, where the setter is declared as
#setName: . It's alright with the inference rule of Meta (as I far as
I remember) but not with the new one. We should add those accessors
in Famix2 for seamless access.
(FAMIX.Class
(id: 3)
(name 'Object')
(belongsTo (idref: 6))
(isAbstract false)
(isInterface false)
C) Fame does not recognize the idref: syntax, only the ref: syntax.
The MSE spec is inconsistent about that: the grammar only defines the
ref: syntax as Fame does, but the doc talks about both an IDREF
command and a 'REF command for metamodels only'.
D) Finally, the biggest hurdle is that we dont know directly with
which version of Famix the file was created. For example, the FAMIX
package in SqMoose matches Famix3, and Famix2 is defined in a FAMIX2
package. This leads to a mismatch when trying to load the above file
which was generated with Famix2 (unless batch editing all FAMIX ->
FAMIX2)
My suggestion is that each Famix metamodel should explicitely declare
its version in its Fame package name, either Famix2 or Famix3, like
that:
FAMIXClass class>>annotation
<MSEClass: #Class super: 'FAMIX3.Type'>
<package: #FAMIX3>
^self
Does it sound ok?
--
Simon
Time millisecondsToRun: [| view |
view := MOViewRenderer new.
view nodes: (1 to: 50) forEach: [:each |
view nodes: (1 to: 10) forEach: [:ea |
view nodes: (1 to: ea * each).
view gridLayout].
view gridLayout].
view open]
=> 18955 in Pharo
=> 23566 in VW
:-)
And I am sure there are rooms for improvement (IdentityDictionary are
used with a small number of elements, a lot of OrderedCollection are
used, ...)
Alexandre
--
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel http://www.bergel.eu
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
Hi Mondrian friends,
While doing a drag and drop, I am reordering the nodes in a MORoot:
the dragged node is put at the end of the "root nodes" to make it the
last to dislpay it on the screen. I am just wondering whether this
will not interfere with other behavior.
Cheers,
Alexandre
--
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel http://www.bergel.eu
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
Dear SqMoose Crew,
I have a question about properties.
In FileImportTest>>testFiles, there are accesses to properties, e.g.,
self assert: (file propertyNamed: #TLOT) = 1.
self assert: (file propertyNamed: #NOCh) = 0.
(file propertyNamed: #TLOT) returns nil. It seems that the computing
is not done. However, if I manually trigger the computation, getting
the property returns the expected value as in:
self assert: (file totalNumberOfLinesOfText = 1). "If I remove this
line, the next one return nil"
self assert: (file propertyNamed: #TLOT) = 1
Any idea ? It seems that the meta stuff is not able to retrieve the
method that contains the property. Any idea why?
Cheers,
Alexandre
--
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel http://www.bergel.eu
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
Hi all,
see: http://www.rosuda.org/Mondrian/
Not exactly as powerful but a clash of names nonetheless ...
Regards
Thomas
--
mailto thomas j schrader at web de
____________________________________________________________________
Psssst! Schon vom neuen WEB.DE MultiMessenger gehört?
Der kann`s mit allen: http://www.produkte.web.de/messenger/?did=3123
Dear SqMoose friends,
i was wondering whether Moose-All is necessary since we have
MooseLoader.
The dependencies defined on Moose-All could be made explicit said in
MooseLoader.
Cheers,
Alexandre
--
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel http://www.bergel.eu
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
Hi All,
Am i the only one to notice the very long time taken by Moose to load?
I do not understand how it could be so long... I have a "Writing
definitions" for almost 10 minutes...
Cheers,
Alexandre
--
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel http://www.bergel.eu
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
Hi
I'm trying to load a mse file into VW Moose without using the GUI.
Below is my best shot right now: it doesnt fail but the created model
is empty. I guess that "MooseImporter withActiveMetamodel" is too
optimistic.
Anyway, before I dive once again into the peculiarities of VW, what is
the straightforward way to do that? I couldnt find the right API in
Moose.
model := MooseModel new name: (fileName asFilename tail removeSuffix:
'.mse').
self halt.
loader := MooseImporter withActiveMetamodel.
loader stream: fileName asFilename readStream.
result := loader asTask run.
loader resolveDanglingReferences.
model addEntity: result
--
Simon
Hi
I wanted to merge the change made by veronicas and when I use the
merge tool
and apply resolution I get a DNU.... (I will not comment).
So doru how do you do that normally?
Stef
Hi Alex,
I guess this mail was supposed to go to moose-dev, too :).
> I was wondering why is there a method originFor: in FormsBuilder. In
> VW there is none. Why the builder should know about the bounds of the
> element to display? I always though the shape was in charge of it.
The method's name is wrong. The *For: methods take a Figure as an
argument.
In our case it should be originOf: because it computes the origin of a
shape inside the context of the form.
> Something else, both in Squeak and VW we have the following method:
> -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
> FormsBuilder>>at: aX and: aY
> "Utility method that makes other methods easier to read."
>
> ^self components
> select: [:component | component gridX = aX and: [component gridY =
> aY]]
> -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
>
> Is there a reason to not store the components in a matrix ? One reason
> that I see, is that one could have a large compound contains only few
> elements in it. But still, I find that strange.
You could store it in a matrix.
Cheers,
Doru
> Cheers,
> Alexandre
> --
> _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
> Alexandre Bergel http://www.bergel.eu
> ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
>
>
> _______________________________________________
> Pharo-project mailing list
> Pharo-project(a)lists.gforge.inria.fr
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
--
www.tudorgirba.com
"Problem solving should be concentrated on describing
the problem in a way that is relevant for the solution."
Hi Alex,
I guess this mail was supposed to go to moose-dev :).
> I was wondering what the best strategy to implement a DSM will be. I
> see two different strategies:
> 1 - Building the matrix with a formsBuilder. Each shape contained in
> the builder is therefore a cell of the DSM.
> 2 - Having an MONode for each cell.
>
> I would favor option 2, but a special layout need to be defined right?
In VW, you can already do that through "formsBuilder asLayout". I used
this to build an evolution matrix that can be align nicely both
vertically and horizontally.
> Doru, you said once that Mondrian may not be adapted to build DSM. I
> do not understand (or even feel) why. May you comment on this?
You can, but it won't be optimal. The reason is that for any
significantly sized matrix you will not want to represent each cell as
an object, but rather treat the complete matrix as one smart object
that optimizes the display.
Cheers,
Doru
> Cheers,
> Alexandre
> --
> _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
> Alexandre Bergel http://www.bergel.eu
> ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
--
www.tudorgirba.com
"Beauty is where we see it."
I was looking at the pragma processor in SqMoose and noticed that
there is a subclass of FMPragmaProcessor called MSEPragmaProcessor.
Now this class does nothing except override one method from
FMPragmaProcessor, which is almost a copy-paste of its overridden
method. The only difference between the two methods is that one have
an early abort condition while the other continues even if the
condition is met.
Now MSEPragmaProcessor is packaged in Moose-Finder (and is used by
mooseDescription). I wonder what is the intent behind this class?
--
Simon
Dear friends,
I am now sitting in a room in which people are doing demos of their
software. A team does some sensor wireless networks, and they have a
fancy animation looping on a screen. Some of us are doing
visualization (including me, even if I am a newbie), I think we should
be able to produce some eye-catching animations.
Maybe something can be done around code city. A .mov will be welcomed...
I will work on something in the near future, as soon as I have time.
Cheers,
Alexandre
--
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel http://www.bergel.eu
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
Dear List,
The MOViewRenderer contains a list of layers (instances of MOLayer).
Is there a particular use for layers? what was the idea behind?
Cheers,
Alexandre
--
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel http://www.bergel.eu
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
Dear List,
It appears that a rectangle shape in the Squeak version of Mondrian
may or may not have children. Conceptually, when a rectangle cannot
have children?
I am trying to figure out whether this something we should keep.
Cheers,
Alexandre
--
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel http://www.bergel.eu
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
Dear list,
I enhanced Mondrian to support announcement based event. Here an
example:
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
| view |
view := MOViewRenderer new.
view subscribe: MOMouseEnter do:
[:ann | (ann element notNil and: [(ann element isKindOf: MORoot) not])
ifTrue: [MOPopup show: ann element printString]
ifFalse: [MOPopup remove] ].
view subscribe: MOMouseDown do:
[:ann | ann inspect].
view nodeShape: (MORectangleShape new width: 30; height: 40).
view nodes: (1 to: 5).
view open
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Two effects:
- putting the mouse over a box display a popup window.
- clicking on a box open an inspector
I propose an extension. I think this respects what was done in VW.
But maybe one wants to have different event handler regarding the
objects inserted. For example:
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
| view |
view := MOViewRenderer new.
view nodeShape: (MORectangleShape new width: 30; height: 40).
view subscribe: MOMouseDown do: [:ann | ann inspect].
view nodes: (1 to: 5).
view subscribe: MOMouseDown do: [:ann | Beeper beep].
view nodes: (5 to: 10).
view open
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Nodes from 1 to 5 will open an inspector when clicked.
Nodes from 1 to 10 will beep instead.
Cheers,
Alexandre
--
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel http://www.bergel.eu
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
Hi again,
Tool tips are a kind of shape. I found that strange. In VW, a view
answers to the message interaction, returning an event handler. I like
this approach. Is there a reason why in Squeak it is so different?
Cheers,
Alexandre
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel http://www.bergel.eu
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
Dear List,
I've tried the following:
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
| view builder |
builder := MOFormsBuilder new.
builder column; left; pref.
builder row; left; row; left; row; left; pref.
builder x: 1 y: 1 add: (MORectangleShape new).
builder x: 1 y: 2 add: (MOLabelShape new).
view := MOViewRenderer new.
view node: #blah using: builder shape.
view open
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
A shape is simply added to the builder. If you execute the following
code, you will not get what you expect (a text 'blah' below a
rectangle). If you manage if get the hand back (Cmd-.), then you will
see that the message width is sent to an instance of MOLabelShape.
This method does not exist, thus raising an exception. I have several
questions:
- How can a shape knows the width of the string it is supposed to
display, if the shape does not know about what to display? The "what
to display" is provided in the display:on: method.
- In VW, the LabelShape>>width returns a widthBlock. This variable
does not exist in Squeak. Is there a reason why? Is there something
very different regarding labels from the Squeak and VisualWorks version?
A more general question, tt seems that the strategy to compute width
and height of label in VW differs in Squeak. Any reason for this?
Cheers,
Alexandre
--
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel http://www.bergel.eu
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.