many repairs to Create Executable...
svn: r1558
This commit is contained in:
parent
027eb72aaa
commit
d9bad21ca2
|
@ -537,7 +537,11 @@ _embedr-sig.ss_ library provides the signature, _compiler:embed^_.
|
||||||
|
|
||||||
> (embedding-executable-is-directory? mred?) - Returns #t if
|
> (embedding-executable-is-directory? mred?) - Returns #t if
|
||||||
Mzscheme/MrEd executables for the current platform correspond to
|
Mzscheme/MrEd executables for the current platform correspond to
|
||||||
directories (as on Mac OS X).
|
directories from the user's perspective.
|
||||||
|
|
||||||
|
> (embedding-executable-is-actually-directory? mred?) - Returns #t if
|
||||||
|
Mzscheme/MrEd executables for the current platform are implemented
|
||||||
|
as directories (as on Mac OS X).
|
||||||
|
|
||||||
|
|
||||||
> (embedding-executable-put-file-extension+style+filters mred?) -
|
> (embedding-executable-put-file-extension+style+filters mred?) -
|
||||||
|
@ -546,7 +550,7 @@ _embedr-sig.ss_ library provides the signature, _compiler:embed^_.
|
||||||
MzScheme/MrEd launchers for this platform are directories, the
|
MzScheme/MrEd launchers for this platform are directories, the
|
||||||
`style' result is suitable for use with `get-directory', and the
|
`style' result is suitable for use with `get-directory', and the
|
||||||
`extension' result may be a string indicating a required extension
|
`extension' result may be a string indicating a required extension
|
||||||
for the directory name (e.g., ".app" for Mac OS X).
|
for the directory name (e.g., "app" for Mac OS X).
|
||||||
|
|
||||||
|
|
||||||
> (embedding-executable-add-suffix path mred?) - Returns a path with a
|
> (embedding-executable-add-suffix path mred?) - Returns a path with a
|
||||||
|
|
|
@ -7,5 +7,6 @@
|
||||||
(make-embedding-executable
|
(make-embedding-executable
|
||||||
write-module-bundle
|
write-module-bundle
|
||||||
embedding-executable-is-directory?
|
embedding-executable-is-directory?
|
||||||
|
embedding-executable-is-actually-directory?
|
||||||
embedding-executable-put-file-extension+style+filters
|
embedding-executable-put-file-extension+style+filters
|
||||||
embedding-executable-add-suffix)))
|
embedding-executable-add-suffix)))
|
||||||
|
|
|
@ -19,12 +19,17 @@
|
||||||
(import)
|
(import)
|
||||||
|
|
||||||
(define (embedding-executable-is-directory? mred?)
|
(define (embedding-executable-is-directory? mred?)
|
||||||
(eq? 'macosx (system-type)))
|
#f)
|
||||||
|
|
||||||
|
(define (embedding-executable-is-actually-directory? mred?)
|
||||||
|
(and mred? (eq? 'macosx (system-type))))
|
||||||
|
|
||||||
(define (embedding-executable-put-file-extension+style+filters mred?)
|
(define (embedding-executable-put-file-extension+style+filters mred?)
|
||||||
(case (system-type)
|
(case (system-type)
|
||||||
[(windows) (values ".exe" null '(("Executable" "*.exe")))]
|
[(windows) (values "exe" null '(("Executable" "*.exe")))]
|
||||||
[(macosx) (values ".app" '(enter-packages) #f)]
|
[(macosx) (if mred?
|
||||||
|
(values "app" '(enter-packages) '(("App" "*.app")))
|
||||||
|
(values #f null null))]
|
||||||
[else (values #f null null)]))
|
[else (values #f null null)]))
|
||||||
|
|
||||||
(define (embedding-executable-add-suffix path mred?)
|
(define (embedding-executable-add-suffix path mred?)
|
||||||
|
|
|
@ -1324,8 +1324,8 @@
|
||||||
(drscheme:language:put-executable
|
(drscheme:language:put-executable
|
||||||
parent
|
parent
|
||||||
program-filename
|
program-filename
|
||||||
mred-launcher?
|
|
||||||
#t
|
#t
|
||||||
|
mred-launcher?
|
||||||
(if mred-launcher?
|
(if mred-launcher?
|
||||||
(string-constant save-a-mred-launcher)
|
(string-constant save-a-mred-launcher)
|
||||||
(string-constant save-a-mzscheme-launcher)))])
|
(string-constant save-a-mzscheme-launcher)))])
|
||||||
|
|
|
@ -585,7 +585,7 @@
|
||||||
(define filename-text-field (instantiate text-field% ()
|
(define filename-text-field (instantiate text-field% ()
|
||||||
(label (string-constant filename))
|
(label (string-constant filename))
|
||||||
(parent filename-panel)
|
(parent filename-panel)
|
||||||
(init-value (path->string (default-executable-filename program-filename #t)))
|
(init-value (path->string (default-executable-filename program-filename #f)))
|
||||||
(min-width 400)
|
(min-width 400)
|
||||||
(callback void)))
|
(callback void)))
|
||||||
(define filename-browse-button (instantiate button% ()
|
(define filename-browse-button (instantiate button% ()
|
||||||
|
@ -629,13 +629,9 @@
|
||||||
(gui-utils:ok/cancel-buttons
|
(gui-utils:ok/cancel-buttons
|
||||||
button-panel
|
button-panel
|
||||||
(λ (x y)
|
(λ (x y)
|
||||||
(cond
|
(when (check-filename)
|
||||||
[(filename-ok?)
|
(set! cancelled? #f)
|
||||||
(set! cancelled? #f)
|
(send dlg show #f)))
|
||||||
(send dlg show #f)]
|
|
||||||
[else (message-box (string-constant drscheme)
|
|
||||||
(string-constant please-choose-an-executable-filename)
|
|
||||||
dlg)]))
|
|
||||||
(λ (x y) (send dlg show #f))
|
(λ (x y) (send dlg show #f))
|
||||||
(string-constant create)
|
(string-constant create)
|
||||||
(string-constant cancel)))
|
(string-constant cancel)))
|
||||||
|
@ -653,8 +649,8 @@
|
||||||
dlg
|
dlg
|
||||||
base
|
base
|
||||||
name
|
name
|
||||||
(not mzscheme?)
|
|
||||||
launcher?
|
launcher?
|
||||||
|
(not mzscheme?)
|
||||||
(if launcher?
|
(if launcher?
|
||||||
(if mzscheme?
|
(if mzscheme?
|
||||||
(string-constant save-a-mzscheme-launcher)
|
(string-constant save-a-mzscheme-launcher)
|
||||||
|
@ -663,7 +659,7 @@
|
||||||
(string-constant save-a-mzscheme-stand-alone-executable)
|
(string-constant save-a-mzscheme-stand-alone-executable)
|
||||||
(string-constant save-a-mred-stand-alone-executable))))])
|
(string-constant save-a-mred-stand-alone-executable))))])
|
||||||
(when filename
|
(when filename
|
||||||
(send filename-text-field set-value filename))))))
|
(send filename-text-field set-value (path->string filename)))))))
|
||||||
|
|
||||||
(define (currently-mzscheme-binary?)
|
(define (currently-mzscheme-binary?)
|
||||||
(cond
|
(cond
|
||||||
|
@ -677,20 +673,28 @@
|
||||||
(= 0 (send type-rb get-selection))]
|
(= 0 (send type-rb get-selection))]
|
||||||
[else (eq? show-type 'launcher)]))
|
[else (eq? show-type 'launcher)]))
|
||||||
|
|
||||||
(define (filename-ok?)
|
(define (check-filename)
|
||||||
(let ([filename-str (send filename-text-field get-value)]
|
(let ([filename-str (send filename-text-field get-value)]
|
||||||
[launcher-is-dir?
|
[mred? (not (currently-mzscheme-binary?))])
|
||||||
(cond
|
(let-values ([(extension style filters)
|
||||||
[(currently-mzscheme-binary?)
|
(if (currently-launcher?)
|
||||||
(mzscheme-launcher-is-directory?)]
|
(if mred?
|
||||||
[else
|
(mred-launcher-put-file-extension+style+filters)
|
||||||
(mred-launcher-is-directory?)])])
|
(mzscheme-launcher-put-file-extension+style+filters))
|
||||||
(cond
|
(embedding-executable-put-file-extension+style+filters mred?))])
|
||||||
[(string=? "" filename-str) #f]
|
|
||||||
[(or (directory-exists? filename-str)
|
(cond
|
||||||
(file-exists? filename-str))
|
[(string=? "" filename-str)
|
||||||
(ask-user-can-clobber? filename-str)]
|
(message-box (string-constant drscheme)
|
||||||
[else #t])))
|
(string-constant please-choose-an-executable-filename)
|
||||||
|
dlg)
|
||||||
|
#f]
|
||||||
|
[(not (users-name-ok? extension dlg (string->path filename-str)))
|
||||||
|
#f]
|
||||||
|
[(or (directory-exists? filename-str)
|
||||||
|
(file-exists? filename-str))
|
||||||
|
(ask-user-can-clobber? filename-str)]
|
||||||
|
[else #t]))))
|
||||||
|
|
||||||
;; ask-user-can-clobber-directory? : (is-a?/c top-level-window<%>) string -> boolean
|
;; ask-user-can-clobber-directory? : (is-a?/c top-level-window<%>) string -> boolean
|
||||||
(define (ask-user-can-clobber? filename)
|
(define (ask-user-can-clobber? filename)
|
||||||
|
@ -758,7 +762,7 @@
|
||||||
style
|
style
|
||||||
filters))])
|
filters))])
|
||||||
(and users-name
|
(and users-name
|
||||||
(users-name-ok? dir? parent users-name)
|
(users-name-ok? extension parent users-name)
|
||||||
(or (not dir?)
|
(or (not dir?)
|
||||||
(gui-utils:get-choice
|
(gui-utils:get-choice
|
||||||
(format (string-constant warning-directory-will-be-replaced)
|
(format (string-constant warning-directory-will-be-replaced)
|
||||||
|
@ -770,32 +774,30 @@
|
||||||
parent))
|
parent))
|
||||||
users-name))))
|
users-name))))
|
||||||
|
|
||||||
;; users-name-ok? : boolean? (union #f frame% dialog%) string -> boolean
|
;; users-name-ok? : string (union #f frame% dialog%) string -> boolean
|
||||||
;; returns #t if the string is an acceptable name for
|
;; returns #t if the string is an acceptable name for
|
||||||
;; a saved executable, and #f otherwise.
|
;; a saved executable, and #f otherwise.
|
||||||
(define (users-name-ok? dir? parent name)
|
(define (users-name-ok? extension parent name)
|
||||||
(case (system-type)
|
(or (not extension)
|
||||||
[(macosx)
|
(let ([suffix-m (regexp-match #rx"[.][^.]*$" (path->string name))])
|
||||||
(cond
|
(or (and suffix-m
|
||||||
[(not dir?) #t] ;; non dir executables are shell scripts and all names are okay
|
(string=? (substring (car suffix-m) 1) extension))
|
||||||
[(regexp-match #rx#".app$" (path->bytes name)) #t]
|
(begin
|
||||||
[else
|
;; FIXME: change the message to be platform-neutral and to
|
||||||
(message-box (string-constant drscheme)
|
;; use `extension' for the message
|
||||||
(format
|
(case (system-type)
|
||||||
(string-constant macosx-executables-must-end-with-app)
|
[(macosx)
|
||||||
name)
|
(message-box (string-constant drscheme)
|
||||||
parent)
|
(format
|
||||||
#f])]
|
(string-constant macosx-executables-must-end-with-app)
|
||||||
[(windows)
|
name)
|
||||||
(cond
|
parent)]
|
||||||
[(regexp-match #rx#".exe$" (path->bytes name)) #t]
|
[(windows)
|
||||||
[else
|
(message-box (string-constant drscheme)
|
||||||
(message-box (string-constant drscheme)
|
(format (string-constant windows-executables-must-end-with-exe)
|
||||||
(format (string-constant windows-executables-must-end-with-exe)
|
name)
|
||||||
name)
|
parent)])
|
||||||
parent)
|
#f)))))
|
||||||
#f])]
|
|
||||||
[else #t]))
|
|
||||||
|
|
||||||
;; default-executable-filename : path -> path
|
;; default-executable-filename : path -> path
|
||||||
(define (default-executable-filename program-filename mred?)
|
(define (default-executable-filename program-filename mred?)
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
(module plt-mred mzscheme
|
(module plt-mred mzscheme
|
||||||
(require (lib "mred.ss" "mred")
|
(require (lib "mred.ss" "mred")
|
||||||
(lib "class.ss"))
|
(lib "class.ss"))
|
||||||
|
|
||||||
(define argv #())
|
(define argv (current-command-line-arguments))
|
||||||
(define program "mred")
|
(define program (find-system-path 'exec-file))
|
||||||
|
|
||||||
(provide argv
|
(provide argv
|
||||||
program
|
program
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
(module plt-mzscheme mzscheme
|
(module plt-mzscheme mzscheme
|
||||||
(define argv #())
|
(define argv (current-command-line-arguments))
|
||||||
(define program "mzscheme")
|
(define program (find-system-path 'exec-file))
|
||||||
(provide argv
|
(provide argv
|
||||||
program
|
program
|
||||||
(all-from mzscheme)))
|
(all-from mzscheme)))
|
||||||
|
|
|
@ -157,7 +157,7 @@ executables.
|
||||||
platform are directories from the user perspective, the `style'
|
platform are directories from the user perspective, the `style'
|
||||||
result is suitable for use with `get-directory', and the `extension'
|
result is suitable for use with `get-directory', and the `extension'
|
||||||
result may be a string indicating a required extension for the
|
result may be a string indicating a required extension for the
|
||||||
directory name (e.g., ".app" for Mac OS X).
|
directory name (e.g., "app" for Mac OS X).
|
||||||
|
|
||||||
> (mzscheme-launcher-put-file-extension+style+filters) - Like
|
> (mzscheme-launcher-put-file-extension+style+filters) - Like
|
||||||
`mred-launcher-get-file-extension+style+filters', but for MzScheme
|
`mred-launcher-get-file-extension+style+filters', but for MzScheme
|
||||||
|
|
|
@ -541,8 +541,8 @@
|
||||||
;; Helper:
|
;; Helper:
|
||||||
(define (put-file-extension+style+filters type)
|
(define (put-file-extension+style+filters type)
|
||||||
(case type
|
(case type
|
||||||
[(windows) (values ".exe" null '(("Executable" "*.exe")))]
|
[(windows) (values "exe" null '(("Executable" "*.exe")))]
|
||||||
[(macosx) (values ".app" '(packages) '(("App" "*.app")))]
|
[(macosx) (values "app" '(packages) '(("App" "*.app")))]
|
||||||
[else (values #f null null)]))
|
[else (values #f null null)]))
|
||||||
|
|
||||||
(define (mred-launcher-add-suffix path)
|
(define (mred-launcher-add-suffix path)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user