NOTE: Racket GUI framework and editor component
framework based
on racket/gui and provides some
helpful components. This note is about editor
, more precisely
racket:text%.
Whole GUI system based on a class hierarchy, therefore, let's inherit
racket:text%
:
(define editor% (class racket:text% (init) (super-new)))
1. Keyboard Event
Override on-char
can get
key-event%:
(define editor% (class racket:text% (init) (super-new) (define/override (on-char e) (cond [(and (send e get-meta-down) (eq? (send e get-key-code) #\c)) 'copy-selected-text?] [(and (send e get-meta-down) (eq? (send e get-key-code) #\s)) 'save-to-file?] [else (super on-char e)]))))
An interesting thing was send key-event% get-x
or
send key-event% get-y
won't get cursor position, but mouse position.
2. Mouse Event
Override on-local-event
can get
mouse-event%:
(define editor% (class racket:text% (init) (super-new) (define/override (on-local-event e) (cond [(and (send e get-meta-down) (send e button-down?)) 'jump-to-definition?] [else (super on-local-event e)]))))