gui/gui-lib/embedded-gui/private/grey-editor.rkt
2014-12-02 02:33:07 -05:00

55 lines
2.2 KiB
Racket

(module grey-editor mzscheme
(provide grey-editor-snip-mixin grey-editor-mixin)
(require
mred
mzlib/class
framework)
(define *disable-color* (make-object color% 235 235 255))
(define grey-editor-snip-mixin
(mixin ((class->interface editor-snip%)) ()
(inherit get-admin get-inset)
(define/override (draw dc x y left top right bottom dx dy draw-caret)
(let ([old-pen (send dc get-pen)]
[old-brush (send dc get-brush)]
[admin (get-admin)]
[left-inset (box 0)]
[top-inset (box 0)]
[right-inset (box 0)]
[bottom-inset (box 0)]
[xb (box 0)]
[yb (box 0)]
[wb (box 0)]
[hb (box 0)])
(when admin
(send admin get-view xb yb wb hb this)
(get-inset left-inset top-inset right-inset bottom-inset)
(send dc set-pen (send the-pen-list find-or-create-pen *disable-color* 1 'solid))
(send dc set-brush (send the-brush-list find-or-create-brush *disable-color* 'solid))
(send dc draw-rectangle
(+ x (unbox xb) (unbox left-inset))
(+ y (unbox yb) (unbox top-inset))
(max 0 (- (unbox wb) (+ (unbox left-inset) (unbox right-inset))))
(max 0 (- (unbox hb) (+ (unbox top-inset) (unbox bottom-inset)))))
(send dc set-pen old-pen)
(send dc set-brush old-brush)))
(super draw dc x y left top right bottom dx dy draw-caret))
(super-new)))
(define grey-editor-mixin
(mixin (editor<%>) ()
(define/override (on-paint before? dc left top right bottom dx dy draw-caret)
(when before?
(let ([old-pen (send dc get-pen)]
[old-brush (send dc get-brush)])
(send dc set-pen (send the-pen-list find-or-create-pen *disable-color* 1 'solid))
(send dc set-brush (send the-brush-list find-or-create-brush *disable-color* 'solid))
(send dc draw-rectangle (+ left dx) (+ top dy) (+ right dx) (+ bottom dy))
(send dc set-pen old-pen)
(send dc set-brush old-brush)))
(super on-paint before? dc left top right bottom dx dy draw-caret))
(super-new))))