[racket] Creating a useful snip
Updating the docs is good regardless, I agree.
Robby
On Wed, Apr 6, 2011 at 11:42 AM, Jay McCarthy <jay.mccarthy at gmail.com> wrote:
> It would've help me find the problem, but I already knew to look at
> the doc page for what to override, so if that is updated, I don't
> think I could be blamed.
>
> Jay
>
> 2011/4/5 Robby Findler <robby at eecs.northwestern.edu>:
>> Does it make sense to have snip%'s copy method signal an error instead
>> of returning a (useless) snip%? or maybe it could check and see if
>> this is a subclass and signal an error in that case?
>>
>> Robby
>>
>> On Tuesday, April 5, 2011, Matthias Felleisen <matthias at ccs.neu.edu> wrote:
>>>
>>> Please!
>>>
>>> On Apr 5, 2011, at 3:06 PM, Jay McCarthy wrote:
>>>
>>>> Should I update the docs to mention that as one that must be overridden?
>>>>
>>>> Jay
>>>>
>>>> 2011/4/5 Robby Findler <robby at eecs.northwestern.edu>:
>>>>> copy.
>>>>>
>>>>> Robby
>>>>>
>>>>> On Tue, Apr 5, 2011 at 1:34 PM, Jay McCarthy <jay.mccarthy at gmail.com> wrote:
>>>>>> I'm trying to create a useful snip that displays a different sub-snip
>>>>>> every second. I think I've overridden every method required to get a
>>>>>> "useful" snip, but nothing gets display in DrRacket and the functions
>>>>>> aren't called ever. Are there other methods that need to be
>>>>>> overridden?
>>>>>>
>>>>>> The code is below...
>>>>>>
>>>>>> Jay
>>>>>>
>>>>>> #lang racket/base
>>>>>> (require (for-syntax racket/base)
>>>>>> racket/class
>>>>>> racket/function
>>>>>> racket/runtime-path
>>>>>> racket/snip)
>>>>>>
>>>>>> (define reactive-snip%
>>>>>> (class* snip% ()
>>>>>> (init-field sub-snips)
>>>>>>
>>>>>> (printf "Snips: ~a\n" sub-snips)
>>>>>>
>>>>>> (define (the-snip)
>>>>>> (list-ref sub-snips
>>>>>> (modulo (current-seconds) (length sub-snips))))
>>>>>>
>>>>>> (define-syntax-rule (delegate id)
>>>>>> (define/override (id . a)
>>>>>> (define some-snip (the-snip))
>>>>>> (printf "Delegating (~a ~a) to ~a\n"
>>>>>> 'id a
>>>>>> some-snip)
>>>>>> (send/apply some-snip id a)))
>>>>>>
>>>>>> (delegate get-extent)
>>>>>> (delegate draw)
>>>>>> (delegate get-text)
>>>>>> ; set-unmodified or modified
>>>>>>
>>>>>> (super-new)))
>>>>>>
>>>>>> (define-runtime-path img1 '(lib "PLT-206-larval.png" "icons"))
>>>>>> (define-runtime-path img2 '(lib "PLT-206-mars.jpg" "icons"))
>>>>>>
>>>>>> (define sub-snips
>>>>>> (map (curry make-object image-snip%)
>>>>>> (list img1 img2)))
>>>>>>
>>>>>> (define x
>>>>>> (make-object
>>>>>> reactive-snip%
>>>>>> sub-snips))
>>>>>>
>>>>>> sub-snips
>>>>>>
>>>>>> x
>>>>>>
>>>>>> --
>>>>>> Jay McCarthy <jay at cs.byu.edu>
>>>>>> Assistant Professor / Brigham Young University
>>>>>> http://faculty.cs.byu.edu/~jay
>>>>>>
>>>>>> "The glory of God is Intelligence" - D&C 93
>>>>>> _________________________________________________
>>>>>> For list-related administrative tasks:
>>>>>> http://lists.racket-lang.org/listinfo/users
>>>>>>
>>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> Jay McCarthy <jay at cs.byu.edu>
>>>> Assistant Professor / Brigham Young University
>>>> http://faculty.cs.byu.edu/~jay
>>>>
>>>> "The glory of God is Intelligence" - D&C 93
>>>>
>>>> _________________________________________________
>>>> For list-related administrative tasks:
>>>> http://lists.racket-lang.org/listinfo/users
>>>
>>>
>>
>
>
>
> --
> Jay McCarthy <jay at cs.byu.edu>
> Assistant Professor / Brigham Young University
> http://faculty.cs.byu.edu/~jay
>
> "The glory of God is Intelligence" - D&C 93
>