Hi Doru an community,
In almost a week from now I will write an small revision article about
this prototyping exercise on Moose/Glamour/Pharo, for structured
writing. My ideal would be to write it inside this prototype, but for
that I need to be able to edit and store the changes on the tree and its
node contents. Hopefully it won't take too much, even for a newbie like
me. Even if is not possible, and I need to go back to Leo Editor
(http://leoeditor.com/) for reporting and writing the article, this
exercise has been really valuable.
This are my issues so far:
Auto-updating objects from the browser is working but I'm having
problems to integrate this with my code. To follow better what is
happening just:
1. Follow the installation notes on:
http://wiki.hackbo.co/doku.php/herramientas:grafoscopio:en:install
2. Run this code:
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
| text mainTree |
mainTree := UbakyeNode new.
mainTree becomeDefaultTree.
text := (mainTree children at: 1) body.
GLMCompositePresentation new wrapper
with: [ :wrapper |
wrapper show: [ :a |
a text ].
wrapper transmit
fromOutsidePort: #text;
toOutsidePort: #portIDoNotCareAbout;
transformed: [ :textComingFromThePresentation |
text := textComingFromThePresentation ] ];
openOn: text.
(mainTree children at: 1) body: text
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
If I comment the last line, I can explore the Browser Tree and see how
#text updates automatically, but if I leave it uncommented I can explore
the mainTree and see that is not updating.
Also I tried to put the transmit parameters in the build browser
transmit parameter, just here:
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
UbakyeBrowser>>buildBrowser
"(... snipped code)"
(browser transmit)
to: #body;
from: #tree;
andShow: [ :a | self bodyOn: a].
"(...snipped code)"
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
replacing "to:", "from:" and "andShow:" for "fromOutsidePort:",
"toOutsidePort:" and "transformed:" as shown in your example, but then
the current selection in the tree got disconnected from the body pane.
I would mind to have a explicit button or keyboard shortcut to take what
is currently on a text pane and send it all to a particular node for
updating, if this is the quickest workaround. So, How can I made this?
Also, Doru showed to me a way to invoke inspector on the current
selected node. Suppose that I want to have an emergent window to edit
the node header and some tags on it. Is this possible?
Cheers and thanks in advance,
Offray
On 09/03/2014 04:27 AM, Tudor Girba wrote:
Hi,
As I said before, right now, Glamour does not easily the behavior you want, but
you can abuse an existing mechanism of capturing changes of a port through a
transmission that transforms that value.
Here is an example:
text := ''.
GLMCompositePresentation new wrapper
with: [ :wrapper |
wrapper show: [ :a |
a text ].
wrapper transmit fromOutsidePort: #text; toOutsidePort: #portIDoNotCareAbout;
transformed: [ :textComingFromThePresentation | text :=
textComingFromThePresentation ] ];
openOn: text
In this example, we create a transmission that originates in the #text port that
will be populated every time you modify something. This transmission sends the
value to #portIDoNotCareAbout only to have access to the transformation block
where you can do what you want with the textComingFromThePresentation.
To check the behavior:
- execute the code in a Playground,
- type something in the text area that opens,
- inspect the text variable
==> you will see that it contains the latest contents from the text editor
We should promote this mechanism explicitly in Glamour, but in the meantime it
is probably sufficient for your case.
Doru
On Wed, Sep 3, 2014 at 4:47 AM, Offray Vladimir Luna Cárdenas <off...@riseup.net
<mailto:off...@riseup.net>> wrote:
Hi,
I'm trying to restate my question to see if I have more luck with any
answer
this time.
I'm making advances with an outliner like app for writing and now I can add
nodes move them and store them in the really nice STON format. But because
information on trees is not editable, I would like to try another approach:
To create an emergent window and put the node tree and node tags on it, and
the update the this values on the tree node.
Also, I would like to update some objects from the a Glamour text pane,
without any special button or action, just while I'm writing on them. If
this is not possible which is the message to select all text in a body
panel
and to send it to a object?
I will be doing some further advances by my own and keep you posted (may be
with some more specific/better questions on how to get this behaviour from
Moose browsers).
Cheers,
Offray
--
www.tudorgirba.com <http://www.tudorgirba.com>
"Every thing has its own flow"