,
svn: r816
This commit is contained in:
parent
4f1a60c467
commit
46dfd90701
|
@ -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)
|
||||||
|
|
|
@ -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
|
||||||
(λ ()
|
(λ ()
|
||||||
|
|
|
@ -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.
|
||||||
|
|
Loading…
Reference in New Issue
Block a user