Re: [Pharo-users] Unable to execute example code from "The Spec UI Framework" Book

2018-03-22 Thread Stephane Ducasse
On Thu, Mar 22, 2018 at 1:41 AM, brett  wrote:
> Thank you -- of course ! I had that  "ui close" in my code !!! , I'd expected
> the
> form to take control until I exited the form itself and had not considered
> the code would 'fall straight through' to the 'ui close'
>
>
> The example form now displays on Pharo's World and is active as expected.
>
> From my experience with trying to get this example working, I think the
> chapter needs a bit of expansion & more explanation
> about some features used. The Class method creation verse the instance
> methods being an example. I guess the authors assume most people will have
> worked with Pharo  without jumping straight to the GUI interfacing !!

Indeed. We cannot add Pharo by example in all the books we write :)



>
> Thank you all for your help, getting this example running is a very
> important step to understanding Pharo's UI.
>
>
>
>
>
> --
> Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
>



Re: [Pharo-users] Unable to execute example code from "The Spec UI Framework" Book

2018-03-21 Thread brett
Thank you -- of course ! I had that  "ui close" in my code !!! , I'd expected
the 
form to take control until I exited the form itself and had not considered
the code would 'fall straight through' to the 'ui close'


The example form now displays on Pharo's World and is active as expected.

>From my experience with trying to get this example working, I think the
chapter needs a bit of expansion & more explanation
about some features used. The Class method creation verse the instance
methods being an example. I guess the authors assume most people will have
worked with Pharo  without jumping straight to the GUI interfacing !!

Thank you all for your help, getting this example running is a very
important step to understanding Pharo's UI.





--
Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html



Re: [Pharo-users] Unable to execute example code from "The Spec UI Framework" Book

2018-03-21 Thread kmo
Have you left in that ui close statement that was in your first post? I tried
you code and it worked fine - but if you issue a close you'll have nothing
to see! 



--
Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html



Re: [Pharo-users] Unable to execute example code from "The Spec UI Framework" Book

2018-03-21 Thread Sean P. DeNigris
dragoncity-2 wrote
> When I run the
> 
> |ui | ... etc from a Playground, I don't get a working UI Form, but 
> I get a correctly defined static image layout of the form under 'Morph' IN
> the Playground.
> 
> I expected the CustomerSatisfaction UI form to appear as a independent 
> item on the Pharo 'world'.
> 
> Now what am I doing wrong ? :-)

I think you want "Do It" instead of "Do It and Go"



-
Cheers,
Sean
--
Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html



Re: [Pharo-users] Unable to execute example code from "The Spec UI Framework" Book

2018-03-21 Thread dragoncity


You've defined this as an instance method, not a class method

Thanks for that observation! On closer read indeed I had missed the 
'class' word in the defaultSpec text on page 6, it


took a little fiddling to get a Class method defined.

Its 'almost' working :-)

When I run the

|ui | ... etc from a Playground, I don't get a working UI Form, but 
I get a correctly defined static image


layout of the form under 'Morph' IN the Playground.

I expected the CustomerSatisfaction UI form to appear as a independent 
item on the Pharo 'world'.


Now what am I doing wrong ? :-)


On 21/03/18 19:02, Alistair Grant wrote:

On 21 March 2018 at 08:37, dragoncity  wrote:

I had already  defined & accepted defaultSpec , as per page 6.

Attached is my CustomerSatisfaction.st file :  I assume Pharo will suck it
back in !

You've defined this as an instance method, not a class method.

If what I've said doesn't make sense, let us know and we can point you
to a description (which I don't have handy).  One tip: Assuming you're
using Pharo 6, in the System Browser, roughly in the middle is a
"Class" button.  Pressing that will show you the class methods.

HTH,
Alistair




On 21/03/18 17:55, Alistair Grant wrote:

On 21 March 2018 at 03:12, dragoncity  wrote:

Hello, I'm just getting into Pharo, and am trying to
do the example 'tutorial' UI programs in chapter 2 of The Spec UI
Framework
book. I have  a special interest in end user GUI interfaces for programs.
I
enter the first example code as written and the methods are all accepted
without errors. And yes, I did generate the accessors.

However , on attempting to execute the code at the bottom of page 6 from
the
latest Spec UI Framework book,


| ui |

ui := CustomerSatisfaction newopenWithSpec.

ui close.



this error message appears, no UI image appears of course.

"SubclassResponsibility:CustomerSatisfaction class had the subclass
responsibility to implement #defaultSpec"

==

Not only don't I understand the message, but it implies I have to write
something called #defaultSpec !, which is not mentioned in the tutorial.

CustomerSatisfaction is a subclass of ComposableModel
(ComposablePresenter in Pharo 7).  If you have a look at the
implementation of #defaultSpec in ComposableModel or
ComposablePresenter (depending on which version of Pharo you are
using) it says that it is up to subclasses to implement the method
(#subclassResponsibility).  Since  you haven't defined it (yet), the
call to #defaultSpec uses the inherited definition from
ComposableModel, which raises the error you are seeing.

CustomerSatisfaction class>>defaultSpec is on page 6 of my version of
the booklet, dated Feb 6, 2107.


Cheers,
Alistair



--
Cheers,
Brett





--
Cheers,
Brett




Re: [Pharo-users] Unable to execute example code from "The Spec UI Framework" Book

2018-03-21 Thread Alistair Grant
On 21 March 2018 at 08:37, dragoncity  wrote:
> I had already  defined & accepted defaultSpec , as per page 6.
>
> Attached is my CustomerSatisfaction.st file :  I assume Pharo will suck it
> back in !

You've defined this as an instance method, not a class method.

If what I've said doesn't make sense, let us know and we can point you
to a description (which I don't have handy).  One tip: Assuming you're
using Pharo 6, in the System Browser, roughly in the middle is a
"Class" button.  Pressing that will show you the class methods.

HTH,
Alistair



> On 21/03/18 17:55, Alistair Grant wrote:
>>
>> On 21 March 2018 at 03:12, dragoncity  wrote:
>>>
>>> Hello, I'm just getting into Pharo, and am trying to
>>> do the example 'tutorial' UI programs in chapter 2 of The Spec UI
>>> Framework
>>> book. I have  a special interest in end user GUI interfaces for programs.
>>> I
>>> enter the first example code as written and the methods are all accepted
>>> without errors. And yes, I did generate the accessors.
>>>
>>> However , on attempting to execute the code at the bottom of page 6 from
>>> the
>>> latest Spec UI Framework book,
>>>
>>>
>>> | ui |
>>>
>>> ui := CustomerSatisfaction newopenWithSpec.
>>>
>>> ui close.
>>>
>>>
>>>
>>> this error message appears, no UI image appears of course.
>>>
>>> "SubclassResponsibility:CustomerSatisfaction class had the subclass
>>> responsibility to implement #defaultSpec"
>>>
>>> ==
>>>
>>> Not only don't I understand the message, but it implies I have to write
>>> something called #defaultSpec !, which is not mentioned in the tutorial.
>>
>> CustomerSatisfaction is a subclass of ComposableModel
>> (ComposablePresenter in Pharo 7).  If you have a look at the
>> implementation of #defaultSpec in ComposableModel or
>> ComposablePresenter (depending on which version of Pharo you are
>> using) it says that it is up to subclasses to implement the method
>> (#subclassResponsibility).  Since  you haven't defined it (yet), the
>> call to #defaultSpec uses the inherited definition from
>> ComposableModel, which raises the error you are seeing.
>>
>> CustomerSatisfaction class>>defaultSpec is on page 6 of my version of
>> the booklet, dated Feb 6, 2107.
>>
>>
>> Cheers,
>> Alistair
>>
>>
>
> --
> Cheers,
> Brett
>



Re: [Pharo-users] Unable to execute example code from "The Spec UI Framework" Book

2018-03-21 Thread dragoncity

I had already  defined & accepted defaultSpec , as per page 6.

Attached is my CustomerSatisfaction.st file :  I assume Pharo will suck 
it back in !




On 21/03/18 17:55, Alistair Grant wrote:

On 21 March 2018 at 03:12, dragoncity  wrote:

Hello, I'm just getting into Pharo, and am trying to
do the example 'tutorial' UI programs in chapter 2 of The Spec UI Framework
book. I have  a special interest in end user GUI interfaces for programs. I
enter the first example code as written and the methods are all accepted
without errors. And yes, I did generate the accessors.

However , on attempting to execute the code at the bottom of page 6 from the
latest Spec UI Framework book,


| ui |

ui := CustomerSatisfaction newopenWithSpec.

ui close.



this error message appears, no UI image appears of course.

"SubclassResponsibility:CustomerSatisfaction class had the subclass
responsibility to implement #defaultSpec"

==

Not only don't I understand the message, but it implies I have to write
something called #defaultSpec !, which is not mentioned in the tutorial.

CustomerSatisfaction is a subclass of ComposableModel
(ComposablePresenter in Pharo 7).  If you have a look at the
implementation of #defaultSpec in ComposableModel or
ComposablePresenter (depending on which version of Pharo you are
using) it says that it is up to subclasses to implement the method
(#subclassResponsibility).  Since  you haven't defined it (yet), the
call to #defaultSpec uses the inherited definition from
ComposableModel, which raises the error you are seeing.

CustomerSatisfaction class>>defaultSpec is on page 6 of my version of
the booklet, dated Feb 6, 2107.


Cheers,
Alistair




--
Cheers,
Brett

'From Pharo6.0 of 13 May 2016 [Latest update: #60513] on 21 March 2018 at 
6:28:13.790017 pm'!
ComposableModel subclass: #CustomerSatisfaction
instanceVariableNames: 'buttonHappy buttonNeutral buttonBad screen'
classVariableNames: ''
poolDictionaries: ''
category: 'Spec-BuildUIWithSpec'!

!CustomerSatisfaction methodsFor: 'initialization' stamp: 'BrettHallett 
3/19/2018 15:40'!
title
^ 'Customer Satisfaction Survey'.
! !

!CustomerSatisfaction methodsFor: 'initialization' stamp: 'BrettHallett 
3/21/2018 18:26'!
defaultSpec
^ SpecLayout composed
newRow: [ :row |
row add: #buttonHappy; add: #buttonNeutral; add: #buttonBad  ]
origin: 0 @ 0 corner: 1 @ 0.7;
newRow: [ :row | row add: #screen ]
origin: 0 @ 0.7 corner: 1 @ 1;
yourself 
! !

!CustomerSatisfaction methodsFor: 'initialization' stamp: 'BrettHallett 
3/21/2018 17:18'!
initializePresenter

buttonHappy action: [ screen label: buttonHappy label ].
buttonNeutral action: [ screen label: buttonNeutral label  ].
buttonBad action: [ screen label: buttonBad label  ].! !

!CustomerSatisfaction methodsFor: 'initialization' stamp: 'BrettHallett 
3/19/2018 16:14'!
initializeWidgets
" set up Widgets"
screen := self newLabel.
buttonHappy := self newButton.
buttonNeutral := self newButton.
buttonBad := self newButton.

" widget config "
screen label: 'Please give us your feedback.'.
buttonHappy
label: 'Happy';
icon: ( self iconNamed: #thumbsUp).
buttonNeutral
label: 'Neutral';
icon: ( self iconNamed: #user).
buttonBad
label: 'Bad';
icon: ( self iconNamed: #thumbsDown).

" specification of order of focus " 

self focusOrder 
 add: buttonHappy;
 add: buttonNeutral;
 add: buttonBad

! !

!CustomerSatisfaction methodsFor: 'initialization' stamp: 'BrettHallett 
3/19/2018 15:40'!
extent
 ^ 400@100
! !


!CustomerSatisfaction methodsFor: 'accessing' stamp: 'BrettHallett 3/19/2018 
16:04'!
buttonBad
^ buttonBad! !

!CustomerSatisfaction methodsFor: 'accessing' stamp: 'BrettHallett 3/19/2018 
16:04'!
buttonNeutral
^ buttonNeutral! !

!CustomerSatisfaction methodsFor: 'accessing' stamp: 'BrettHallett 3/19/2018 
16:04'!
buttonHappy: anObject
buttonHappy := anObject! !

!CustomerSatisfaction methodsFor: 'accessing' stamp: 'BrettHallett 3/19/2018 
16:04'!
screen
^ screen! !

!CustomerSatisfaction methodsFor: 'accessing' stamp: 'BrettHallett 3/19/2018 
16:04'!
screen: anObject
screen := anObject! !

!CustomerSatisfaction methodsFor: 'accessing' stamp: 'BrettHallett 3/19/2018 
16:04'!
buttonNeutral: anObject
buttonNeutral := anObject! !

!CustomerSatisfaction methodsFor: 'accessing' stamp: 'BrettHallett 3/19/2018 
16:04'!
buttonBad: anObject
buttonBad := anObject! !

!CustomerSatisfaction methodsFor: 'accessing' stamp: 'BrettHallett 3/19/2018 
16:04'!

Re: [Pharo-users] Unable to execute example code from "The Spec UI Framework" Book

2018-03-21 Thread Yuriy Babah
at the end of the fifth page
"
The widgets have now been defined and configured, but their placement in
the UI has not yet been specified. This is the role of the class side method
defaultSpec .
"

CustomerSatisfaction class >> defaultSpec
^ SpecLayout composed
newRow: [ :row |
row add: #buttonHappy; add: #buttonNeutral; add: #buttonBad ]
origin: 0 @ 0 corner: 1 @ 0.7;
newRow: [ :row | row add: #screen ]
origin: 0 @ 0.7 corner: 1 @ 1;
yourself

2018-03-21 5:12 GMT+03:00 dragoncity :

> Hello, I'm just getting into Pharo, and am trying to
> do the example 'tutorial' UI programs in chapter 2 of The Spec UI
> Framework book. I have  a special interest in end user GUI interfaces for
> programs. I enter the first example code as written and the methods are all
> accepted without errors. And yes, I did generate the accessors.
>
> However , on attempting to execute the code at the bottom of page 6 from
> the latest Spec UI Framework book,
>
>
> | ui |
>
> ui := CustomerSatisfaction newopenWithSpec.
>
> ui close.
>
>
>
> this error message appears, no UI image appears of course.
>
> "SubclassResponsibility:CustomerSatisfaction class had the subclass
> responsibility to implement #defaultSpec"
>
> ==
>
> Not only don't I understand the message, but it implies I have to write
> something called #defaultSpec !, which is not mentioned in the tutorial.
>
>
> Any help appreciated,
>
> Yours,
>
> --
> Cheers,
> Brett
>
>
>


Re: [Pharo-users] Unable to execute example code from "The Spec UI Framework" Book

2018-03-21 Thread Alistair Grant
On 21 March 2018 at 03:12, dragoncity  wrote:
> Hello, I'm just getting into Pharo, and am trying to
> do the example 'tutorial' UI programs in chapter 2 of The Spec UI Framework
> book. I have  a special interest in end user GUI interfaces for programs. I
> enter the first example code as written and the methods are all accepted
> without errors. And yes, I did generate the accessors.
>
> However , on attempting to execute the code at the bottom of page 6 from the
> latest Spec UI Framework book,
>
>
> | ui |
>
> ui := CustomerSatisfaction newopenWithSpec.
>
> ui close.
>
>
>
> this error message appears, no UI image appears of course.
>
> "SubclassResponsibility:CustomerSatisfaction class had the subclass
> responsibility to implement #defaultSpec"
>
> ==
>
> Not only don't I understand the message, but it implies I have to write
> something called #defaultSpec !, which is not mentioned in the tutorial.

CustomerSatisfaction is a subclass of ComposableModel
(ComposablePresenter in Pharo 7).  If you have a look at the
implementation of #defaultSpec in ComposableModel or
ComposablePresenter (depending on which version of Pharo you are
using) it says that it is up to subclasses to implement the method
(#subclassResponsibility).  Since  you haven't defined it (yet), the
call to #defaultSpec uses the inherited definition from
ComposableModel, which raises the error you are seeing.

CustomerSatisfaction class>>defaultSpec is on page 6 of my version of
the booklet, dated Feb 6, 2107.


Cheers,
Alistair