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:[email protected]] On Behalf Of
Offray Vladimir Luna Cárdenas
Sent: 09 August 2014 05:08
To: [email protected]
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
>> <[email protected] <mailto:[email protected]>> 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
>> <[email protected] <mailto:[email protected]>> 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
>> [email protected] <mailto:[email protected]>
>> 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"
>>
>
>
>