Hi!
We are glad to announce the first stable release of the DBXBrowser, named
Neptuno, the last piece in the DBXTalk tools project sponsored by ESUG.
*What is this browser?* It is a Glamour based browser which works as a GUI
to work with OpenDBX connections.
*
How does it look like?* I attach a screenshot with a brief look :)
*Which databases does it work with?* It is currently working with OpenDBX
connectors for:
- mysql
- postgresql
- oracle
- sqlite
*
How should I download it?* I'd like to link to the site here, but it's
currently down (and we are working for your happiness :D ), so:
Gofer it
squeaksource: 'MetacelloRepository';
package: 'ConfigurationOfDBXBrowser';
load.
(((Smalltalk at: #ConfigurationOfDBXTools)
perform: #project)
perform: #version: with: #stable)
load: 'Neptuno'
*How should I contact the DBXTalk team for feedback, bug reports,
questions, or whatever?*
The project's mailing list: dbxtalk(a)googlegroups.com
The project's issue tracker: http://code.google.com/p/dbxtalk/issues
The (currently down) site, with docs and stuff:
http://dbxtalk.smallworks.com.ar/
Thanks!
The DBXTalk team
Hi!
I have a browser where I do something like:
browser transmit
to: #somePane;
andShow: [ :a |
a dynamic presentation: [ :some :element | some custom: element
buildCustomBrowser ]
]
And then, I have implemented #buildCustomBrowser for example as:
buildCustomBrowser
| browser |
browser := GLMTabulator new.
browser row: #tables.
browser transmit
to: #tables;
andShow: [ :a |
a table
title: ('Columns for {1}' format: { table name });
addColumn: (GLMTableColumn new title: 'Column name'; computation:
#name);
addColumn: (GLMTableColumn new title: 'Null'; computation: [
:column | column nullable asString ]);
addColumn: (GLMTableColumn new title: 'Type'; computation: [
:column | column typeName asString ]);
addColumn: (GLMTableColumn new title: 'Length'; computation: [
:column | column length asString ]);
addColumn: (GLMTableColumn new title: 'Primary Key'; computation: [
:column | column isPrimaryKey asString ]);
display: self columns;
yourself.
].
^browser
And It does not render the table :(. If I change it to something like:
buildCustomBrowser
| browser |
browser := GLMTablePresentation new.
browser
title: ('Columns for {1}' format: { table name });
addColumn: (GLMTableColumn new title: 'Column name'; computation:
#name);
addColumn: (GLMTableColumn new title: 'Null'; computation: [
:column | column nullable asString ]);
addColumn: (GLMTableColumn new title: 'Type'; computation: [
:column | column typeName asString ]);
addColumn: (GLMTableColumn new title: 'Length'; computation: [
:column | column length asString ]);
addColumn: (GLMTableColumn new title: 'Primary Key'; computation: [
:column | column isPrimaryKey asString ]);
display: self columns.
^browser
It works, but I can't have several presentations for the same object... :(
I tried debugging the code, but I get lost and lost a lot of time without
figuring anything :(.
Is there a way to do this? any workaround? or is it a bug or it is
ignorance from my side?
Thanks!
Guille
On Mon, Jan 9, 2012 at 11:24 PM, Julia Lawall <julia.lawall(a)lip6.fr> wrote:
> On Mon, 9 Jan 2012, Usman Bhatti wrote:
>
> For me, it should work without modification....The following method that
>> you
>> are using should carry out the desired functionality...
>> LinearFillColor: #counts within: rules;
>>
>
> Thanks, but I'm not sure to understand. We just got one white box and one
> black box. Maybe it will look better with more data?
Yes. That is the reason. You can see a gradient of color for nodes with
more data.
>
>
> julia
>
>
> LinearFillColor: part should take as a parameter the count of a single
>> rule.
>> The within: part should take an array that contains all the counts of all
>> your rules in the system...
>>
>> On Mon, Jan 9, 2012 at 4:50 PM, Julia Lawall <julia.lawall(a)lip6.fr>
>> wrote:
>> I got some help from Damien Cassou, and he wrote the following
>> code:
>>
>> viewRules: rules
>> view interaction popupText: [:rule | rule ruleName].
>> view shape rectangle
>> linearFillColor: #counts
>> within: rules;
>> withoutBorder.
>> view nodes: rules forEach: [:rule | self viewRule: rule].
>> view verticalLineLayout.
>>
>> I would like the colors not to be arbitrary, but to vary
>> depending on the counts value. For example, for a small value,
>> I would like a light color and for a large value I would like a
>> dark color. I could for example normalize the values so that
>> they are between 0 and 100. Is there an easy way to do this?
>>
>> thanks,
>> julia
>>
>>
>>
>>
For me, it should work without modification....The following method that
you are using should carry out the desired functionality...
LinearFillColor: #counts within: rules;
LinearFillColor: part should take as a parameter the count of a single
rule. The within: part should take an array that contains all the counts of
all your rules in the system...
On Mon, Jan 9, 2012 at 4:50 PM, Julia Lawall <julia.lawall(a)lip6.fr> wrote:
> I got some help from Damien Cassou, and he wrote the following code:
>
> viewRules: rules
> view interaction popupText: [:rule | rule ruleName].
> view shape rectangle
> linearFillColor: #counts
> within: rules;
> withoutBorder.
> view nodes: rules forEach: [:rule | self viewRule: rule].
> view verticalLineLayout.
>
> I would like the colors not to be arbitrary, but to vary depending on the
> counts value. For example, for a small value, I would like a light color
> and for a large value I would like a dark color. I could for example
> normalize the values so that they are between 0 and 100. Is there an easy
> way to do this?
>
> thanks,
> julia
>
Hello,
The code below works fine, but I am not sure if it is correct way. Is
there another way to change the width of a GLMTableColumn?
| finder d |
finder := GLMFinder new.
d := finder table display: [ :x | x lines ].
d addColumn: (GLMTableColumn new title: 'v.'; computation: [ :e |
'999']; width: 30).
d addColumn: (GLMTableColumn new title: 'aut.'; computation: [ :e |
'anAuthor']; width: 70).
d addColumn: (GLMTableColumn new title: 'code'; computation: #asString
).
finder openOn: (Date>>#addMonths:) getSource
thanks!
--
Andre Hora
It seems that one needs to follow the instructions given on moose website
to correctly startup moose on Linux/Ubunto.
On Sat, Jan 7, 2012 at 11:07 AM, Julia Lawall <julia.lawall(a)lip6.fr> wrote:
> On Sat, 7 Jan 2012, Usman Bhatti wrote:
>
> You can have a look here for instructions for loading Moose in
>> Linux:http://www.**moosetechnology.org/download/**4.6<http://www.moosetechnology.org/download/4.6>
>>
>
> Thanks. I was just going through pharo.
>
>
> I haven't used it on Linux myself; I am sending this mail to moos-dev list
>> and there are people who are successfully using it on Linux. They may be
>> able to suggest a better solution to the problem.
>>
>
> Thanks! That seems to start up as it should :)
>
> julia
>
My name is Cesar Couto and I am working with Nicolas Anquetil at INRIA.
I think this code just works with list, but it does not work mondrian
painting. Look this simple code using mondrian:
|browser|
browser := GLMTabulator new.
browser column: #one; column: #two.
browser transmit to: #one;
andShow: [ :a | a mondrian painting: [ :view :bug | view shape label. view
node: 'one'. view shape rectangle. view node:1 ] ].
browser transmit to: #two;
andShow: [ :a | a mondrian painting: [ :view :bug | view shape label. view
node: 'two'. view shape rectangle. view node:2 ] ].
browser transmit from: #one; to: #two port: #selection;
andShow: [ :a |
a mondrian
title: [ :entity | 'one clicked'];
painting: [ :view :class | view shape label. view node: 'one clicked'. view
shape rectangle. view node:3 ]].
browser transmit from: #two; to: #one port: #selection;
andShow: [ :a |
a mondrian
title: [ :entity | 'two clicked'];
painting: [ :view :bug | view shape label. view node: 'two clicked'. view
shape rectangle. view node:4]].
browser openOn: MooseModel root allModels first.
Both of the panes open correctly. But when I click on the entities in one
pane, the other pane turn gray and nothing happens.
What do you think?
Cesar Couto
--
http://www.decom.cefetmg.br/cesar
Hi!
Mainly to Doru I think, How difficult is to have horizontal Accordion
arrangement in glamour?
I've hacked a bit in adding the commented lines:
GLMMorphicAccordionRenderer>>render: aPresentation
| presentations container expander |
presentations := aPresentation matchingPresentations.
presentations isEmpty ifTrue: [ ^ GLMMorphic emptyMorph ].
presentations size = 1 ifTrue: [ ^ self renderWithToolbar:
presentations first ].
container := GLMMorphic containerMorph.
container changeTableLayout.
* "container listDirection: #leftToRight."*
presentations do: [ :each |
expander := self theme
newExpanderIn: container
label: (self titleOrIconOf: each in: container)
forAll: {(self renderWithToolbar: each)}.
* "expander listDirection: #leftToRight."*
container addMorphBack: expander.
(aPresentation pane lastActivePresentation notNil and: [
each title = aPresentation pane lastActivePresentation title ])
ifTrue: [
expander expanded: true]].
(aPresentation pane lastActivePresentation isNil and: [container
submorphs notEmpty]) ifTrue: [
container submorphs first expanded: true].
^ container
But the expanders just look ugly ugly :)
Other IDEs, when you collapse a widget just keep an icon without the label.
Should I open an issue?
Guille
Hi Doru!
In the Glamour examples, the accordion arrangement has declared inside of
it two presentations: a list and a text. I want to treat them as single
panes but I don't think glamour as it is allows me :(.
In other words, can I arrange panes as an accordion?
Thank you very much :)
Guille
Status: Accepted
Owner: ----
Labels: Type-Defect Priority-Medium
New issue 770 by sean.p.d...(a)gmail.com: Updateable GLMBasicExamples
throwing an error
http://code.google.com/p/moose-technology/issues/detail?id=770
From the example browser (GLMBasicExamples open), when I click on '+' in
either "Updateable browser" or "Updateable individual presentations", I
get "Error: Instances of Pragma are not indexable"
Hi folks,
Happy new year to you all.
I have a question in Glamour:
We want a browser with two panes:
browser
row: [ :row | row column: #classmap; column: #bugmap].
the two panes show two point of view on the same thing.
When we select something in #classmap we want too highlight something related
in #bugmap
browser transmit
from: #classmap;
to: #bugmap;
The reverse is true to:
browser transmit
from: #bugmap;
to: #classmap;
It works somehow: we can open the browser and click on one side (either one)
to update the other side.
The problem is that if we start selecting in one side, then we can only select
on this side, selecting on the other side blanks everything and we need to
restart the whole browser.
- Is this a know issue?
- with a known solution?
- do you need more code?
nicolas
--
Nicolas Anquetil -- RMod team
INRIA Lille Nord Europe
Status: New
Owner: ----
Labels: Type-Defect Priority-Medium
New issue 766 by sean.p.d...(a)gmail.com: Book: Use Action list presentation
example from GLMBasicExamples
http://code.google.com/p/moose-technology/issues/detail?id=766
On
http://www.themoosebook.org/book/internals/glamour/presentations/action-list
You could use the example from GLMBasicExamples:
| browser |
browser := GLMTabulator new.
browser column: #one.
browser transmit to: #one; andShow: [ :a |
a actionList
act: [:entity | entity inspect ] entitled: 'Inspect';
act: [:entity | entity explore ] entitled: 'Explore'].
^ browser openOn: #(1 2 3)
Thanks Veronica!
This is now in Mondrian 2.142
2.143 is now open for contribution
Cheers,
Alexandre
On 3 Jan 2012, at 10:45, Veronica Isabel Uquillas Gomez wrote:
> Hi Alex,
>
> It seems that i forgot to publish this addition (included an example).
>
>
> Name: Mondrian-Pharo-Morphic-VeronicaUquillas.31
> Author: VeronicaUquillas
> Time: 3 January 2012, 2:43:11 pm
> UUID: 2ce71ab8-8611-4160-a8b7-a01e57ae7e9b
> Ancestors: Mondrian-Pharo-Morphic-AlexandreBergel.30
>
> edges can also show a popup view
>
>
> Cheers,
> Veronica
>
--
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel http://www.bergel.eu
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
Status: New
Owner: ----
Labels: Type-Defect Priority-Medium Component-Mondrian
New issue 499 by alexandr...(a)gmail.com: Port & transmission in Mondrian
http://code.google.com/p/moose-technology/issues/detail?id=499
Hi Alex,
-=-=-=-=-=
Previous discussion:
What we did in Glamour was to attach to each Presentation a kind of default
interaction. In your example, I would make #mouseEnter, #mouseClick ...
default ports that are populated when the corresponding interactions happen
on a graph element.
Then of course, these ports will belong to graph elements. Like this
transmissions are created between the ports of a graph element. Perhaps
there will also be a need to identify graph elements by name so that you
can refer to them from outside the context of a script.
-=-=-=-=-=
Previous discussion:
Why not having ports that belong to an interaction instead? Consider the
following script:
view nodes: (1 to: 1000).
Figure selection will imply a transmission between the root and each of
these nodes. It could be a single transmission between 'root interaction'
and the unique interaction of the nodes?
-=-=-=-=-=
Doru answer:
At least two reasons. First, the ports are not just for transmitting
information, but ports also allow you to store arbitrary values that model
the graph element, and thus you can model the state of a visualization
(including side-effects). Second, using ports you will be able to let the
shape populate ports by default without writing any explicit interaction
(only write transmission when you want to deal with them).
Now, about we can be smart about transmissions and do what we do for
shapes: we share the object between multiple graph elements. For this, we
will just need a lookup of the origins instead of hardcoding them. Actually
in Glamour, we have:
GLMTransmission>>originatesAt: aPort
and thus, you can have a smart transmission that performs a more complex
check by checking if the port is part of any elements from a collection.
Like this you will have only one the transmission object. You could write:
view nodes: #(1 2 3) labeled: #interestingNodes.
view nodes: #(5 6 7) labeled: #otherNodes.
view transmitTo: #otherNodes fromAny: #interestingNodes port: #selection.
Cheers,
Doru
I am trying to add a checkbox in the glamour status bar for allowing user
to change the type of interaction with a visualization. I've seen different
glamour examples but most are about adding lists, buttons and dropdown
lists.
My question: Is there an easy way to add a checkbox in the status bar of
the GLMTabulator?
I have a (not so elegant) solution that allows toggling for the moment.
browser := GLMTabulator withStatusbar.
browser column: #painting.
browser
act: [:b |
((b actions at: 1) title includesSubString: 'Provider')
ifTrue: [(b actions at: 1) title: 'Client Dependencies'.]
ifFalse: [(b actions at: 1) title: 'Provider Dependencies']
] entitled: 'Client Dependencies'.
browser transmit to: #painting; andShow: [ :a |
a mondrian view: self view ].
^ browser
thanx
Usman
Hi!
Can the following be added to http://www.moosetechnology.org/about/partners
Facultad de Ciencias Exactas, Universidad Nacional del Centro de la Provincia de Buenos Aires, Tandil, Argentina
http://www.exa.unicen.edu.ar/
Cheers,
Alexandre
--
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel http://www.bergel.eu
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
Lukas suggested I repost this here from the Magritte list
(http://forum.world.st/Customizing-Magritte-Morphic-Forms-td4251518.html):
I'm playing with and already enjoying Magritte after the awesome talk Nick
and Esteban gave at ESUG this year.
How do I customize Magritte editors in Morphic? Specifically, for the
Address example from the Seaside book, I tried:
anAddress asMorph
addButtons;
addWindow;
openInWorld.
but the fields were really tiny and hid most of the text as you can see
below:
http://forum.world.st/file/n4251570/PharoScreenshot.2.png
Then I tried a standard Morphic approach:
| form window |
form := anAddress asMorph addButtons.
window := SystemWindow new addMorph: form fullFrame: (LayoutFrame
fractions: (0@0 corner: 1.0(a)1.0) offsets: (10@10 corner: 10@10)).
window openInWorld.
but I got "MessageNotUnderstood: MAContainerMorph>>layoutFrame:"
--
View this message in context: http://forum.world.st/Customizing-Magritte-Morphic-Forms-tp4251570p4251570.…
Sent from the Moose mailing list archive at Nabble.com.
Hi!
I am Felipe González a student from Alexandre Bergel. I would like to
understand Kumpel and improve it's overall quality. I will be fully working
on it for the next two weeks.
Here is what I can see in Kumpel:
- There's no documentation in the classes nor the tests classes
- Almost all test methods hasn't a proper method category
- There's almost no class hierarchy
- The next classes doesn't have any tests:
KMPProjectBuilderConfig
KMPProjectLoader
KMPImportSVNCommand
PPDateParser
KMPFileVersion
PPProjectInfoParser
KMPProjectLoader
KMPProjectBuilderConfig
KMPProjectBuilder is the largest class, but it is almost not tested.
I would like to improve the coverage of Kumpel. Does it makes sense for you
to write tests for this class? Like this, I'll learn about Kumpel and
hopefully be able to make a useful contribution :)
I will put the result of my work in the repository
ss3.gemstone.com/ss/CC6403-2011
I will let you know how it goes.
Any suggestion?
Regards,
Felipe
--
Felipe González Martínez
Estudiante de Ingeniería Civil en Computación
Departamento de Ciencias de la Computación
Universidad de Chile
Status: New
Owner: ----
Labels: Type-Defect Priority-Medium
New issue 768 by sean.p.d...(a)gmail.com: Dynamic Presentation Example in
Pharo 1.3
http://code.google.com/p/moose-technology/issues/detail?id=768http://www.themoosebook.org/book/internals/glamour/presentations/dynamic
I don't know if it was supposed to, but the example didn't work in Pharo
1.3, so I adjusted it
| browser |
browser := GLMTabulator new.
browser title: 'Multi Methods Viewer'.
browser
column: [:c | c row: #classes; row: #methods];
column: #source.
browser transmit to: #classes; andShow: [ :a |
a list
title: 'Classes';
display: [:model | model allClasses ] ].
browser transmit to: #methods; from: #classes; andShow: [ :a |
a list
title: [ :class | 'Methods from ', class name ];
beMultiple;
display: [ :class | class methods ];
format: [ :class | class selector ] ].
browser transmit to: #source; from: #methods; andShow: [ :a |
a dynamic with: [ :some :methods |
methods do: [ :each |
some text
title: each name asString;
display: [ each getSource] ].
some stackedArrangement ] ].
browser openOn: Smalltalk.