...
original commit: c69513305c00f0dbeb6b3d5764b81bc50d8905ea
This commit is contained in:
parent
b59a22dc37
commit
bf89cfa24c
|
@ -30,32 +30,29 @@
|
||||||
|
|
||||||
(define exiting? #f)
|
(define exiting? #f)
|
||||||
|
|
||||||
(define (can-exit?) (andmap (lambda (cb) (cb)) can?-callbacks))
|
(define (can-exit?) (and (andmap (lambda (cb) (cb)) can?-callbacks)
|
||||||
|
(user-oks-exit)))
|
||||||
(define (on-exit) (for-each (lambda (cb) (cb)) on-callbacks))
|
(define (on-exit) (for-each (lambda (cb) (cb)) on-callbacks))
|
||||||
|
|
||||||
|
(define (user-oks-exit)
|
||||||
|
(if (preferences:get 'framework:verify-exit)
|
||||||
|
(let*-values ([(w capw)
|
||||||
|
(if (eq? (system-type) 'windows)
|
||||||
|
(values "exit" "Exit")
|
||||||
|
(values "quit" "Quit"))]
|
||||||
|
[(message)
|
||||||
|
(string-append "Are you sure you want to "
|
||||||
|
w
|
||||||
|
"?")]
|
||||||
|
[(user-says) (gui-utils:get-choice message capw "Cancel")])
|
||||||
|
user-says)
|
||||||
|
#t))
|
||||||
|
|
||||||
(define -exit
|
(define -exit
|
||||||
(opt-lambda ([just-ran-callbacks? #f])
|
(opt-lambda ()
|
||||||
(unless exiting?
|
(unless exiting?
|
||||||
(dynamic-wind
|
(set! exiting? #t)
|
||||||
(lambda () (set! exiting? #t))
|
(when (can-exit?)
|
||||||
(lambda ()
|
(on-exit)
|
||||||
(if (and (can-exit?)
|
(exit))
|
||||||
(let*-values ([(w capw)
|
(set! exiting? #f)))))
|
||||||
(if (eq? (system-type) 'windows)
|
|
||||||
(values "exit" "Exit")
|
|
||||||
(values "quit" "Quit"))]
|
|
||||||
[(message)
|
|
||||||
(string-append "Are you sure you want to "
|
|
||||||
w
|
|
||||||
"?")])
|
|
||||||
(printf "showing dialog~n")
|
|
||||||
(if (preferences:get 'framework:verify-exit)
|
|
||||||
(if (gui-utils:get-choice message capw "Cancel")
|
|
||||||
#f
|
|
||||||
#t)
|
|
||||||
#t)))
|
|
||||||
(begin
|
|
||||||
(on-exit)
|
|
||||||
(printf "~a~n" '(exit)))
|
|
||||||
#f))
|
|
||||||
(lambda () (set! exiting? #f)))))))
|
|
|
@ -59,6 +59,7 @@
|
||||||
(insert-on-callback
|
(insert-on-callback
|
||||||
insert-can?-callback
|
insert-can?-callback
|
||||||
can-exit?
|
can-exit?
|
||||||
|
on-exit
|
||||||
exit))
|
exit))
|
||||||
|
|
||||||
(define-signature framework:gui-utils^
|
(define-signature framework:gui-utils^
|
||||||
|
|
|
@ -166,7 +166,6 @@
|
||||||
(let ([at-most-one
|
(let ([at-most-one
|
||||||
(let ([skip? #f])
|
(let ([skip? #f])
|
||||||
(lambda (answer thunk)
|
(lambda (answer thunk)
|
||||||
(printf "at most one: skip? ~a~n" skip?)
|
|
||||||
(if skip?
|
(if skip?
|
||||||
answer
|
answer
|
||||||
(begin
|
(begin
|
||||||
|
@ -178,29 +177,23 @@
|
||||||
|
|
||||||
;; empty test
|
;; empty test
|
||||||
(lambda ()
|
(lambda ()
|
||||||
(printf "empty test~n")
|
(if (preferences:get 'framework:exit-when-no-frames)
|
||||||
(begin0
|
(at-most-one #t
|
||||||
(if (preferences:get 'framework:exit-when-no-frames)
|
(lambda ()
|
||||||
(at-most-one #t
|
(exit:can-exit?)))
|
||||||
(lambda ()
|
#t))
|
||||||
(printf "empty test.1~n")
|
|
||||||
(exit:can-exit?)))
|
|
||||||
#t)
|
|
||||||
(printf "empty test done~n")))
|
|
||||||
|
|
||||||
;; empty close down
|
;; empty close down
|
||||||
(lambda ()
|
(lambda ()
|
||||||
(printf "empty close down~n")
|
|
||||||
(if (preferences:get 'framework:exit-when-no-frames)
|
(if (preferences:get 'framework:exit-when-no-frames)
|
||||||
(at-most-one (void)
|
(at-most-one (void)
|
||||||
(lambda ()
|
(lambda ()
|
||||||
(printf "empty close down.1~n")
|
(exit:on-exit)
|
||||||
(exit:exit)))
|
(exit)))
|
||||||
(void))))
|
(void))))
|
||||||
|
|
||||||
(exit:insert-can?-callback
|
(exit:insert-can?-callback
|
||||||
(lambda ()
|
(lambda ()
|
||||||
(printf "exit callback~n")
|
|
||||||
(at-most-one
|
(at-most-one
|
||||||
#t
|
#t
|
||||||
(lambda ()
|
(lambda ()
|
||||||
|
@ -214,7 +207,6 @@
|
||||||
"Saving Prefs"
|
"Saving Prefs"
|
||||||
(format "Error saving preferences: ~a"
|
(format "Error saving preferences: ~a"
|
||||||
(exn-message exn))))])
|
(exn-message exn))))])
|
||||||
(printf "saving preferences~n")
|
|
||||||
(preferences:save))))
|
(preferences:save))))
|
||||||
|
|
||||||
;(wx:application-file-handler edit-file) ;; how to handle drag and drop?
|
;(wx:application-file-handler edit-file) ;; how to handle drag and drop?
|
||||||
|
|
Loading…
Reference in New Issue
Block a user