From memory: 
- 11920 (the valueHolder one)
- 12054 (TreeNode and TreeColumn)
- There is one also about SpecMenu, I do not remember the number

Ben

On 07 Nov 2013, at 21:10, Stéphane Ducasse <stephane.duca...@inria.fr> wrote:

> 
> On Nov 7, 2013, at 6:45 PM, Benjamin <benjamin.vanryseghem.ph...@gmail.com> 
> wrote:
> 
>> About table, I have an example which will be running soon in Pharo (the 
>> changes are waiting to be integrated)
> 
> which ones?
> Because I was crawling all the ones I could?
> 
> Stef
> 
> 
>> 
>> tree := TreeModel new.
>> tree openWithSpec.
>> 
>> tree columns: (Array 
>>      with: (TreeColumnModel new displayBlock: [:node | node content first 
>> asString ]; headerLabel: 'Name'; yourself)
>>      with: (TreeColumnModel new displayBlock: [:node | node content second 
>> asString ]; headerLabel: 'Last Name'; yourself)
>>      with: (TreeColumnModel new displayBlock: [:node | node content third 
>> asString ]; headerLabel: 'Age'; yourself)
>>      with: (TreeColumnModel new displayBlock: [:node | node content fourth 
>> asString ]; headerLabel: 'Gender'; yourself)).
>>      
>> tree roots: {
>>      {'Benjamin'.'Van Ryseghem'.'26'.'M'}.
>>      {'Pamela'.'Anderson'.'Far too much'.'F'}
>> }
>> 
>> Will produce
>> 
>> <Screen Shot 2013-11-07 at 18.38.21.png>
>> 
>> Right now, you can get the same by
>>      - adding MorphTreeAdapter>>#columns:
>>              columns: columns 
>>                       self widgetDo: [ :w | 
>>                              w columns: columns. 
>>                              w resizerChanged. 
>>                              w updateList ]
>> 
>> And then evaluating:
>> 
>> tree := TreeModel new.
>> tree openWithSpec.
>> 
>> tree columns: (Array 
>>      with: (MorphTreeColumn new rowMorphGetSelector: [:node | node item 
>> first asString asMorph ]; headerButtonLabel: 'Name' font: nil; yourself)
>>      with: (MorphTreeColumn new rowMorphGetSelector: [:node | node item 
>> second asString asMorph ]; headerButtonLabel: 'Last Name' font: nil; 
>> yourself)
>>      with: (MorphTreeColumn new rowMorphGetSelector: [:node | node item 
>> third asString asMorph ]; headerButtonLabel: 'Age' font: nil; yourself)
>>      with: (MorphTreeColumn new rowMorphGetSelector: [:node | node item 
>> fourth asString asMorph ]; headerButtonLabel:  'Gender' font: nil; 
>> yourself)).
>>      
>> tree roots: {
>>      {'Benjamin'.'Van Ryseghem'.'26'.'M'}.
>>      {'Pamela'.'Anderson'.'Far too much'.'F'}
>> }
>> 
>> Ben
>> 
>> On 07 Nov 2013, at 15:54, Clément Bera <bera.clem...@gmail.com> wrote:
>> 
>>> 
>>> 2013/11/7 Benjamin <benjamin.vanryseghem.ph...@gmail.com>
>>> Just a general remark: you should try as much as possible to avoid hard 
>>> coding width/height :)
>>> 
>>> there are some methods on ComposableModel you could use like buttonHeight 
>>> toolbarHeight etc. that you should use instead :)
>>> 
>>> 
>>> Ben
>>> 
>>> On 07 Nov 2013, at 13:22, Bahman Movaqar <bah...@bahmanm.com> wrote:
>>> 
>>>> On 11/07/2013 12:45, Clément Bera wrote:
>>>>> Hey,
>>>>> 
>>>>> I don't know what you want exactly.
>>>>> 
>>>>> You can do:
>>>>> 
>>>>> spec
>>>>> <spec>
>>>>> ^ SpecLayout composed
>>>>>  newRow: [:row | 
>>>>>  row 
>>>>>                                 newColumn: [ :col |
>>>>>                                 col
>>>>>  add: #list width: 135;
>>>>>  add: #description ] ];
>>>>>  yourself
>>>>> 
>>>>> and nest that as many times as you want (but I don't know if this was 
>>>>> your question).
>>>> 
>>>> I just tried this one and it works (see the code below) BUT, the code is 
>>>> so hard to read and understand just for 3 rows and 7 widgets!
>>>> 
>>>> <code>
>>>> defaultSpec
>>>>     ^ SpecLayout composed
>>>>         newColumn: [ :mainColumn | 
>>>>                     mainColumn
>>>>                         newRow: [ :nameRow | 
>>>>                             nameRow
>>>>                                 add: #labelName;
>>>>                                 add: #textName ]
>>>>                         height: 25.
>>>>                     mainColumn
>>>>                         newRow: [ :titleRow | 
>>>>                             titleRow
>>>>                                 add: #labelTitle;
>>>>                                 newRow: [ :titleRadioRow | 
>>>>                                             titleRadioRow
>>>>                                                 add: #radioMr;
>>>>                                                 add: #radioMrs;
>>>>                                                 add: #radioMs ] ]
>>>>                         height: 25.
>>>>                     mainColumn newRow: [ :buttonRow | buttonRow add: 
>>>> #buttonGreet ] height: 25 ];
>>>>         yourself
>>>> </code>
>>>> 
>>>> Am I doing it right?  
>>> 
>>> I guess this is right. But I think you need to generate this layout out of 
>>> collections, not to write it. 
>>>> 
>>>>> 
>>>>> Another feature is:
>>>>> 
>>>>> debuggerSpec
>>>>>  <spec: #default>
>>>>>  ^ SpecLayout composed
>>>>>  add: #inspector withSpec: #debuggerSpec; 
>>>>>  yourself
>>>>> 
>>>>> #inspector being the instance variable name that holds a subclass of 
>>>>> ComposableModel that defines class side #debuggerSpec, which answers a 
>>>>> SpecLayout.
>>>>> 
>>>> 
>>>> Does this mean that for every table cell I have to create a new class?
>>> 
>>> Yeah well I was just pointing out all the choices you had. Depending on 
>>> what you want to do you could have a class hierarchy similar to this:
>>> 
>>> SpecTable
>>> AbstractSpecColumn
>>>     SpecColumnA
>>>     SpecColumnB
>>> AbstractSpecCell
>>>     SpecCellA
>>>     SpecCellB
>>>  
>>> SpecTable having column, column having cells.
>>> But this may not be the best choice.
>>> 
>>> Now that you caught my interest, I tried to do a table. I put it in 
>>> attachment the result. It is a .st file, so drag and drop it in your image, 
>>> then click file in entire file. Then try to run 'SpecTable new', it opens a 
>>> table with 3 columns and 5 rows, with no complex layout method. All the 
>>> code is in SpecTable (Cmd+f,Cmd+c to find a class in nautilus or write the 
>>> class name in workspace then select it and press Cmd+m), in the method 
>>> protocol table logic. It's like 6 methods.
>>> 
>>> However: 
>>> - vertical splitters are not sync.
>>> - I don't know how to color the border of each cell to make it beautiful.
>>> 
>>> Of course you need to polish it ...
>>> 
>>> I hope it helped you :)
>>> 
>>>> 
>>>>> Not sure if this helped.
>>>>> 
>>>>> All of these questions are for your tutorials ?
>>>>> 
>>>>> 
>>>>> 
>>>>> 
>>>>> 2013/11/7 Bahman Movaqar <bah...@bahmanm.com>
>>>>> Hi all,
>>>>> 
>>>>> Is it possible to nest layouts in Spec?  For example can I combine
>>>>> `SpecColumnLayout` and `SpecRowLayout` together?
>>>>> 
>>>>> 
>>>>> -- 
>>>>> Bahman Movaqar  (http://BahmanM.com)
>>>>> 
>>>>> ERP Evaluation, Implementation & Deployment Consultant
>>>>> PGP Key ID: 0x6AB5BD68 (keyserver2.pgp.com)
>>>>> -- 
>>>>> Bahman Movaqar  (http://BahmanM.com)
>>>>> 
>>>>> ERP Evaluation, Implementation & Deployment Consultant
>>>>> PGP Key ID: 0x6AB5BD68 (keyserver2.pgp.com)
>>> 
>>> 
>>> <SpecTable.st>
>> 
> 

Reply via email to