[Pharo-users] Spec layout

Peter Uhnák i.uhnak at gmail.com
Wed May 18 07:04:00 EDT 2016


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,
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>
>>>
>>>
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.pharo.org/pipermail/pharo-users_lists.pharo.org/attachments/20160518/e66636b1/attachment.html>


More information about the Pharo-users mailing list