Hi again,

I have opted for another option: Manually updating objects from text panes. I have a method for showing the content of a node body:

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
bodyOn: constructor
        "Shows the body of a selected node"
        (constructor text)
       title: 'Cuerpo | Body ';
                 format:[:eachNode |
          (eachNode body) isNil
              ifTrue: [ '' ]
              ifFalse: [ eachNode body]];
                 act: [:text |  text inspect ]
                 icon: GLMUIThemeExtraIcons glamorousRefresh
                 entitled: 'Save body'.
        
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

At this moment I have only "text inspect" as an action for the text pane, but when I inspect it, I can see in the "Pane Ports" tab that any text wrote there gets updated up to the moment of clicking in the button. What I would like is to send the updated text as an argument for the "body:" setter of the UbakyeNode object. I have seen in the PBE2 chapter about Glamorous that I can used ports to send values to the outside, but still I don't get how.

Remember that you can upload the code by following the instructions here:

http://wiki.hackbo.co/doku.php/herramientas:grafoscopio:en:install

Any advice on this is appreciated.

Thanks in advance,

Offray

On 09/05/2014 10:58 PM, Offray Vladimir Luna Cárdenas wrote:
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"






Reply via email to