[Pharo-users] Spec layout

Marion Noirbent ms.noirbent at etudiant.univ-lille1.fr
Wed May 18 08:19:07 EDT 2016


Ok, I wait your answer.
Thanks for your help.
Marion,

Le 18/05/2016 12:04, Peter Uhnák a écrit :
> Yes but someone must call rebuildWidget… I will try to take a look at this
> today and give a better/more comprehensive example.
>
> Peter
>
> On Wed, May 18, 2016 at 1:01 PM, stepharo <stepharo at free.fr> wrote:
>
>> I do not get it.
>>
>> I still think that the solution of peter is the one to implement
>>
>> rebuildWidget
>>      self widgets removeAll.
>>      self createWidgets.
>>      self needFullRebuild: false.
>>      self buildWithSpecLayout: self dynamicLayout.
>>      self alignButtons
>>
>>
>> dynamicLayout
>>      | keys |
>>      keys := self widgets keys.
>>      ^ SpecLayout composed
>>          newColumn: [ :c |
>>                      keys do: [ :key | c newRow: key height: self class
>> buttonHeight ].
>>                      c newRow: [ :r |  ] ];
>>          yourself
>>
>>
>>
>> Le 18/5/16 à 12:46, Marion Noirbent a écrit :
>>
>> Because I would use "openWithSpec" to build only when the widget is ready,
>>> but it call a method (with the good pragma) on the class side.
>>>
>>> In the example i use i have add RadioButtonModel with addRadioButton: in
>>> the collection buttons, it's not empty but RadioButtonModel is a
>>> ComposableModel and layout: is define in the subclass
>>> DynamicComposableModel .
>>>
>>> Le 18/05/2016 10:22, stepharo a écrit :
>>>
>>>> But why from the class side.
>>>>
>>>> buttons
>>>>       ^ buttons
>>>>
>>>> returns an empty collection
>>>>
>>>> and
>>>>
>>>> rebuildWidget
>>>>       self widgets removeAll.
>>>>       self createWidgets.
>>>>       self needFullRebuild: false.
>>>>       self buildWithSpecLayout: self dynamicLayout.
>>>>       self alignButtons
>>>>
>>>>
>>>>
>>>> Le 18/5/16 à 11:31, Marion Noirbent a écrit :
>>>>
>>>>> I was trying to use it but i have still the problem to call the
>>>>> instance method from the class side, so i call the
>>>>> buildWithSpecLayout: in the method to add buttons in the collection,
>>>>> it seems work but i have an "MessageNotUnderstood" RadioButton>>layout:
>>>>>
>>>>> Le 18/05/2016 09:20, stepharo a écrit :
>>>>>
>>>>>> marion the solution is what peter proposes.
>>>>>>
>>>>>> Stef
>>>>>>
>>>>>>
>>>>>> Le 18/5/16 à 11:14, Marion Noirbent a écrit :
>>>>>>
>>>>>>> In fact i was trying to modify RadioButtonGroup to turn it into a
>>>>>>> widget, #buttons is not a widget but its collection of widget.
>>>>>>>
>>>>>>> May you have confused RadioButtonGroup with the MenuModel /
>>>>>>> MenuGroupModel / MenuItemModel which are widgets. I take inspiration
>>>>>>> from them and I would got the same kind of behaviour.
>>>>>>>
>>>>>>> Le 17/05/2016 21:11, stepharo a écrit :
>>>>>>>
>>>>>>>> Thanks Johan
>>>>>>>>
>>>>>>>>
>>>>>>>> We looked at
>>>>>>>>
>>>>>>>> RadioButtonGroupExample
>>>>>>>>
>>>>>>>> but you see we cannot have a RadioButtonGroupPresenter having 2, 3
>>>>>>>> or 4
>>>>>>>> radioButton.
>>>>>>>>
>>>>>>>> Stef
>>>>>>>>
>>>>>>>>
>>>>>>>> Le 17/5/16 à 18:52, Johan Fabry a écrit :
>>>>>>>>
>>>>>>>>> Hi Marion,
>>>>>>>>>
>>>>>>>>> the class side message of defaultSpec is generally meant to be
>>>>>>>>> used if
>>>>>>>>> you use a fixed number of widgets, so you can put the reference to
>>>>>>>>> the
>>>>>>>>> name of each widget there (in cour case #buttons). For variable
>>>>>>>>> number
>>>>>>>>> of widgets you should have a look at the dynamic features of Spec.
>>>>>>>>>
>>>>>>>>> That being said, It looks like what you really want to use is a
>>>>>>>>> Radio
>>>>>>>>> Button Group. Have a look at RadioButtonGroupExample.
>>>>>>>>>
>>>>>>>>> HTH
>>>>>>>>>
>>>>>>>>> --
>>>>>>>>> Does this mail seem too brief? Sorry for that, I don’t mean to be
>>>>>>>>> rude! Please see http://emailcharter.org .
>>>>>>>>>
>>>>>>>>> Johan Fabry   -   http://pleiad.cl/~jfabry
>>>>>>>>> PLEIAD and RyCh labs  -  Computer Science Department (DCC)  -
>>>>>>>>> University of Chile
>>>>>>>>>
>>>>>>>>> On May 17, 2016, at 13:48, Marion Noirbent
>>>>>>>>>> <ms.noirbent at etudiant.univ-lille1.fr> wrote:
>>>>>>>>>>
>>>>>>>>>> Hi,
>>>>>>>>>> I'm trying to create a widget whith Spec, managing a collection of
>>>>>>>>>> RadioButton. But I have a problem with defaultSpec (the accessor of
>>>>>>>>>> the collection is the methods "buttons") :
>>>>>>>>>>
>>>>>>>>>> If i put defaultSpec on class side, i can't acces the collection of
>>>>>>>>>> the instance. (the following code iterate on the string)
>>>>>>>>>>
>>>>>>>>>> defaultSpec
>>>>>>>>>>      <spec: #default>
>>>>>>>>>>      ^ SpecLayout composed
>>>>>>>>>>          newColumn: [ :column | #buttons do: [ :item | column add:
>>>>>>>>>> item ] ];
>>>>>>>>>>          yourself
>>>>>>>>>>
>>>>>>>>>> If i put it on instance side, the lookup don't find it (in the book
>>>>>>>>>> Building UI with Spec, it said the lookup begin by the instance
>>>>>>>>>> side
>>>>>>>>>> and it allow to have specific UI, in part about layout)
>>>>>>>>>>
>>>>>>>>>> defaultSpec
>>>>>>>>>>      <spec: #default>
>>>>>>>>>>      ^ SpecLayout composed
>>>>>>>>>>          newColumn: [ :column | self buttons do: [ :item | column
>>>>>>>>>> add:
>>>>>>>>>> item ] ];
>>>>>>>>>>          yourself
>>>>>>>>>>
>>>>>>>>>> Any idea ?
>>>>>>>>>>
>>>>>>>>>> Marion Noirbent,
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>
>>>>
>>>
>>
>>
>

-- 
Ma clé publique sur pgp.mit.edu




More information about the Pharo-users mailing list