Hi Offray

Well, none of the experts has come forward to help, so maybe I can comment as 
almost a complete beginner. I think you need two additional bits of 
specification in your example to get the output you want:

a. To show the node titles in the #tree pane, you need to add a format: clause, 
which is a block taking the node as argument and returning the text to be 
output.

b. To show the body of the selected tree node in the #body pane, you need a 
display: clause, which is a similar block generating the body details that you 
want.

To give you a specific example, here is some code I have used. I am using a 
GlamorousBrowser to examine the tree representation of an HTML page generated 
by Todd Blanchard's superb HTMLCSS parser. The browser I produce is similar to 
yours, but without the #plugins pane.

domBrowser := GLMTabulator new. 
domBrowser
        column:  #details;
        column: #nodeDetails.
domBrowser transmit to: #details; andShow: [ :a |
   a tree
      display: [ :model | model nodesSelect: [ :each | each tag = 'html'] ];
      children: [ :node | node children ];
      format: [ :node ||nid| node tag,' ', ((nid := node id) isNil ifTrue:[''] 
ifFalse:['id=',nid,' '])] ].
domBrowser transmit from: #details; to: #nodeDetails;
                 andShow: [ :each| each text display: [:node| node 
innerContents ]].
domBrowser title: 'Browse HTML'.

I hope this makes it clear; if not, ask again.

Best wishes

Peter Kenny

-----Original Message-----
From: Pharo-users [mailto:pharo-users-boun...@lists.pharo.org] On Behalf Of 
Offray Vladimir Luna Cárdenas
Sent: 09 August 2014 05:08
To: pharo-users@lists.pharo.org
Subject: [Pharo-users] Rephrasing my question on Stackoverflow (Re: [Moose-dev] 
Re: Tree/Outliners of playgrounds, markdown inside comments and some quick 
medium size dreams for Pharo/Smalltalk)

Hi again,

I'm testing my luck in Stackoverflow to see if I can get more eyes and keep the 
conversation going:

http://stackoverflow.com/questions/25215103/building-a-tree-outliner-like-graphical-interface-in-pharo-smalltalk-using-moose

This community is very responsive but I feel I'm not understanding 
quickly/properly enough the main logic of tree-like browsers on Moose. 
So, any extra help is welcomed.

Cheers,

Offray


On 08/07/2014 03:28 PM, Offray Vladimir Luna Cárdenas wrote:
> Hi Doru and Community :-),
>
> In the screenshot at [1] you can see my explorations. I took the code 
> from treeWithChildrenByeLevel in the GLMBasicExamples and modified it 
> until I got this:
>
> [1] http://www.enlightenment.org/ss/e-53e3dee6777744.68598023.jpg
>
> So I have now a browser which shows a tree made of UbakyeNodes (a tree 
> like data structure I defined), but I would like not to show the 
> Ubakye Nodes, but the titles of each node (headers) and the contents 
> (bodies) of them when selected. With your help I have understood that 
> I need to pass the collection of all children (not just the headers of 
> them), but I don't know who to sellect something particular in that 
> collection to be shown on the browser, like headers of nodes in the 
> #tree panel or bodies in the #body panel.
>
> I would like to change also the size of each panel to be more like the 
> shown in the screenshot, instead of the default one and be relative to 
> window size. Is this possible?
>
> Thanks,
>
> Offray
>
> Below is the code, for easiness of reading:
>
> =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
> "
> Another exploration of Outliners provided by Glamorous Toolkit and 
> browsers. This code was obtained by running 'GLMBasicExamples open'
> and then browsing until 'treeWithChildrenByLevel'. Some code was 
> modified to open explicitely the browser on the world and starting to 
> hack on it.
> "
>
>      | browser mainTree |
>
>      mainTree := UbakyeNode new.
>      mainTree becomeDefaultTree.
>
>      browser := GLMTabulator new.
>      browser
>          column: #tree;
>          column: [ :c |
>                      c
>                          row: #body;
>                          row: #plugins ].
>      (browser transmit)
>          to: #tree;
>          andShow: [ :a |
>                      (a tree)
>                          title: mainTree header;
>                          children: [ :eachNode |
>                                      eachNode children. ]    "Children
> must return a collection" ].
>      (browser transmit)
>          to: #body;
>          from: #tree;
>          andShow: [ :a | a text title: 'Cuerpo | Body ' ].
>      (browser transmit)
>          to: #plugins;
>          from: #tree port: #selectionPath;
>          andShow: [ :a | a text title: 'Plugins | Extensiones' ].
>
>      browser openOn: mainTree children.
> =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
>
>
> On 08/05/2014 12:19 AM, Tudor Girba wrote:
>> Hi,
>>
>> You probably need this:
>>
>> explorer transmit to: #tree; andShow: [:a |
>>                   a tree
>>                           display: headers;
>> *children: [:eachNode | eachNode
>> theMessageYouUseToGoToTheChildrenOfANode ]*].
>>
>> A tree is a recursive structure, and to describe it you need:
>> - a way to construct the root elements. This is the result of 
>> applying
>> display:
>> to the input object. So, display: either takes a collection or a 
>> block that will return a collection when executed.
>> - a way to define the children for each node. This is the result of 
>> applying
>> children:
>>
>> You should also take a look at the examples from:
>> GLMBasicExamples open
>>
>> Does this help now?
>>
>> Cheers,
>> Doru
>>
>>
>>
>>
>>
>> On Sun, Jul 27, 2014 at 4:59 PM, Offray Vladimir Luna Cárdenas 
>> <off...@riseup.net <mailto:off...@riseup.net>> wrote:
>>
>>      Hi,
>>
>>      Answering to myself: I have solved the code that selects the 
>> headers of the
>>      main tree. The key is to create a new collection containing only 
>> node names.
>>      Here is the code:
>>
>>      "*************************"
>>      | mainTree node1 node2 explorer headers  |
>>
>>      mainTree := UbakyeNode
>>               header: 'Arbol raíz'
>>               body: ''.
>>
>>      node1 := UbakyeNode
>>               header: 'Nodo 1'
>>               body:  'Texto 1'.
>>
>>      node2 := UbakyeNode
>>               header: 'Nodo 2'
>>               body:  'Texto 2'.
>>
>>      mainTree
>>               addNode: node1;
>>               addNode: node2.
>>
>>
>>      explorer := GLMTabulator new
>>                       title: (mainTree header).
>>      explorer column: #tree;
>>                column: #body.
>>
>>      headers := (mainTree children)
>>               collect: [:node |  node header].
>>
>>
>>      explorer transmit to: #tree; andShow: [:a |
>>                       a tree
>>                               display: headers].
>>
>>      explorer openOn: mainTree.
>>
>>      "*************************"
>>
>>      Now I need to make the children sellectable, and that all the 
>> contents of
>>      the tree can be updated with a shortcut.
>>
>>      I will keep you posted.
>>
>>      Cheers,
>>
>>      Offray
>>
>>
>>      On 07/26/2014 09:01 PM, Offray Vladimir Luna Cárdenas wrote:
>>
>>          Hi again,
>>
>>          I will be using this thread to update my advances and 
>> questions about
>>          how to build an outliner in Pharo Smalltalk. If there is a 
>> better method
>>          like starting a new thread for particular questions, or a 
>> less narrative
>>          style, please let me know.
>>
>>          The idea is to use the tools provided by Moose to build a 
>> quick outliner
>>          that can be extended to suit my needs on academical writing.
>> This is
>>          kind of a strange approach in the sense that I'm not 
>> following the
>>          tutorials with a predefined problems (make a game and so) 
>> but trying to
>>          start with a real (in the sense of closer) problem (making 
>> an
>> outliner)
>>          and to see which knowledge I need to solve this necessity. 
>> In that sense
>>          is more like the Freire's alphabetization of adults in Brazil.
>>
>>          So, the things I have done so far was to search for a good 
>> model to
>>          start with. Something already done that can be used as 
>> scaffolding for
>>          my outliner. The Help System seems like a good start for an 
>> outliner (in
>>          fact it is already one), so I have taken the Help-Core 
>> system and start
>>          to use it as a base for my project.
>>
>>          After that I have used the Moose browsers to build a simple 
>> interface,
>>          as seen here:
>>
>>
>> http://mutabit.com/offray/__static/blog/output/galleries/__objetos/ub
>> akye-browser.jpg
>>
>>
>> <http://mutabit.com/offray/static/blog/output/galleries/objetos/ubaky
>> e-browser.jpg>
>>
>>
>>
>>          The part I want to deal with is this:
>>
>>          ===============
>>
>>          explorer := GLMTabulator new
>>                            title: (mainTree header).
>>          explorer column: #tree;
>>                        column: #body.
>>
>>          explorer transmit to: #tree; andShow: [:a |
>>                    a tree
>>                        display: mainTree children ].
>>
>>          explorer openOn: mainTree.
>>
>>          ===============
>>
>>          So, instead of "display: mainTree children" I need something 
>> that takes
>>          the get names (headers) of the two nodes and the contents in 
>> the right
>>          panel. For that I think that I need to learn some iterators.
>> I have
>>          already a "header" method for the nodes. Any clue would be 
>> appreciated
>>          and I will keep you posted on my advances.
>>
>>          Cheers,
>>
>>          Offray
>>
>>
>>          On 07/21/2014 12:58 PM, Offray Vladimir Luna Cárdenas wrote:
>>
>>              Hi Damien,
>>
>>              Thanks for your answer. Comments below.
>>
>>              On 07/21/2014 11:09 AM, Damien Cassou wrote:
>>
>>                  On Sat, Jul 19, 2014 at 2:47 AM, Offray Vladimir 
>> Luna Cárdenas
>>                  <off...@riseup.net <mailto:off...@riseup.net>> wrote:
>>
>>                      The first idea that comes to mind is using STON 
>> for storage
>>                      nodes and
>>                      tree
>>                      information, so I can interchange it with the 
>> flatland files
>>                      world
>>                      and keep
>>                      it readable. Sounds that reasonable?
>>
>>
>>
>>                  without more information, it is hard to stay. Try 
>> with STON and
>>                  change
>>                  if that does not work :-). We have XML and JSON 
>> generators as well.
>>
>>
>>
>>              This is a kind of raw preview of I'm talking about:
>>
>>
>> http://www.enlightenment.org/__ss/e-53cd4f36f021e9.68569046.__jpg
>>
>> <http://www.enlightenment.org/ss/e-53cd4f36f021e9.68569046.jpg>
>>
>>              Of course in this case, it is just a Help browser with a 
>> Playground
>>              window over it, but I would like to have something like 
>> Playgrounds
>>              inside the help browser. I was trying to build a custom 
>> browser with
>>              Glamour, but seems that Help Browser already has the 
>> machinery I'm
>>              looking for.
>>
>>              So my first question is how to use the Help Browser 
>> class as a template
>>              for my outliner class? And can I put a Playground where 
>> the plain text
>>              is located right now?
>>
>>
>>                      The second thing I would like to do is to add 
>> pandoc's
>>                      markdown inside
>>                      comments, but I don't like the syntax of comments in
>>                      Smalltalk because
>>                      single quotes are fairly easy to find in light 
>> markup
>>                      language like
>>                      markdown. Is difficult to change it to create 
>> something more
>>                      like
>>                      python
>>                      (with """) or Lua (with -[]- )?
>>
>>
>>
>>                  There is only one syntax for comments in Pharo.
>> Instead of Markdown,
>>                  you might want to have a look at Pillar which is 
>> implemented in
>>                  Pharo
>>                  and can generate Markdown (and html, and pdf) :
>>                  https://github.com/pillar-__markup/pillar-documentation/
>>                  
>> <https://github.com/pillar-markup/pillar-documentation/>
>>
>>
>>
>>              I have seen Pillar. Seems really interesting, but 
>> Pandocs markdown
>>              support academic citation in several formats and I have 
>> already long
>>              docs wrote on that format integrated in my workflow from 
>> Zotero and even
>>              there is a growing community working on Scholarly 
>> Markdown[1][2] so I
>>              would like to stick with it as much as I can for my own 
>> writing.
>>              That being said. I would like also a better integration 
>> between
>>              Smalltalk outliners and all the academic publication 
>> work flow,
>>              including working better with pandoc as a external library.
>>
>>              [1] https://github.com/scholmd/__scholmd/wiki
>>              <https://github.com/scholmd/scholmd/wiki>
>>              [2]
>>
>> http://blog.martinfenner.org/__2013/06/29/metadata-in-__scholarly-mar
>> kdown/
>>
>>
>> <http://blog.martinfenner.org/2013/06/29/metadata-in-scholarly-markdown/>
>>              [3]
>>
>> http://programminghistorian.__org/lessons/sustainable-__authorship-in
>> -plain-text-__using-pandoc-and-markdown
>>
>>
>> <http://programminghistorian.org/lessons/sustainable-authorship-in-pl
>> ain-text-using-pandoc-and-markdown>
>>
>>
>>
>>
>>              Thanks again, this conversation with people in the 
>> community is very
>>              valuable to me,
>>
>>              Offray
>>
>>
>>
>>
>>
>>
>>
>>      _________________________________________________
>>      Moose-dev mailing list
>>      moose-...@iam.unibe.ch <mailto:moose-...@iam.unibe.ch>
>>      https://www.iam.unibe.ch/__mailman/listinfo/moose-dev
>>      <https://www.iam.unibe.ch/mailman/listinfo/moose-dev>
>>
>>
>>
>>
>> --
>> www.tudorgirba.com <http://www.tudorgirba.com>
>>
>> "Every thing has its own flow"
>>
>
>
>



Reply via email to