Hello all,
I have a playground script that will analyze the first MSE model and
produces output in a CSV file.
I would now like to be able automate this, and I think Tudor Girba gave me
a hint of using Zeroconf.
So far I have not been able to get it to work under Windows 10. The curl
command works to get the image from get.pharo.org, curl get.pharo.org |
bash
However, the following attempts don't result in errors, but I don't get any
useful output either:
$ bash ./pharo Pharo.image --help
$ ./pharo Pharo.image --help
$ pharo-vm/PharoConsole.exe --headless Pharo.image --version
Does it work in Windows 10? I've tried in Git Bash and CMD.exe (the last
command, since the bash commands don't work).
Cheers,
C. Fuhrman
I have built an application based on the GTInspector. Hurray!
Now I want to share it and I need to write documentation. I would like to
include screenshots in the docs but I don't want to create them by hand.
So my question is: Is there an easy way to automatically generate
screenshots for GTInspector extension methods? e.g. to specify an object
and the name of a presentation and to get a PNG file of how that looks in
the GTInspector.
Thanks!
P.S. References to how other people write their docs in general would be
interesting.
P.P.S. Here is GTInspector browsing internal data structures of a JIT
compiler :-)
Hi,
We are very happy to announce the alpha version of a moldable editor built in Brick (https://github.com/pharo-graphics/Brick) which is based on Bloc (https://github.com/pharo-graphics/Bloc). This is primarily the work of Alex Syrel. The project was initially financially sponsored by ESUG and it is currently supported by feenk. And of course, the project is based on the tremendous work that went into Bloc and Brick by all contributors.
Take a look at this 2 min video:
https://www.youtube.com/watch?v=2vy6VMJM9W4&feature=youtu.be
The basic editor works and it is both flexible and scalable. For example, the last example shown in the video is an editor opened on 1M characters, which is reasonably large, and as can be seen see one can interact with it as smoothly as with the one screen text. It actually works just as fine with 100M characters.
The functionality of the editor includes: rendering, line wrapping, keypress and shortcut handling, navigation, selection and text styling. Currently, the editor is 1260 lines of code including method and class comments. This is not large for a text editor and this is possible because most of the work is done by generic concepts that already exist in Bloc such as layouts and text measurements. Beside the small maintenance cost, the benefit is that we have the option to build all sorts of variations with little effort. That is why we call this a moldable text editor.
Another benefit of using elements and layouts is that we can also embed other kinds of non-text elements with little effort (such as pictures), and obtain a rich and live text editor. We already have basic examples for this behavior, and we will focus more in the next period on this area.
The next immediate step is to add syntax highlighting. Beside the text attributes problem, this issue will also exercise the thread-safety the implementation is. The underlying structure (https://en.wikipedia.org/wiki/Rope_(data_structure)) is theoretically thread-safe, but it still needs to be proven in practice.
We think this is a significant step because the editor was the main piece missing in Brick and it will finally allow us to build value that can be directly perceived by regular users on top of Brick and this, in turn, will generate more traction. Please also note that because now Bloc is directly embeddable in Morphic it means that we can actually start using it right away. For example, the picture below shows the text element being shown through a live preview in the GTInspector.
This is another puzzle piece towards the final goal of engineering the future of the Pharo user interface. There is still a long way to go to reach that goal, but considering the work that is behind us, that goal that looked so illusive when Alain and Stef initiated the Bloc project is now palpable.
We will continue the work on this over the next period and we expect to announce new developments soon.
If you want to play with it, you can load the code like this (works in both Pharo 6 and 7):
Iceberg enableMetacelloIntegration: true.
Metacello new
baseline: 'Brick';
repository: 'github://pharo-graphics/Brick/src';
load: #development
Please let us know what you think.
Cheers,
Alex and Doru
--
www.tudorgirba.comwww.feenk.com
"What is more important: To be happy, or to make happy?"
Hi,
The 32 bit nodes on Jenkins are offline and I cannot seem to be able to restart them. Does anyone have an idea of what is going on?
Cheers,
Doru
--
www.tudorgirba.comwww.feenk.com
"There are no old things, there are only old ways of looking at them."
Hi,
I was checking the containers in the current Famix and I have found several
strange attributes:
FAMIXSourceAnchor>>#element is container but the relationship to
FAMIXSourcedEntity has one to one cardinality. It is the only case like
this and it is probably wrong.
Does it have any reason or is it an error?
Then the relation between FAMIXSourcedEntity>>#containerFiles
and FAMIXFile>>#entities it the only one with cardinality many to many
where a container is specified but Vincent already told me that this is an
error.
Cheers,
-- Pavel
Hi,
I am trying to use Mondrian for a case in which I have nested elements and crosscutting edges. The issue is that I only found a cumbersome way to specify the layout.
Here is an example:
view := RTMondrian new.
view shape rectangle fillColor: Color transparent.
nodes := view nodes: { { 1 . 2 } . { 11 . 12 } } forEach: [ :col |
view nodes: col ].
view edges source: { 1 . 11 } connectFrom: [ :x | x ] to: [ :x | x + 1 ].
view edges source: { 1 . 2 } connectFrom: [ :x | x ] to: [ :x | x + 10 ].
nodes do: [ :each |
RTNest new
layout: RTTreeLayout new;
on: each nest: each nestedElements ].
view
With bold I have showed the code necessary for applying the layout. In previous versions of Roassal/Mondrian, layouts were applied lazily, after the graph was constructed. This allowed us to write something like this:
view := RTMondrian new.
view shape rectangle fillColor: Color transparent.
view nodes: { { 1 . 2 } . { 11 . 12 } } forEach: [ :col |
view nodes: col.
view layout tree ].
view edges source: { 1 . 11 } connectFrom: [ :x | x ] to: [ :x | x + 1 ].
view edges source: { 1 . 2 } connectFrom: [ :x | x ] to: [ :x | x + 10 ].
view
Did I miss something or is this the only way supported currently?
Cheers,
Doru
--
www.tudorgirba.comwww.feenk.com
"To utilize feedback, you first have to acquire it."
Hi guys,
I am experiencing a problem visualizing histograms in Roassal with Pharo 5.
In the attached image you can observe the first bar shape starts from a
negative X axis value, where I want to start from 0. Besides, some bars are
gapped but I don't know why.
I am using with the following code:
| bins minPoint g ds |
bins := self groupedBySeqLengthDistribution: binNumber.
minPoint := ((bins reject: #isEmpty) detectMin: [ : c | c size ])
anyOne size.
" Build diagram "
g := RTGrapher new
extent: 500 @ 200;
minX: minPoint;
withoutOrigin;
yourself.
ds := RTData new
points: bins;
x: [ : c | c ifEmpty: [ minPoint ] ifNotEmpty: [ : d | d anyOne
size ] ];
y: #size.
ds barShape
borderColor: Color black;
color: aColor;
width: barWidth.
g add: ds.
" Configure axis settings "
g axisY
title: axixYLabel;
color: Color black;
noDecimal.
g axisX
noDecimal;
fromPoint: minPoint;
color: Color black;
title: axisXLabel.
" Open visualization in a new window "
g open.
Any idea what I am missing?
Cheers,
Hernán
Howdy!
I want to build a Playground-like browser and I'd really like some help for
getting the initial prototype up and running.
I see two parts:
- Code entry with "Go" button.
- Code execution with output printed (interpreter running as unix process.)
I have made a start on the "Code entry" pane like this:
| composite |
composite := GLMCompositePresentation new.
composite title: 'Script editor'.
composite text.
composite act: [] iconName: #glamorousGo on: $G entitled: 'Run'.
composite openOn: ''.
which does look the way that I want:
but the part I am missing is how to make the "Go" action (green arrow)
cause a new object to be inspected in a miller column to the right (like in
the Playground and the Inspector.)
Could somebody please tell me how to update the example to make this happen?
The next part is that I want to run the code using an interpreter running
in a separate unix process (a PipeableOSProcess.) I have made a GTInspector
extension to inspect this process and show its output, but I am looking for
a way to automatically refresh the presentation when new output becomes
available (e.g. polling at ~100ms interval and inserting new text that has
been printed.)
Can somebody give me a hint about how to update that presentation with the
latest output of the process?
Then, once the code has finished running, I want to refresh the inspector
with potentially some new views based on the final result. But I would be
more than satisfied to just solve the first two issues for now :-)
Thanks in advance! I have read the masters thesis on Glamour and I feel
like I am slowly developing a mental model but it's not all there yet. To
guess it seems like I need to embed my GLMCompositePresentation into a
browser based on miller-columns and to somehow send my new object to its
#selection port. Or something like that...
​
Hi,
Are the moose jenkin servers back on? While they seem to be back on I get a
lot of 'Service Temporarily Unavailable', can't start new builds and cannot
download previously built images.
Cheers,
Andrei
Hi,
I'm playing around with Glamour and accordion presentation, however there
are couple things I'm struggling with.
I have a simple presentation:
```
| browser data|
data := {
'First' -> #(1 2 3).
'Second' -> #(a b c).
'Third' -> #(A B C).
'Fourth' -> #(! @ #'#').
}.
browser := GLMTabulator new.
browser column: #accordion.
browser transmit to: #accordion; andShow: [ :a |
a accordionArrangement.
a title: 'Accordion'.
data do: [ :pair |
a fastList
title: pair key;
display: pair value
].
a list.
].
browser openOn: #().
```
* Is it possible to tell the accordion to not take more space than is
needed? E.g. after item 3, and after item $c there's lot of empty space.
* Is it possible to close accordions upwards? I have added an empty list at
the end to consume extra white space, but it is insufficient (see point
above) and ugly.
* Is it possible to control which accordions are opened/closed by default?
* Is it possible to connect all the lists so only one item can be selected
at any time? Currently I can select independently in the lists.
* Is it possible to build the lists from the input data (=openOn: XXX)? I
can fill the data, but if I am making multiple lists then I am lost.
(I could use tree to fix most of the problems, but Accordion looks much
nicer :))
Any pointers appreciated,
Peter