Somehow itâs true. And you could try it :) But while doing Spec I also fixed a lot of bugs in the morphic widgets themselves :) Try with the latest spec, and tell me :P Ben On 07 Nov 2013, at 05:38, Bahman Movaqar <Bahman@BahmanM.com> wrote:
On 11/06/2013 20:35, Benjamin wrote:
Ok :)
These methods only exists in Pharo 3.0 :)
Hmm...I don't understand. Please correct me if I'm wrong but I thought Spec is a UI library, so it doesn't matter if I'm using it in Pharo 2.0 or 3.0 as long as I have the correct version of Spec.
On 06 Nov 2013, at 08:38, Bahman Movaqar <Bahman@BahmanM.com> wrote:
On 11/06/2013 11:07, Benjamin wrote:
In which version of Pharo are you working ?
Pharo2.0 Latest update: #20607
On 06 Nov 2013, at 08:31, Bahman Movaqar <Bahman@BahmanM.com> wrote:
On 11/06/2013 10:56, Benjamin wrote:
On 06 Nov 2013, at 08:21, Bahman Movaqar <Bahman@BahmanM.com <mailto:Bahman@BahmanM.com>> wrote:
On 11/06/2013 10:41, Benjamin wrote:
This is the expected behaviour :)
Oh! A bit unorthodox, specially considering the shortcut (CTRL+S) --I was expecting something like ENTER :-)
There is also acceptOnCr :)
That clearly shows I have to work on my "exploration" skills :-)
But what you can do (and actually what you wanna do) is to accept the text at each keyStroke :)
initializePresenter self instantiateModels: #( textName TextModel labelGreeting LabelModel buttonGreet ButtonModel ). labelGreeting text: ''. buttonGreet label: 'Greet Me!'; disable.
should be turned into:
#initializePresenter textName := self newTextInput. labelGreeting := self newLabel. buttonGreet := self newButton.
Would you please explain the RHS of the statements? I don't understand `self newTextInput`.
Itâs equivalent to self instantiateModels: #(textName TextInputFieldModel). It simply creates a new sub model for you :)
Hmm...Pharo rejects those lines, e.g. with "Unknown select newTextInput". I guess I'm sub-classing the wrong class. Here's my class definition:
<code> ComposableModel subclass: #FirstSpec instanceVariableNames: 'textName labelGreeting buttonGreet' classVariableNames: '' poolDictionaries: '' category: 'Bahman-Spec' </code>
labelGreeting text: ''. buttonGreet label: 'Greet Me!'; disable. textName autoAccept: true.
It's certainly no big deal but I'm just curious; any special reason why `autoAccept` doesn't default to true?
Thatâs actually a good question :) I guess the answer is historical :)
Ancestral remains, huh? :-)
On 06 Nov 2013, at 06:05, Bahman Movaqar <Bahman@BahmanM.com <mailto:Bahman@BahmanM.com>> wrote:
Hi all,
I'm writing a simple graphical version of the legendary "Hello, world". I have a window with a text field, a button and a label. What I'm trying to do is to make the button (which is initially disabled) enabled upon user entering text. However, it seems that the user first must "Accept" the text for the action to be fired.
Here's some snippets of code:
<code> initializePresenter textName whenTextChanged: [ buttonGreet enable ]. buttonGreet action: [ labelGreeting text: 'Hello, ', textName text, '!'. buttonGreet disable ].
initializeWidgets self instantiateModels: #( textName TextModel labelGreeting LabelModel buttonGreet ButtonModel ).
labelGreeting text: ''. buttonGreet label: 'Greet Me!'; disable. </code>
What am I doing wrong?
TIA,
PS: I have tried `whenTextChanged` to no avail --it shows the same behaviour.
-- Bahman Movaqar (http://BahmanM.com)
ERP Evaluation, Implementation & Deployment Consultant PGP Key ID: 0x6AB5BD68 (keyserver2.pgp.com)