[cells-devel] Celtk: mk-entry: How to set initial value?
Frank Goenninger
frgo at mac.com
Thu Nov 22 13:56:33 UTC 2007
Ok - so here goes the use case:
1. A user is present a list of devices (PowerMasters, "pm") (in
listbox :pm-list).
2. The entry field :call-sign entry is empty.
3. The user selects an item in the listbox. This sets a slot in the
parent model (named :pmutil-gui) with the value of the corresponding
element of the listbox's item-factory.
4. *** Now the entry field - as it does a c?n on that "selected-pm" -
should get the callsign of that selected pm. The user is then able to
change that value to a new one by overtyping it.
5. The user selects a button that reads the value of :callsign-entry
and sends that value to the pm device (this works already).
6. After programming the device with the new callsign the listbox has
to refresh,it is re-reading the items such that no item is selected.
The :callsign-entry should be set to "" (= cleared) because no pm is
selected.
7. Goto step 3
That's it. Does this make it more clear. Meanhwile I am chewing on
your details below ... Thx!!!
Frank
Am 22.11.2007 um 14:42 schrieb Ken Tilton:
> Frank Goenninger wrote:
>> Hi Kenny, hi all (would be interesting to see who actually
>> monitors this ?)
>> I have an entry widget like this:
>> (mk-entry :id :callsign-entry
>> :value (c?n (let ((pm (selected-pm (fm^ :pmutil-gui))))
>> (if pm
>> (callsign pm))))
>> :enabled (c? (pm-selected-p (fm^ :pmutil-gui)))
>> :width 17
>> :tk-justify 'left
>> :relief 'sunken
>> :borderwidth 1
>> :parent-x 424
>> :parent-y 321
>> :background (c_? (required-field-color .parent))
>> :tile? nil)
>> Intention is to be able to set the value initially and afterwards
>> have the rule kick-in and setting the value automagically. Alas,
>> neither the initial setting of the value really works nor does
>> the cell rule fire ...
>
> You do not show nor can I guess what you mean by "set the value
> initially". If you are supplying a value initarg, then none of the
> above applies. If you are making the instance and then in the next
> line of code setf'ing the value that is still not "initially".
> Please elucidate.
>
> Meanwhile, c?n goes the other way: the rule runs once to come up
> with an initial value and then becomes a classic input cell.
>
> As for what you want, it seems a little ugly in that callsign-entry
> is somewhat a slave to pmutil-gui and somewhat not, and this
> confusion is making the cells code hard to write. this may be
> clearer, btw, when we understand better how you meant to supply a
> value "initially".
>
> There is/was something called c-drifter and c-drifter-absolute is
> close to what you want, but a quick look suggests they are broken
> precisely at the initialization point, and any fix makes no sense:
> does this thing depend on its rule or not?
>
> If you really need to do this...
>
> (c? (let ((x <rule>))
> (if .cache-bound-p
> <initial-value>
> x)))
>
> You need the rule to run even if not cache-bound-p (ie, initially)
> to set up the dependencies.
>
> That too is ugly, again I think because of the original confusion
> over whether the one widget really is a slave to the other. I would
> resolve that and not get caught up with clever cells tricks.
>
> kt
-------------- next part --------------
A non-text attachment was scrubbed...
Name: PGP.sig
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <https://mailman.common-lisp.net/pipermail/cells-devel/attachments/20071122/a11672a7/attachment.sig>
More information about the cells-devel
mailing list