[plt-scheme] Using FrTime

From: Jon Rafkind (workmin at ccs.neu.edu)
Date: Sun Oct 1 17:23:14 EDT 2006

I got a little farther but the slider in the example doesn't update the
gauge.

(require (lib "class.ss"))
(require (lib "fred.ss" "frtime/demos/gui"))

(define frame (new ft-frame% (label "Timer") (width 200) (height 80)
(shown #t)))
(define slider (new ft-slider% (parent frame) (label "Duration")
(min-value 5) (max-value 60)))
(define button (new ft-button% (parent frame) (label "Reset")))
(define duration (send slider get-value))
(define last-click-time (hold (map-e (lambda (_) (value-now seconds))
                                     (send button get-value-e))
                                     (value-now seconds)))

(define elapsed (min duration (- seconds last-click-time)))
(define gauge (new ft-gauge% (label "Elapsed Time") (range duration)
                   (stretchable-width #t)
                   (parent frame) (value elapsed)))
(define message (new ft-message% (label (format "~a s" elapsed))
                     (parent frame) (min-width 50)))

Also I updated (send button get-clicks) to be (send button get-value-e).
There doesn't seem to be any significant difference between 'duration'
than 'elapsed' yet the label in the 'message' is updated every second
but the gauge does not update when I move the slider around.

Jon Rafkind wrote:
> Oh you are right, I copied the line wrong. I changed it to this
>
> (define frame (new ft-frame% (label "Timer") (width 200) (height 80)
> (shown #t)))
>
> And it works. Thanks.
>
> Gregory Cooper wrote:
>   
>> It should be "label", not "label%", as for ordinary MrEd widgets (if
>> the paper says "label%", it's a typo).  And it needs to be "shown"
>> instead of "visible".  (Sorry for the discrepancy.)
>>
>> On 10/1/06, Jon Rafkind <workmin at ccs.neu.edu> wrote:
>>     
>>> If I require class.ss and fred.ss I get this error
>>>
>>> instantiate: unused initialization arguments: (label% "Timer") (visible
>>> #t) for instantiated class: .../aux-mixin-macros.ss:19:16
>>>
>>> Where my only line of code( other than the require's ) is
>>>
>>> (define frame (new ft-frame% (label% "Timer") (width 200) (height 80)
>>> (visible #t)))
>>>
>>> Gregory Cooper wrote:
>>>       
>>>> Hi Jon,
>>>>
>>>> As you've noticed, class.ss and fred.ss have to be explicitly required
>>>> before you can use the widget set.  However, once you've done so, they
>>>> should all work.  What errors do you get?  Do they happen on
>>>> "require", or when attempting to evaluate something?
>>>>
>>>> Greg
>>>>
>>>> On 10/1/06, Jon Rafkind <workmin at ccs.neu.edu> wrote:
>>>>         
>>>>> Im reading "Crossing State Lines: Adapting Object-Oriented
>>>>>           
>>> Frameworks to
>>>       
>>>>> Functional Reactive Languages" by Ignatoff, Cooper, and Krishnamurthi
>>>>> and would like to try out the first example but can't get it
>>>>>           
>>> working in
>>>       
>>>>> drscheme 352. I chose the FrTime language and typed this line into
>>>>>           
>>> the
>>>       
>>>>> definitions windows:
>>>>>
>>>>>    (define frame (new ft-frame% (label% "Timer") (width 200)
>>>>>           
>>> (height 80)
>>>       
>>>>> (visible #t)))
>>>>>
>>>>> Verbatim from the paper( except the paper used 'true' instead of
>>>>>           
>>> #t ).
>>>       
>>>>> This led to the error:
>>>>>    reference to undefined identifier: new
>>>>>
>>>>> So I did
>>>>>    (require (lib "class.ss"))
>>>>> But then got a different error:
>>>>>
>>>>>    reference to undefined identifier: ft-frame%
>>>>>
>>>>> Grepping through collects/frtime I found ft-frame% defined in
>>>>> frtime/demos/gui/fred.ss.
>>>>>
>>>>>   ~/tmp/src/drscheme-352/collects/frtime $ grep -r "ft-frame" *
>>>>>   demos/gui/demo/bindec.ss:(current-widget-parent (new ft-frame%
>>>>>           
>>> (label
>>>       
>>>>> "Binary<-->Decimal")))
>>>>>   demos/gui/demo/timer.ss:(current-widget-parent (new ft-frame%
>>>>>           
>>> (width
>>>       
>>>>> 400) (stretchable-width #t)))
>>>>>   demos/gui/fred.ss:  (define ft-frame%
>>>>>   demos/gui/simple.ss:          (set! fr (new ft-frame%)))
>>>>>
>>>>> If I require 'fred.ss' I get a bunch more errors which probably
>>>>>           
>>> aren't
>>>       
>>>>> worth going into. Am I missing something?
>>>>> _________________________________________________
>>>>>   For list-related administrative tasks:
>>>>>   http://list.cs.brown.edu/mailman/listinfo/plt-scheme
>>>>>
>>>>>           
>>>> _________________________________________________
>>>>  For list-related administrative tasks:
>>>>  http://list.cs.brown.edu/mailman/listinfo/plt-scheme
>>>>
>>>>
>>>>         
>>     
> _________________________________________________
>   For list-related administrative tasks:
>   http://list.cs.brown.edu/mailman/listinfo/plt-scheme
>
>
>   


Posted on the users mailing list.