original commit: 2da25b7737cc444e551723012d88c3bb4b11cb54
This commit is contained in:
Robby Findler 2001-11-14 22:50:54 +00:00
parent 662acc29e7
commit 5801521c26
2 changed files with 117 additions and 113 deletions

View File

@ -99,8 +99,11 @@
(rename [super-on-save-file on-save-file])
(define/override (on-save-file filename format)
(unless (equal? filename (get-filename))
(handler:add-to-recent filename))
(let* ([temp-b (box #f)]
[filename (get-filename temp-b)])
(unless (unbox temp-b)
(unless (equal? filename (get-filename))
(handler:add-to-recent filename))))
(super-on-save-file filename format))
[define has-focus #f]

View File

@ -681,35 +681,37 @@
"result of get-canvas% method must match ~e interface; got: ~e"
<%> %))
(make-object % (get-area-container))))]
[define get-editor% (lambda () (error 'editor-frame% "no editor% class specified"))]
[define get-editor<%> (lambda () editor<%>)]
[define make-editor (lambda ()
(let ([% (get-editor%)]
[<%> (get-editor<%>)])
(unless (implementation? % <%>)
(error 'frame:editor%
"result of get-editor% method must match ~e interface; got: ~e"
<%> %))
(make-object %)))]
(define (get-editor%)
(error 'editor-frame% "abstract method: no editor% class specified"))
(define (get-editor<%>)
editor<%>)
(define (make-editor)
(let ([% (get-editor%)]
[<%> (get-editor<%>)])
(unless (implementation? % <%>)
(error 'frame:editor%
"result of get-editor% method must match ~e interface; got: ~e"
<%> %))
(make-object %)))
(public save-as)
[define save-as
(define save-as
(opt-lambda ([format 'same])
(let* ([name (send (get-editor) get-filename)]
[file (parameterize ([finder:dialog-parent-parameter this])
(finder:put-file name))])
(when file
(send (get-editor) save-file file format))))]
(send (get-editor) save-file file format)))))
(inherit get-checkable-menu-item% get-menu-item%)
(override file-menu:save-callback
file-menu:create-save? file-menu:save-as-callback file-menu:create-save-as?
file-menu:print-callback file-menu:create-print?)
[define/override (file-menu:revert-on-demand item)
(send item enable (not (send (get-editor) is-locked?)))]
(define/override (file-menu:revert-on-demand item)
(send item enable (not (send (get-editor) is-locked?))))
[define/override file-menu:revert-callback
(define/override file-menu:revert-callback
(lambda (item control)
(let* ([edit (get-editor)]
[b (box #f)]
@ -737,33 +739,33 @@
(string-constant error-reverting)
(format (string-constant could-not-read) filename)
this)))))))
#t)]
[define/override file-menu:create-revert? (lambda () #t)]
[define file-menu:save-callback (lambda (item control)
#t))
(define/override file-menu:create-revert? (lambda () #t))
(define file-menu:save-callback (lambda (item control)
(send (get-editor) save-file)
#t)]
#t))
[define file-menu:create-save? (lambda () #t)]
[define file-menu:save-as-callback (lambda (item control) (save-as) #t)]
[define file-menu:create-save-as? (lambda () #t)]
[define file-menu:print-callback (lambda (item control)
(define file-menu:create-save? (lambda () #t))
(define file-menu:save-as-callback (lambda (item control) (save-as) #t))
(define file-menu:create-save-as? (lambda () #t))
(define file-menu:print-callback (lambda (item control)
(send (get-editor) print
#t
#t
(preferences:get 'framework:print-output-mode))
#t)]
[define file-menu:create-print? (lambda () #t)]
#t))
(define file-menu:create-print? (lambda () #t))
[define edit-menu:do (lambda (const)
(define edit-menu:do (lambda (const)
(lambda (menu evt)
(let ([edit (get-edit-target-object)])
(when (and edit
(is-a? edit editor<%>))
(send edit do-edit-operation const)))
#t))]
#t)))
(public add-edit-menu-snip-items)
[define add-edit-menu-snip-items
(define add-edit-menu-snip-items
(lambda (edit-menu)
(let ([c% (get-menu-item%)]
[on-demand
@ -776,11 +778,11 @@
(make-object c% (string-constant insert-pb-box-item)
edit-menu (edit-menu:do 'insert-pasteboard-box) #f #f on-demand)
(make-object c% (string-constant insert-image-item)
edit-menu (edit-menu:do 'insert-image) #f #f on-demand)))]
edit-menu (edit-menu:do 'insert-image) #f #f on-demand))))
(override edit-menu:between-select-all-and-find)
[define edit-menu:between-select-all-and-find
(define edit-menu:between-select-all-and-find
(lambda (edit-menu)
(make-object separator-menu-item% edit-menu)
@ -806,36 +808,36 @@
(make-object c% (string-constant wrap-text-item)
edit-menu callback #f #f on-demand))
(make-object separator-menu-item% edit-menu))]
(make-object separator-menu-item% edit-menu)))
(override help-menu:about-callback help-menu:about-string help-menu:create-about?)
[define help-menu:about-callback
(define help-menu:about-callback
(lambda (menu evt)
(message-box (application:current-app-name)
(format (string-constant welcome-to-something)
(application:current-app-name))))]
[define help-menu:about-string (lambda () (application:current-app-name))]
[define help-menu:create-about? (lambda () #t)]
(application:current-app-name)))))
(define help-menu:about-string (lambda () (application:current-app-name)))
(define help-menu:create-about? (lambda () #t))
(super-instantiate
()
(label (get-entire-label)))
[define canvas #f]
[define editor #f]
(define canvas #f)
(define editor #f)
(public get-canvas get-editor)
[define get-canvas
(define get-canvas
(lambda ()
(unless canvas
(set! canvas (make-canvas))
(send canvas set-editor (get-editor)))
canvas)]
[define get-editor
canvas))
(define get-editor
(lambda ()
(unless editor
(set! editor (make-editor))
(send (get-canvas) set-editor editor))
editor)]
editor))
(do-label)
(cond
@ -1372,42 +1374,42 @@
(rename [super-make-root-area-container make-root-area-container]
[super-on-activate on-activate]
[super-on-close on-close])
[define super-root 'unitiaialized-super-root]
(define super-root 'unitiaialized-super-root)
(override edit-menu:find-callback edit-menu:create-find?
edit-menu:find-again-callback edit-menu:create-find-again?
edit-menu:replace-and-find-again-callback edit-menu:replace-and-find-again-on-demand
edit-menu:create-replace-and-find-again?)
[define edit-menu:find-callback (lambda (menu evt) (move-to-search-or-search) #t)]
[define edit-menu:create-find? (lambda () #t)]
[define edit-menu:find-again-callback (lambda (menu evt) (search-again) #t)]
[define edit-menu:create-find-again? (lambda () #t)]
[define edit-menu:replace-and-find-again-callback (lambda (menu evt) (replace&search) #t)]
[define edit-menu:replace-and-find-again-on-demand
(lambda (item) (send item enable (can-replace?)))]
[define edit-menu:create-replace-and-find-again? (lambda () #t)]
(define edit-menu:find-callback (lambda (menu evt) (move-to-search-or-search) #t))
(define edit-menu:create-find? (lambda () #t))
(define edit-menu:find-again-callback (lambda (menu evt) (search-again) #t))
(define edit-menu:create-find-again? (lambda () #t))
(define edit-menu:replace-and-find-again-callback (lambda (menu evt) (replace&search) #t))
(define edit-menu:replace-and-find-again-on-demand
(lambda (item) (send item enable (can-replace?))))
(define edit-menu:create-replace-and-find-again? (lambda () #t))
(override make-root-area-container)
[define make-root-area-container
(define make-root-area-container
(lambda (% parent)
(let* ([s-root (super-make-root-area-container
vertical-panel%
parent)]
[root (make-object % s-root)])
(set! super-root s-root)
root))]
root)))
(override on-activate)
[define on-activate
(define on-activate
(lambda (on?)
(unless hidden?
(if on?
(reset-search-anchor (get-text-to-search))
(clear-search-highlight)))
(super-on-activate on?))]
(super-on-activate on?)))
(public get-text-to-search hide-search unhide-search)
[define get-text-to-search
(define get-text-to-search
(lambda ()
(error 'get-text-to-search "abstract method in searchable-mixin"))]
[define hide-search
(error 'get-text-to-search "abstract method in searchable-mixin")))
(define hide-search
(opt-lambda ([startup? #f])
(send super-root change-children
(lambda (l)
@ -1417,8 +1419,8 @@
(send
(send (get-text-to-search) get-canvas)
focus))
(set! hidden? #t))]
[define unhide-search
(set! hidden? #t)))
(define unhide-search
(lambda ()
(when (and hidden?
(not (preferences:get 'framework:search-using-dialog?)))
@ -1426,7 +1428,7 @@
(show/hide-replace (send (get-text-to-search) is-locked?))
(send search-panel focus)
(send super-root add-child search-panel)
(reset-search-anchor (get-text-to-search))))]
(reset-search-anchor (get-text-to-search)))))
(define (show/hide-replace hide?)
(cond
@ -1444,14 +1446,14 @@
(lambda (l) (list replace&search-button
replace-all-button)))]))
[define remove-callback
(define remove-callback
(preferences:add-callback
'framework:search-using-dialog?
(lambda (p v)
(when p
(hide-search))))]
(hide-search)))))
(override on-close)
[define on-close
(define on-close
(lambda ()
(super-on-close)
(remove-callback)
@ -1461,15 +1463,15 @@
(close-canvas find-canvas find-edit)
(close-canvas replace-canvas replace-edit))
(when (eq? this searching-frame)
(set-searching-frame #f)))]
(set-searching-frame #f))))
(public set-search-direction can-replace? replace&search replace-all replace
toggle-search-focus move-to-search-or-search move-to-search-or-reverse-search
search-again)
[define set-search-direction
(define set-search-direction
(lambda (x)
(set-searching-direction x)
(send dir-radio set-selection (if (eq? x 'forward) 0 1)))]
[define can-replace?
(send dir-radio set-selection (if (eq? x 'forward) 0 1))))
(define can-replace?
(lambda ()
(let ([tx (get-text-to-search)])
(and
@ -1479,12 +1481,12 @@
(send tx get-text
(send tx get-start-position)
(send tx get-end-position))
(send find-edit get-text 0 (send find-edit last-position))))))]
[define replace&search
(send find-edit get-text 0 (send find-edit last-position)))))))
(define replace&search
(lambda ()
(when (replace)
(search-again)))]
[define replace-all
(search-again))))
(define replace-all
(lambda ()
(let* ([replacee-edit (get-text-to-search)]
[pos (if (eq? searching-direction 'forward)
@ -1502,8 +1504,8 @@
(when (send find-edit search #t #f #f)
(replace)
(loop))))
(send replacee-edit end-edit-sequence)))]
[define replace
(send replacee-edit end-edit-sequence))))
(define replace
(lambda ()
(let* ([search-text (send find-edit get-text)]
[replacee-edit (get-text-to-search)]
@ -1518,8 +1520,8 @@
replacee-start
(+ replacee-start (string-length new-text)))
#t)
#f)))]
[define toggle-search-focus
#f))))
(define toggle-search-focus
(lambda ()
(set-searching-frame this)
(unhide-search)
@ -1530,8 +1532,8 @@
(send (get-text-to-search) get-canvas)]
[else
find-canvas])
focus))]
[define move-to-search-or-search
focus)))
(define move-to-search-or-search
(lambda ()
(set-searching-frame this)
(unhide-search)
@ -1542,64 +1544,64 @@
(if (or (send find-canvas has-focus?)
(send replace-canvas has-focus?))
(search-again 'forward)
(send find-canvas focus))]))]
[define move-to-search-or-reverse-search
(send find-canvas focus))])))
(define move-to-search-or-reverse-search
(lambda ()
(set-searching-frame this)
(unhide-search)
(if (or (send find-canvas has-focus?)
(send replace-canvas has-focus?))
(search-again 'backward)
(send find-canvas focus)))]
[define search-again
(send find-canvas focus))))
(define search-again
(opt-lambda ([direction searching-direction] [beep? #t])
(set-searching-frame this)
(unhide-search)
(set-search-direction direction)
(send find-edit search #t beep?))]
(send find-edit search #t beep?)))
(super-instantiate ())
[define search-panel (make-object horizontal-panel% super-root '(border))]
(define search-panel (make-object horizontal-panel% super-root '(border)))
[define left-panel (make-object vertical-panel% search-panel)]
[define find-canvas (make-object searchable-canvas% left-panel)]
[define replace-canvas-panel (instantiate vertical-panel% ()
(define left-panel (make-object vertical-panel% search-panel))
(define find-canvas (make-object searchable-canvas% left-panel))
(define replace-canvas-panel (instantiate vertical-panel% ()
(parent left-panel)
(stretchable-width #t)
(stretchable-height #f))]
[define replace-canvas (make-object searchable-canvas% replace-canvas-panel)]
(stretchable-height #f)))
(define replace-canvas (make-object searchable-canvas% replace-canvas-panel))
[define middle-left-panel (make-object vertical-pane% search-panel)]
[define middle-middle-panel (make-object vertical-pane% search-panel)]
[define middle-right-panel (make-object vertical-pane% search-panel)]
(define middle-left-panel (make-object vertical-pane% search-panel))
(define middle-middle-panel (make-object vertical-pane% search-panel))
(define middle-right-panel (make-object vertical-pane% search-panel))
[define search-button (make-object button%
(define search-button (make-object button%
(string-constant find)
middle-left-panel
(lambda args (search-again)))]
(lambda args (search-again))))
[define replace-button-panel
(define replace-button-panel
(instantiate vertical-panel% ()
(parent middle-left-panel)
(stretchable-width #f)
(stretchable-height #f))]
(stretchable-height #f)))
[define replace-button (make-object button% (string-constant replace)
(define replace-button (make-object button% (string-constant replace)
replace-button-panel
(lambda x (replace)))]
(lambda x (replace))))
[define replace&search-button (make-object button%
(define replace&search-button (make-object button%
(string-constant replace&find-again)
middle-middle-panel
(lambda x (replace&search)))]
(lambda x (replace&search))))
[define replace-all-button (make-object button%
(define replace-all-button (make-object button%
(string-constant replace-to-end)
middle-middle-panel
(lambda x (replace-all)))]
(lambda x (replace-all))))
[define dir-radio (make-object radio-box%
(define dir-radio (make-object radio-box%
#f
(list (string-constant forward)
(string-constant backward))
@ -1609,11 +1611,11 @@
'forward
'backward)])
(set-search-direction forward)
(reset-search-anchor (get-text-to-search)))))]
[define close-button (make-object button% (string-constant hide)
(reset-search-anchor (get-text-to-search))))))
(define close-button (make-object button% (string-constant hide)
middle-right-panel
(lambda args (hide-search)))]
[define hidden? #f]
(lambda args (hide-search))))
(define hidden? #f)
(let ([align
(lambda (x y)
@ -1640,12 +1642,11 @@
(mixin (text<%> searchable<%>) (searchable-text<%>)
(inherit get-editor)
(override get-text-to-search)
[define get-text-to-search
(lambda ()
(get-editor))]
(define (get-text-to-search)
(get-editor))
(override get-editor<%> get-editor%)
[define get-editor<%> (lambda () text:searching<%>)]
[define get-editor% (lambda () text:searching%)]
(define (get-editor<%>) text:searching<%>)
(define (get-editor%) text:searching%)
(super-instantiate ())))
; to see printouts in memory debugging better.