I think I have stumbled upon a problem in Glamour. When selecting an entity
that is in the model but not shown in the Tree presentation, there is a DNU
when setting the selection port to the entity. To reproduce the problem:
- execute the following script in Moose then right click and select "select
in tree" on a number not displayed in the Tree presentation.
The problem might arise due to the fact that all model entities do not have
their morph nodes when using showOnly option. Can you please have a look?
| browser items |
browser := GLMTabulator withStatusbar.
items := 50.
browser column: #one; column: #two.
browser transmit to: #one; andShow: [ :a |
(a tree)
title: 'Tree';
showOnly: 30;
display: [:each | 1 to: items];
children: [ :item :x :level | level > 1
ifTrue: [ #() ]
ifFalse: [ 1 to: item ]]].
browser transmit to: #two; from: #one; andShow: [ :a |
a mondrian
title: 'Numbers in Mondrian list';
painting: [:view :number |
view shape rectangle width: 20; text: #printString; withoutBorder.
view interaction
item: 'Select in tree' action: [:each | ((browser paneNamed: #one)
port:#selection) value:each ].
view nodes: (1 to: 40).
view gridLayout.
]
].
browser openOn: 1
tx,
Usman
Hi,
There is not much point in postponing the release of 4.7. As soon as we solve the squeaksource problem of PharoTaskForces, I will release it.
The next step is to move to Pharo 2.0, move all code to SmalltlakHub, and reorganize the configurations in the process. And, as soon as Pharo 2.0 gets released, I would like to release another Moose version even if it only contains minor changes.
Cheers,
Doru
--
www.tudorgirba.com
"The coherence of a trip is given by the clearness of the goal."
I am trying to create a view with a center node and " provider" and "
clients" nodes on either side of the central one. (see attached script)
I would like the provider and client to be each arranged in a radial layout
(see attached figure)
How can this be achieve with Roassal?[image: Inline image 1]
| view |
view := ROView new.
view addAll: ((sourceElements := ROElement spritesOn: (1 to: 4)) do: [:n |
(n @ RODraggable) addShape: ROLabel]).
view addAll: ((targetElements := ROElement spritesOn: (6 to: 10)) do: [:n
| (n @ RODraggable) addShape: ROLabel]).
view add: ((centerElement := ROElement spriteOn: 5) @ RODraggable
addShape: ROLabel).
ROVerticalLineLayout on: sourceElements; on:targetElements.
sourceLayer := ROElement new addAll: sourceElements.
view addAll: (sourceElements collect: [:source | ROEdge arrowedLineFrom:
source to: centerElement ]).
targetLayer := ROElement new addAll: targetElements.
view addAll: (targetElements collect: [:target | ROEdge arrowedLineFrom:
centerElement to: target ]).
(ROHorizontalLineLayout new horizontalGap: 130) applyOn: {sourceLayer.
centerElement. targetLayer}.
view open
Usman
Status: New
Owner: ----
Labels: Type-Defect Priority-Medium
New issue 902 by benjamin...(a)gmail.com: Glamour Inspector > Browse menu
item incorrectly brings up GLMTablePresentation
http://code.google.com/p/moose-technology/issues/detail?id=902
In the Glamourous Inspector [State] tab you can right-click on an instance
variable to get a [Browse] menu item, but doing that brings up a browser on
GLMTablePresentation rather than the expected class of the instance
variable.
This is in Moose 4.7 Beta downloaded 2013-01-03.
Hi,
ci.moosetechnology.org should now be working again. It uses the latest Jenkins and I hope it is more stable than the previous one.
We have a successful build here:
http://ci.moosetechnology.org/job/moose-latest-dev/1247/
7 tests are failing, but 5 of them were related to newMorph not being available. I fixed it by partly reverting the change of Ben such that we instantiate the ROMorph explicitly in the renderer (without needing the newMorph method).
Cheers,
Doru
--
www.tudorgirba.com
"Live like you mean it."
Not sure if this is expected behaviour or not, so thought I would check
prior to logging an issue.
In the Glamourous Inspector [State] tab you can right-click on an
instance variable to get a [Browse] menu item, but doing that brings up
a browser on GLMTablePresentation rather than the expected class of the
instance variable.
cheers -ben
Hi Usman,
The script is not so dramatic. The more critical thing is to have the builder code locally (https://github.com/renggli/builder). But, before going there, I want to look into what Camillo has done to have essentially only Smalltalk code in the scripts.
Cheers,
Doru
On Jan 16, 2013, at 7:05 PM, Usman Bhatti <usman.bhatti(a)gmail.com> wrote:
> Hello Doru,
>
> I am in the process of configuring a jenkins job for Moose on the server at INRIA. I was wondering if I could simply import the job that you created on ci.moosetechnology.org instead of constructing a new job from scratch, like that I wont need to understand the intricacies of manipulating one-click images on the jenkins server. Apparently, there is a way to copy/clone jenkins jobs through a config.xml file. So, if you could provide me this file for latest-moose-dev job on the moose ci, I should be able to replicate the job on the INRIA server.
>
> Otherwise, you can provide me the text for the job and I will try to manually fit in the elements in the server.
>
> regards,
> Usman
--
www.tudorgirba.com
"To lead is not to demand things, it is to make them happen."
Status: New
Owner: ----
Labels: Type-Defect Priority-Medium
New issue 901 by benjamin...(a)gmail.com: ROCachedLabel - improved
performance with large numbers of elements
http://code.google.com/p/moose-technology/issues/detail?id=901
With large numbers of elements that display strings, Roassal is quite
slow. Tracing this down shows the main culprit is #extentFor:. A proposed
solution ROCachedLabel is provided in attached .st file which returns a
cached extentFor value. This is nilled out when the value of the string
changes. The other variables in ROCachedLabel are also cached, but the
performance gain from these is unclear.
To test the effect of this, try the following script for both ROLabel and
ROCachedLabel...
---
| rawView el count elements |
rawView := ROView new @ RODraggable.
count := 1000.
elements := (1 to: count) collect:
[ :x |
el := (ROElement spriteOn: x) + ROLabel "ROCachedLabel".
el on: ROMouseLeftClick do:
[ :ev |
ev element model: (ev element model + 1).
ev element view signalUpdate .
]
].
rawView addAll: elements.
1 to: count do:
[ :x |
rawView add: (ROEdge new from: (elements at: x) to: (elements at: (Random
new nextInt: count - x + 1))) + ROLine.
].
ROHorizontalTreeLayout on: rawView elements.
rawView open
---
Also attached is the MessageTally report from which it was determined that
#extentFor was the problem.
Attachments:
ROCachedLabel.st 1.3 KB
MessageTally-ROLabel.txt 38.8 KB
Some time ago I hit a problem due to GLMAction>>shortcutAsString
sometimes returning nil.
I fixed this by appending --- ifNil: [ '' ] --- to the method, and then
moved on, so sorry I have no record of the context the problem occurred in.
I just noticed this again now clearing out Monticello of changes and
thought I should report it.
cheers -ben
Hello,
I think it would be good to have a mirror of moose CI so that we have a
replicated service because CI at moosetechnology is currently down and it's
impeding our work.
I can setup a mirror of moose CI in Lille to ensure continuity of the
service. For that I need to know which configuration to load. I have tried
to load development symbolic version and I had a few problems. Core-default
loads fine but I'm not sure that this is the correct version to build a
moose image from pharo 1.4.
regards,
Usman
Hi,
ci.moosetechnology.org is back online on a stronger server.
I still have problems with getting moosetechnology.org to work with apache, though.
Cheers,
Doru
--
www.tudorgirba.com
"What is more important: To be happy, or to make happy?"
Hi guys,
I modeled a Git repository in Smalltalk. My first class objects are:
- GitterAuthor
- GitterRevision, and
- GitterRepository
I want to have a Moose model (i.e., an extension of FAMIX), so that I can use all the tool suite of Moose.
I have a couple of questions on that since I don't find a good explanation on how to do that. Let me describe what I did.
For each of the classes listed above:
- I create a class side method 'annotation' as follows
GitterRepository class>>annotation
<MSEClass: #GitterRepository super: #Object>
<package: #Gitter>
- For each of the accessor of the instance variables I added the pragmas as follows:
GitterRepository>>authors
<MSEProperty: #authors type: #GitterAuthor > <multivalued>
<MSEComment: 'Authors appearing as committers in this Repository.'>
The first question is what can be the choice for the type of a property? As far as I understood I can have Number, String, and one of the classes belonging to the model.
But what if an instance variable has type, for example FileSystemGitRepository. Should I put #Object in the type or what else?
- The last thing I did is to create an accept method to add the visitor, as follows
GitterRepository>>accept: aVisitor
aVisitor visitGitterRepository: self.
Then implemented
FAMIXImportingVisitor>>visitGitterRepository: aGitterRepository
self visitEntity: aGitterRepository .
I'm wondering if I did everything needed and how can I test it in a way..
Cheers and thanks in advance,
Roberto Minelli
In a Glamour browser with 3 pane (#master, #slave1, #slave2)
I would like to be able to "send" the selection in #master either to
#slave1 or #slave2
a nice behaviour would be:
- if I select a line into #master, it is transmitted to #slave1
(browser transmit) from: #master; to: #slave1
- but on a context menu in #master, I can tell him to send to #slave2
instead
act: [:each | each selection something-here] entitled: 'Display in
slave 2';
among other things, it means the selection+context menu in #master would
not automatically transmit to #slave1
Another question is what should I put in the act: block to transmit to
#slave2 ?
nicolas
--
Nicolas Anquetil -- RMod research team (Inria)
Hi,
A while ago we had a discussion between the use of the importer and
extractor terms. In particular, Stef argued that the SmalltalkImporter
should be named SmalltalkExtractor to denote that we talk about source
code. I think it is useful to get a consensus around this topic.
I happen to have implemented recently a half a dozen importers for
various situations, and here is the current status of my understanding
of the meaning of terms:
- importer stands for creating a model out of some source that is
external to Moose. This can be source code in a file, an XML file, an
MSE file, or source code in Smalltalk. It is the importer that
contains the factory logic of creating and ensuring entities. This is
a simple meaning that can be communicated in a simple manner: "we
import the model from something"
- extractor stands for the dedicated logic of traversing the external
source. In most cases, the importer requires one or more extractors as
helpers to do the job. For example, the SmalltalkImporter requires the
SmalltalkMethodVisitor. The MSE importer is special, because it does
not have explicit factory methods, and thus it is one with the
extractor.
What do you think?
Cheers,
Doru
--
www.tudorgirba.com
"Every thing has its own flow"
Unexpected, indeed.
But, the cool thing is that Moose popped up in his mind in a seemingly unrelated area. From this point of view, Moose is not just an analysis platform, but it became an example of how "reprogrammability" (which is just another name for reflective environments as I would call it) can become practical.
So, it is as much a positive thing for Moose as it is for Pharo. Did I mention that I think that Pharo can use Moose as a killer app? :)
Cheers,
Doru
On Jan 11, 2013, at 5:21 PM, Geert Claes <geert.wl.claes(a)gmail.com> wrote:
> http://martinfowler.com/bliki/InternalReprogrammability.html
>
>
>
>
> --
> View this message in context: http://forum.world.st/Martin-Fowler-s-kind-words-about-Smalltalk-and-Moose-…
> Sent from the Pharo Smalltalk mailing list archive at Nabble.com.
>
--
www.tudorgirba.com
"Don't give to get. Just give."
This is a post in two parts. The first is purely Rossal and the second
is on the Glamour-Roassal integration.
Part One
RODraggableWithVelocity seems to have a problem overshooting the drag
distance with large numbers of elements. For example, referring to the
next script, with RODraggable only, if I drag the view background
sideways by a quarter-window-width, even though it takes a few seconds
to respond to a drag, the final position of the elements is a
quarter-window-width sideways. However with RODraggableWithVelocity,
doing the same action, I observe the elements briefly appear a
quarter-window-width sideways, then another quarter-window-width, then
another until the elements disappear off the side of the window. This
behaviour disappears from this example by reducing to 1000 elements, but
occurs in my application with only 100 elements (plus an equal number of
edges).
-----
| rawView domain |
rawView := ROView new @ RODraggable " @ RODraggableWithVelocity " .
domain := 1 to: 10000.
domain do: [ :x | rawView add: (ROElement on: x) + (ROLabel) ].
ROVerticalLineLayout on: rawView elements.
rawView open
----
Part Two
Given that the paintingBlock of the GLMRoassalPresentation returned by
'GLMCompositePResentation>>rossal'
is passed a ROMondrianViewBuilder that has already added
RODraggableWithVelocity to the rawView, how do I remove that
RODraggableWithVelocity from the rawView? The '@' method seems to work
differently between ROView (in processing the interaction straight away)
and ROElement (which seems to store the interaction for later processing
so it can be removed more easily).
In addition, could something like a GLMMorphicRoassalRawRenderer be
added to the Glamour-Roassal interface? - which would pass an
unencumbered ROView to the paintingBlock. It is not really a
Glamour-Roassal interface at the moment, more of a Glamour-Mondrian
interface. I hacked up a GLMMorphicRoassalRawRenderer as best I could
as part of my experiment with "Interactive Roassal" but it wasn't very
elegant and I'm not sure it was correct.
cheers -ben
All my previous use of layouts with the Roassal API has been of the form..
ROSomeLayout on: rawview elements.
where elements returns both ROElement and ROEdge.
This has never been a problem until I do...
ROForceBasedLayout on : rawview elements
which fails in doExecute since ROEdge does not understand #center.
This might not have been noticed earlier since the tests send only elements,
and the only other use is by ROMondrianExample where
ROMondrianFrame>>applyLayout
uses 'self nodes' which returns only elements, eg....
ROMondrianFrame>>nodes
^ (elements select: [ :el | el class ~~ ROEdge ]) asArray
So should the caller of a layout _required_ to send only ROElements to a
layout (which may clutter user code)
or perhaps now that there is ROAbstractComponent, ROView>>elements might
return only ROElements,
with ROView>>components returning both ROElement and ROEdge ?
(except I think you wanted to minimise the dependency of separate
ROElement/ROEdge.
Or perhaps ROLayout>>on: might filter out ROEdge(s) ?
cheers -ben
Status: New
Owner: ----
Labels: Type-Defect Priority-Medium
New issue 899 by benjamin...(a)gmail.com: PetitParse World Menu item missing
http://code.google.com/p/moose-technology/issues/detail?id=899
Ben Coman wrote:
> I don't have time right now to stop and isolate this, but a quick
> note... I just loaded PetitParser-lr.228 & PetitCSV-tg.7
> and World > Tools > PetitParser menu item has disappeared, which I had
> used half an hour ago - on Moose 4.7. Not sure if you'll see the same
> thing being just a single observation point.
Actually, it comes with loading...
PetitGui-TudorGirba.114
Time: 8 December 2012, 9:22:37.027 pm
PPAllParsersBrowser is now PPBrowser
Hi,
I would be interested in putting together some figure about the impact of Moose in academia and industry.
If any of you have used Moose (or some of its subcomponents) for teaching/training purposes, please send a quick note with the context in which it happened.
Cheers,
Doru
--
www.tudorgirba.com
"It's not how it is, it is how we see it."
I don't have time right now to stop and isolate this, but a quick
note... I just loaded PetitParser-lr.228 & PetitCSV-tg.7
and World > Tools > PetitParser menu item has disappeared, which I had
used half an hour ago - on Moose 4.7.
Not sure if you'll see the same thing being just a single observation point.
cheers -ben