adjust the big definitions / interactions labels so they

are sensitive to the #lang line and then enable them
for the teaching languages
This commit is contained in:
Robby Findler 2012-07-29 09:42:56 -05:00
parent 6e2fb2ac5e
commit 9815822255
6 changed files with 55 additions and 20 deletions

View File

@ -97,9 +97,10 @@
(module-language-online-expand-text-mixin
module-language-online-expand-frame-mixin
module-language-online-expand-tab-mixin
module-language-interactions-text-mixin
module-language-definitions-text-mixin
initialize-prefs-panel))
module-language-big-defs/ints-interactions-text-mixin
module-language-big-defs/ints-definitions-text-mixin
initialize-prefs-panel
big-defs/ints-label<%>))
(define-signature drracket:module-language-tools-cm^
(frame-mixin

View File

@ -77,7 +77,7 @@
(make-extender get-base-unit-frame% 'drracket:unit:frame))
(define (get-base-interactions-text%)
(drracket:module-language:module-language-interactions-text-mixin
(drracket:module-language:module-language-big-defs/ints-interactions-text-mixin
(drracket:debug:test-coverage-interactions-text-mixin
drracket:rep:text%)))
@ -85,9 +85,9 @@
(make-extender get-base-interactions-text% 'interactions-text%))
(define (get-base-definitions-text%)
(drracket:module-language:module-language-definitions-text-mixin
(drracket:module-language:module-language-online-expand-text-mixin
(drracket:module-language-tools:definitions-text-mixin
(drracket:module-language:module-language-online-expand-text-mixin
(drracket:module-language-tools:definitions-text-mixin
(drracket:module-language:module-language-big-defs/ints-definitions-text-mixin
(drracket:debug:test-coverage-definitions-text-mixin
(drracket:debug:profile-definitions-text-mixin
(drracket:unit:get-definitions-text%)))))))

View File

@ -11,9 +11,16 @@
insert-auto-text)
;; from module-language-tools.rkt
(define-local-member-name when-initialized #;move-to-new-language get-in-module-language?)
(define-local-member-name
when-initialized
;move-to-new-language
get-in-module-language?)
;; for keybindings (otherwise private)
(define-local-member-name
jump-to-previous-error-loc
jump-to-next-error-loc)
;; defined in module-language.rkt
(define-local-member-name
set-lang-wants-big-defs/ints-labels?)

View File

@ -94,8 +94,14 @@
(send defs move-to-new-language))))))
(define definitions-text-mixin
(mixin (text:basic<%> drracket:unit:definitions-text<%>) (drracket:module-language-tools:definitions-text<%>)
(inherit get-next-settings get-filename)
(mixin (text:basic<%>
drracket:unit:definitions-text<%>
drracket:module-language:big-defs/ints-label<%>)
(drracket:module-language-tools:definitions-text<%>)
(inherit get-next-settings
get-filename
set-lang-wants-big-defs/ints-labels?
get-tab)
(define in-module-language? #f) ;; true when we are in the module language
(define hash-lang-last-location #f) ;; non-false when we know where the hash-lang line ended
(define hash-lang-language #f) ;; non-false is the string that was parsed for the language
@ -195,6 +201,11 @@
'hash-lang-racket
(get-lang-name pos))
'drracket/private/module-language-tools))
(define lang-wants-big-defs/ints-labels? (and info-proc (info-proc 'drracket:show-big-defs/ints-labels #f)))
(set-lang-wants-big-defs/ints-labels? lang-wants-big-defs/ints-labels?)
(send (send (get-tab) get-ints) set-lang-wants-big-defs/ints-labels? lang-wants-big-defs/ints-labels?)
(when info-result
(register-new-buttons
(ctc-on-info-proc-result (or/c #f (listof (or/c (list/c string?
@ -209,8 +220,7 @@
(ctc-on-info-proc-result (or/c #f (listof symbol?))
(or (info-proc 'drracket:opt-out-toolbar-buttons '())
(info-proc 'drscheme:opt-out-toolbar-buttons '())))))))))
(inherit get-tab)
(define/private (register-new-buttons buttons opt-out-ids)
;; cleaned-up-buttons : (listof (list/c string? (is-a?/c bitmap%) (-> (is-a?/c drracket:unit:frame<%>) any) (or/c real? #f)))

View File

@ -1754,14 +1754,19 @@
(define defs/ints-font
(send the-font-list find-or-create-font 72 'swiss 'normal 'normal))
(define big-defs/ints-label<%>
(interface ()
set-lang-wants-big-defs/ints-labels?))
(define (mk-module-language-text-mixin id)
(mixin (editor<%>) ()
(mixin (editor<%>) (big-defs/ints-label<%>)
(inherit get-admin invalidate-bitmap-cache get-dc
dc-location-to-editor-location)
(define inside? #f)
(define recently-typed? #f)
(define fade-amount 1)
(define lang-wants-big-defs/ints-labels? #f)
(define recently-typed-timer
(new timer%
[notify-callback
@ -1776,12 +1781,22 @@
(set! fade-amount 1)])
(invalidate-bitmap-cache 0 0 'display-end 'display-end)))]))
(define/public (set-lang-wants-big-defs/ints-labels? w?)
(unless (equal? lang-wants-big-defs/ints-labels? w?)
(set! lang-wants-big-defs/ints-labels? w?)
(send recently-typed-timer stop) ;; reset the recently-typed timer so
(set! fade-amount 1) ;; that changing the language makes the
(set! recently-typed? #f) ;; labels appear immediately
(invalidate-bitmap-cache 0 0 'display-end 'display-end)))
(define/override (on-char evt)
(when inside?
(update-recently-typed #t)
(set! fade-amount 0)
(send recently-typed-timer stop)
(send recently-typed-timer start 2000 #t))
(send recently-typed-timer start 10000 #t))
(super on-char evt))
(define/private (update-recently-typed nv)
@ -1825,7 +1840,8 @@
(super on-paint before? dc left top right bottom dx dy draw-caret)
(unless before?
(when (and inside?
(not recently-typed?))
(not recently-typed?)
lang-wants-big-defs/ints-labels?)
(define admin (get-admin))
(when admin
(send admin get-view bx by bw bh)
@ -1855,16 +1871,15 @@
(define (point-in-rectangle? x y l t r b)
(and (<= l x r)
(<= t y b)))
(define bx (box 0))
(define by (box 0))
(define bw (box 0))
(define bh (box 0))
(define module-language-interactions-text-mixin
(define module-language-big-defs/ints-interactions-text-mixin
(mk-module-language-text-mixin (string-constant interactions-window-label)))
(define module-language-definitions-text-mixin
(define module-language-big-defs/ints-definitions-text-mixin
(mk-module-language-text-mixin (string-constant definitions-window-label)))
(define module-language-compile-lock (make-compile-lock))

View File

@ -35,6 +35,8 @@
;; we don't want anything to confuse in the teaching languages.
#f]
[(drracket:show-big-defs/ints-labels) #t]
[else (use-default key default)]))
(define (make-language-info options)