svn: r816
This commit is contained in:
Robby Findler 2005-09-09 20:21:21 +00:00
parent 4f1a60c467
commit 46dfd90701
3 changed files with 88 additions and 87 deletions

View File

@ -47,10 +47,12 @@
x x
#f)) #f))
menus))))) menus)))))
(define/private (insert-windows-menu frame) (define/private (insert-windows-menu frame)
(let ([menu (get-windows-menu frame)]) (let ([menu (get-windows-menu frame)])
(when menu (when menu
(set! windows-menus (cons menu windows-menus))))) (set! windows-menus (cons menu windows-menus)))))
(define/private (remove-windows-menu frame) (define/private (remove-windows-menu frame)
(let ([menu (get-windows-menu frame)]) (let ([menu (get-windows-menu frame)])
@ -149,8 +151,7 @@
get-active-frame set-active-frame insert-frame get-active-frame set-active-frame insert-frame
remove-frame clear on-close-all can-close-all? locate-file get-frames remove-frame clear on-close-all can-close-all? locate-file get-frames
frame-shown/hidden) frame-shown/hidden)
[define get-mdi-parent (define (get-mdi-parent)
(λ ()
(when (and (eq? (system-type) 'windows) (when (and (eq? (system-type) 'windows)
(preferences:get 'framework:windows-mdi) (preferences:get 'framework:windows-mdi)
(not mdi-parent)) (not mdi-parent))
@ -158,38 +159,37 @@
#f #f #f #f #f #f #f #f #f #f
'(mdi-parent))) '(mdi-parent)))
(send mdi-parent show #t)) (send mdi-parent show #t))
mdi-parent)] mdi-parent)
(define (get-frames) (map frame-frame frames)) (define (get-frames) (map frame-frame frames))
[define frame-label-changed (define (frame-label-changed frame)
(λ (frame)
(when (memq frame (map frame-frame frames)) (when (memq frame (map frame-frame frames))
(update-windows-menus)))] (update-windows-menus)))
[define frame-shown/hidden (define (frame-shown/hidden frame)
(λ (frame)
(when (memq frame (map frame-frame frames)) (when (memq frame (map frame-frame frames))
(update-windows-menus)))] (update-windows-menus)))
[define for-each-frame (define (for-each-frame f)
(λ (f)
(for-each (λ (x) (f (frame-frame x))) frames) (for-each (λ (x) (f (frame-frame x))) frames)
(set! todo-to-new-frames (set! todo-to-new-frames
(let ([old todo-to-new-frames]) (let ([old todo-to-new-frames])
(λ (frame) (old frame) (f frame)))))] (λ (frame) (old frame) (f frame)))))
(define (get-active-frame) (define (get-active-frame)
(cond (cond
[active-frame active-frame] [active-frame active-frame]
[(null? frames) #f] [(null? frames) #f]
[else (frame-frame (car frames))])) [else (frame-frame (car frames))]))
(define (set-active-frame f) (define (set-active-frame f)
(when (and active-frame (when (and active-frame
(not (eq? active-frame f))) (not (eq? active-frame f)))
(set! most-recent-window-box (make-weak-box active-frame))) (set! most-recent-window-box (make-weak-box active-frame)))
(set! active-frame f)) (set! active-frame f))
[define insert-frame
(λ (new-frame) (define (insert-frame new-frame)
(unless (memf (λ (fr) (eq? (frame-frame fr) new-frame)) (unless (memf (λ (fr) (eq? (frame-frame fr) new-frame))
frames) frames)
(set! frame-counter (add1 frame-counter)) (set! frame-counter (add1 frame-counter))
@ -199,10 +199,9 @@
(update-close-menu-item-state) (update-close-menu-item-state)
(insert-windows-menu new-frame) (insert-windows-menu new-frame)
(update-windows-menus)) (update-windows-menus))
(todo-to-new-frames new-frame)))] (todo-to-new-frames new-frame)))
[define remove-frame (define (remove-frame f)
(λ (f)
(when (eq? f active-frame) (when (eq? f active-frame)
(set! active-frame #f)) (set! active-frame #f))
(let ([new-frames (let ([new-frames
@ -212,26 +211,26 @@
(set! frames new-frames) (set! frames new-frames)
(update-close-menu-item-state) (update-close-menu-item-state)
(remove-windows-menu f) (remove-windows-menu f)
(update-windows-menus)))] (update-windows-menus)))
[define clear
(λ () (define (clear)
(set! frames null) (set! frames null)
#t)] #t)
[define on-close-all
(λ () (define (on-close-all)
(for-each (λ (f) (for-each (λ (f)
(let ([frame (frame-frame f)]) (let ([frame (frame-frame f)])
(send frame on-close) (send frame on-close)
(send frame show #f))) (send frame show #f)))
frames))] frames))
[define can-close-all?
(λ () (define (can-close-all?)
(andmap (λ (f) (andmap (λ (f)
(let ([frame (frame-frame f)]) (let ([frame (frame-frame f)])
(send frame can-close?))) (send frame can-close?)))
frames))] frames))
[define locate-file
(λ (name) (define (locate-file name)
(let* ([normalized (let* ([normalized
;; allow for the possiblity of filenames that are urls ;; allow for the possiblity of filenames that are urls
(with-handlers ([(λ (x) #t) (with-handlers ([(λ (x) #t)
@ -249,9 +248,9 @@
(let* ([frame (frame-frame (car frames))]) (let* ([frame (frame-frame (car frames))])
(if (test-frame frame) (if (test-frame frame)
frame frame
(loop (cdr frames))))]))))] (loop (cdr frames))))]))))
(super-instantiate ()))) (super-new)))
(define (choose-a-frame parent) (define (choose-a-frame parent)
(letrec-values ([(sorted-frames) (letrec-values ([(sorted-frames)

View File

@ -264,6 +264,7 @@
;; groups ;; groups
(preferences:set-default 'framework:exit-when-no-frames #t boolean?) (preferences:set-default 'framework:exit-when-no-frames #t boolean?)
(preferences:set 'framework:exit-when-no-frames #t)
(exit:insert-can?-callback (exit:insert-can?-callback
(λ () (λ ()

View File

@ -3,7 +3,7 @@
(test (test
'exit-on 'exit-on
(lambda (x) #t) (lambda (x) (equal? x '("first")))
(lambda () (lambda ()
(send-sexp-to-mred (send-sexp-to-mred
'(begin (send (make-object frame:basic% "first") show #t) '(begin (send (make-object frame:basic% "first") show #t)
@ -15,7 +15,8 @@
(send-sexp-to-mred (send-sexp-to-mred
`(test:button-push "Cancel")) `(test:button-push "Cancel"))
(wait-for-frame "first") (wait-for-frame "first")
'passed)) (send-sexp-to-mred
`(map (lambda (x) (send x get-label)) (send (group:get-the-frame-group) get-frames)))))
;; after the first test, we should have one frame that will always ;; after the first test, we should have one frame that will always
;; be in the group. ;; be in the group.