wired in the first line text

svn: r11427
This commit is contained in:
Robby Findler 2008-08-25 19:46:41 +00:00
parent 3e0f3c47e1
commit 354ebabe0c
2 changed files with 38 additions and 16 deletions

View File

@ -11,6 +11,8 @@
(interface () (interface ()
highlight-first-line)) highlight-first-line))
(define dark-color (make-object color% 50 0 50))
(define first-line-text-mixin (define first-line-text-mixin
(mixin ((class->interface text%)) (first-line-text-mixin<%>) (mixin ((class->interface text%)) (first-line-text-mixin<%>)
(inherit get-text paragraph-end-position get-admin invalidate-bitmap-cache position-location (inherit get-text paragraph-end-position get-admin invalidate-bitmap-cache position-location
@ -35,10 +37,12 @@
(define/augment (after-insert start len) (define/augment (after-insert start len)
(when (<= start end-of-first-line) (when (<= start end-of-first-line)
(update-first-line))) (update-first-line))
(inner (void) after-insert start len))
(define/augment (after-delete start len) (define/augment (after-delete start len)
(when (<= start end-of-first-line) (when (<= start end-of-first-line)
(update-first-line))) (update-first-line))
(inner (void) after-delete start len))
(define/private (fetch-first-line-height) (define/private (fetch-first-line-height)
(let-values ([(_1 h _2 _3) (send (get-dc) get-text-extent first-line (get-font))]) (let-values ([(_1 h _2 _3) (send (get-dc) get-text-extent first-line (get-font))])
@ -65,7 +69,9 @@
(unless (equal? fancy-first-line? on?) (unless (equal? fancy-first-line? on?)
(set! fancy-first-line? on?) (set! fancy-first-line? on?)
(invalidate-bitmap-cache) (invalidate-bitmap-cache)
(send (send this get-canvas) refresh))) (let ([canvas (send this get-canvas)])
(when canvas
(send canvas refresh)))))
(define/override (on-event event) (define/override (on-event event)
(cond (cond
@ -112,16 +118,19 @@
(send dc draw-line line-left line-height line-right line-height) (send dc draw-line line-left line-height line-right line-height)
(when (eq? (send dc get-smoothing) 'aligned) (when (eq? (send dc get-smoothing) 'aligned)
(send dc set-pen "black" 1 'solid) (let ([start 3/10]
(let loop ([i 10]) [end 0]
[steps 10])
(send dc set-pen dark-color 1 'solid)
(let loop ([i steps])
(unless (zero? i) (unless (zero? i)
(send dc set-alpha (+ 2/5 (* i -1/25))) (send dc set-alpha (+ start (* (- end start) (/ i steps))))
(send dc draw-line (send dc draw-line
line-left line-left
(+ line-height i) (+ line-height i)
line-right line-right
(+ line-height i)) (+ line-height i))
(loop (- i 1)))))) (loop (- i 1)))))))
(send dc set-alpha 1) (send dc set-alpha 1)
(send dc set-pen "gray" 1 'transparent) (send dc set-pen "gray" 1 'transparent)
@ -178,7 +187,21 @@
#; #;
(begin (begin
(define f (new frame% [label ""] [width 200] [height 200])) (define f (new frame% [label ""] [width 200] [height 200]))
(define t (new (editor:standard-style-list-mixin (first-line-text-mixin text%)))) ;(define t (new (editor:standard-style-list-mixin (first-line-text-mixin text%))))
(define t
(new
(scheme:text-mixin
(text:autocomplete-mixin
(color:text-mixin
(mode:host-text-mixin
(values ; text:delegate-mixin
(text:foreground-color-mixin
(first-line-text-mixin
text:info%)))))))))
(require scheme/runtime-path)
(define-runtime-path here ".")
(send t load-file (build-path (build-path here 'up 'up "framework" "private" "text.ss")))
#;
(send t insert (apply string-append (map (λ (x) (build-string 100 (λ (i) (if (= i 99) #\newline x)))) (send t insert (apply string-append (map (λ (x) (build-string 100 (λ (i) (if (= i 99) #\newline x))))
(string->list "abcdefghijklnopqrstuvwxyz")))) (string->list "abcdefghijklnopqrstuvwxyz"))))
(define c (new editor-canvas% [parent f] [editor t])) (define c (new editor-canvas% [parent f] [editor t]))

View File

@ -1,4 +1,4 @@
#lang scheme/base
#| #|
closing: closing:
@ -11,7 +11,6 @@ module browser threading seems wrong.
|# |#
(module unit scheme/base
(require scheme/contract (require scheme/contract
scheme/unit scheme/unit
scheme/class scheme/class
@ -429,7 +428,7 @@ module browser threading seems wrong.
(define (make-definitions-text%) (define (make-definitions-text%)
(let ([definitions-super% (let ([definitions-super%
((get-program-editor-mixin) ((get-program-editor-mixin)
(values #;first-line-text-mixin (first-line-text-mixin
(drscheme:module-language:module-language-put-file-mixin (drscheme:module-language:module-language-put-file-mixin
(scheme:text-mixin (scheme:text-mixin
(color:text-mixin (color:text-mixin
@ -441,7 +440,7 @@ module browser threading seems wrong.
(λ (x) x) (λ (x) x)
text:info%))))))))))]) text:info%))))))))))])
(class* definitions-super% (definitions-text<%>) (class* definitions-super% (definitions-text<%>)
(inherit get-top-level-window is-locked? lock while-unlocked #;highlight-first-line) (inherit get-top-level-window is-locked? lock while-unlocked highlight-first-line)
(define interactions-text #f) (define interactions-text #f)
(define/public (set-interactions-text it) (define/public (set-interactions-text it)
@ -603,12 +602,10 @@ module browser threading seems wrong.
(is-a? f -frame<%>)) (is-a? f -frame<%>))
(send f language-changed))) (send f language-changed)))
#;
(highlight-first-line (highlight-first-line
(is-a? (drscheme:language-configuration:language-settings-language _next-settings) (is-a? (drscheme:language-configuration:language-settings-language _next-settings)
drscheme:module-language:module-language<%>)) drscheme:module-language:module-language<%>))
(let ([lang (drscheme:language-configuration:language-settings-language next-settings)] (let ([lang (drscheme:language-configuration:language-settings-language next-settings)]
[sets (drscheme:language-configuration:language-settings-settings next-settings)]) [sets (drscheme:language-configuration:language-settings-settings next-settings)])
(preferences:set (preferences:set
@ -786,7 +783,9 @@ module browser threading seems wrong.
;; insert the default-text ;; insert the default-text
(queue-callback (lambda () (insert-auto-text))) (queue-callback (lambda () (insert-auto-text)))
(highlight-first-line
(is-a? (drscheme:language-configuration:language-settings-language next-settings)
drscheme:module-language:module-language<%>))
(inherit set-max-undo-history) (inherit set-max-undo-history)
(set-max-undo-history 'forever)))) (set-max-undo-history 'forever))))
@ -3957,4 +3956,4 @@ module browser threading seems wrong.
(send frame update-toolbar-visibility) (send frame update-toolbar-visibility)
(send frame show #t) (send frame show #t)
(set! first-frame? #f) (set! first-frame? #f)
frame)))) frame)))