/ gui-lib / framework / collapsed-snipclass.rkt
collapsed-snipclass.rkt
 1  #lang racket/base
 2  (require racket/gui/base
 3           racket/class
 4           "private/collapsed-snipclass-helpers.rkt")
 5  
 6  (provide snip-class)
 7  
 8  (define simple-sexp-snip%
 9    (class* snip% (readable-snip<%>)
10      (init-field left-bracket right-bracket saved-snips)
11      (define/public (read-special file line col pos)
12        (define text (make-object text%))
13        (for ([s (in-list saved-snips)])
14          (send text insert (send s copy)
15                (send text last-position)
16                (send text last-position)))
17        (datum->syntax
18         #f
19         (read (open-input-text-editor text))
20         (list file line col pos 1)))
21      (define/override (copy)
22        (new simple-sexp-snip% 
23             [left-bracket left-bracket]
24             [right-bracket right-bracket]
25             [saved-snips saved-snips]))
26      (super-new)))
27  
28  (define sexp-snipclass% (make-sexp-snipclass% simple-sexp-snip%))
29  
30  (define snip-class (make-object sexp-snipclass%))
31  (send snip-class set-classname (format "~s" '((lib "collapsed-snipclass.ss" "framework")
32                                                (lib "collapsed-snipclass-wxme.ss" "framework"))))
33  (send snip-class set-version 0)
34  (send (get-the-snip-class-list) add snip-class)