55 lines
2.2 KiB
Racket
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))))
|