added support for the stepper button appearing automatically in the teaching languages (in the module language with #lang htdp/* prefix)
svn: r18771
This commit is contained in:
parent
dcaa17e860
commit
c7606115e1
|
@ -329,7 +329,8 @@
|
||||||
(open (prefix drscheme:help-desk: drscheme:help-desk-cm^))
|
(open (prefix drscheme:help-desk: drscheme:help-desk-cm^))
|
||||||
(open (prefix drscheme:eval: drscheme:eval-cm^))
|
(open (prefix drscheme:eval: drscheme:eval-cm^))
|
||||||
(open (prefix drscheme:modes: drscheme:modes-cm^))
|
(open (prefix drscheme:modes: drscheme:modes-cm^))
|
||||||
(open (prefix drscheme:tracing: drscheme:tracing-cm^))))
|
(open (prefix drscheme:tracing: drscheme:tracing-cm^))
|
||||||
|
(open (prefix drscheme:module-language: drscheme:module-language-cm^))))
|
||||||
|
|
||||||
(define-signature drscheme:tool^
|
(define-signature drscheme:tool^
|
||||||
((open (prefix drscheme:debug: drscheme:debug^))
|
((open (prefix drscheme:debug: drscheme:debug^))
|
||||||
|
@ -342,4 +343,5 @@
|
||||||
(open (prefix drscheme:help-desk: drscheme:help-desk^))
|
(open (prefix drscheme:help-desk: drscheme:help-desk^))
|
||||||
(open (prefix drscheme:eval: drscheme:eval^))
|
(open (prefix drscheme:eval: drscheme:eval^))
|
||||||
(open (prefix drscheme:modes: drscheme:modes^))
|
(open (prefix drscheme:modes: drscheme:modes^))
|
||||||
(open (prefix drscheme:tracing: drscheme:tracing^))))
|
(open (prefix drscheme:tracing: drscheme:tracing^))
|
||||||
|
(open (prefix drscheme:module-language: drscheme:module-language^))))
|
||||||
|
|
|
@ -37,7 +37,8 @@
|
||||||
drscheme:help-desk^
|
drscheme:help-desk^
|
||||||
drscheme:eval^
|
drscheme:eval^
|
||||||
drscheme:modes^
|
drscheme:modes^
|
||||||
drscheme:tracing^)
|
drscheme:tracing^
|
||||||
|
drscheme:module-language^)
|
||||||
(link init@ tools@ modes@ text@ eval@ frame@ rep@ language@
|
(link init@ tools@ modes@ text@ eval@ frame@ rep@ language@
|
||||||
module-overview@ unit@ debug@ multi-file-search@ get-extend@
|
module-overview@ unit@ debug@ multi-file-search@ get-extend@
|
||||||
language-configuration@ font@ module-language@ module-language-tools@
|
language-configuration@ font@ module-language@ module-language-tools@
|
||||||
|
@ -56,5 +57,6 @@
|
||||||
(prefix drscheme:help-desk: drscheme:help-desk^)
|
(prefix drscheme:help-desk: drscheme:help-desk^)
|
||||||
(prefix drscheme:eval: drscheme:eval^)
|
(prefix drscheme:eval: drscheme:eval^)
|
||||||
(prefix drscheme:modes: drscheme:modes^)
|
(prefix drscheme:modes: drscheme:modes^)
|
||||||
(prefix drscheme:tracing: drscheme:tracing^))
|
(prefix drscheme:tracing: drscheme:tracing^)
|
||||||
|
(prefix drscheme:module-language: drscheme:module-language^))
|
||||||
drscheme-unit@))
|
drscheme-unit@))
|
||||||
|
|
|
@ -25,7 +25,8 @@
|
||||||
[prefix drscheme:debug: drscheme:debug^]
|
[prefix drscheme:debug: drscheme:debug^]
|
||||||
[prefix drscheme:eval: drscheme:eval^]
|
[prefix drscheme:eval: drscheme:eval^]
|
||||||
[prefix drscheme:modes: drscheme:modes^]
|
[prefix drscheme:modes: drscheme:modes^]
|
||||||
[prefix drscheme:tracing: drscheme:tracing^])
|
[prefix drscheme:tracing: drscheme:tracing^]
|
||||||
|
[prefix drscheme:module-language: drscheme:module-language^])
|
||||||
(export drscheme:tools^)
|
(export drscheme:tools^)
|
||||||
|
|
||||||
;; An installed-tool is
|
;; An installed-tool is
|
||||||
|
|
|
@ -44,6 +44,21 @@ all of the names in the tools library, for use defining keybindings
|
||||||
|
|
||||||
(provide/doc
|
(provide/doc
|
||||||
|
|
||||||
|
(proc-doc/names
|
||||||
|
drscheme:module-language:add-module-language
|
||||||
|
(-> any)
|
||||||
|
()
|
||||||
|
@{Adds the module language to DrScheme. This is called during DrScheme's startup.})
|
||||||
|
|
||||||
|
(proc-doc/names
|
||||||
|
drscheme:module-language:module-language-put-file-mixin
|
||||||
|
(-> (implementation?/c text:basic<%>) (implementation?/c text:basic<%>))
|
||||||
|
(super%)
|
||||||
|
@{Extends @scheme[super%] by overriding the @method[editor<%> put-file] method
|
||||||
|
to use a default name from the buffer, if the buffer contains something like
|
||||||
|
@tt{(module name ...)}.})
|
||||||
|
|
||||||
|
|
||||||
;
|
;
|
||||||
;
|
;
|
||||||
;
|
;
|
||||||
|
|
|
@ -25,6 +25,8 @@
|
||||||
|
|
||||||
(define ((make-info options) key default use-default)
|
(define ((make-info options) key default use-default)
|
||||||
(case key
|
(case key
|
||||||
|
[(drscheme:toolbar-buttons)
|
||||||
|
(dynamic-require 'stepper/drscheme-button 'stepper-drscheme-button)]
|
||||||
[else (use-default key default)]))
|
[else (use-default key default)]))
|
||||||
|
|
||||||
(define (make-module-info options)
|
(define (make-module-info options)
|
||||||
|
|
15
collects/scribblings/tools/module-language.scrbl
Normal file
15
collects/scribblings/tools/module-language.scrbl
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
#lang scribble/doc
|
||||||
|
@(require "common.ss")
|
||||||
|
@(tools-title "module-language")
|
||||||
|
|
||||||
|
@definterface[drscheme:language:module-language<%> ()]{
|
||||||
|
|
||||||
|
The only language that implements this interface is DrScheme's ``Use the language declared in the source'' language,
|
||||||
|
i.e., the ``Module'' language.
|
||||||
|
|
||||||
|
@defmethod[(get-users-language-name) string]{
|
||||||
|
Returns the name of the language that is declared in the source, as a string.
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@(tools-include "module-language")
|
|
@ -504,5 +504,6 @@ for a list of the capabilities registered by default.
|
||||||
@include-section["help-desk.scrbl"]
|
@include-section["help-desk.scrbl"]
|
||||||
@include-section["eval.scrbl"]
|
@include-section["eval.scrbl"]
|
||||||
@include-section["modes.scrbl"]
|
@include-section["modes.scrbl"]
|
||||||
|
@include-section["module-language.scrbl"]
|
||||||
|
|
||||||
@index-section[]
|
@index-section[]
|
||||||
|
|
11
collects/stepper/drscheme-button.ss
Normal file
11
collects/stepper/drscheme-button.ss
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
#lang scheme/base
|
||||||
|
(require scheme/class string-constants/string-constant
|
||||||
|
(prefix-in x: "private/mred-extensions.ss"))
|
||||||
|
(provide stepper-button-callback stepper-drscheme-button)
|
||||||
|
(define-local-member-name stepper-button-callback)
|
||||||
|
|
||||||
|
(define stepper-drscheme-button
|
||||||
|
(list (list
|
||||||
|
(string-constant stepper-button-label)
|
||||||
|
x:foot-img/horizontal
|
||||||
|
(λ (drs-frame) (send drs-frame stepper-button-callback)))))
|
|
@ -12,11 +12,12 @@
|
||||||
"private/shared.ss"
|
"private/shared.ss"
|
||||||
lang/stepper-language-interface
|
lang/stepper-language-interface
|
||||||
scheme/pretty
|
scheme/pretty
|
||||||
"xml-sig.ss")
|
"xml-sig.ss"
|
||||||
|
"drscheme-button.ss") ;; get the stepper-button-callback private-member-name
|
||||||
|
|
||||||
(import drscheme:tool^ xml^ view-controller^)
|
(import drscheme:tool^ xml^ view-controller^)
|
||||||
(export drscheme:tool-exports^ stepper-frame^)
|
(export drscheme:tool-exports^ stepper-frame^)
|
||||||
|
|
||||||
;; tool magic here:
|
;; tool magic here:
|
||||||
(define (phase1)
|
(define (phase1)
|
||||||
;; experiment with extending the language... parameter-like fields for stepper parameters
|
;; experiment with extending the language... parameter-like fields for stepper parameters
|
||||||
|
@ -69,7 +70,9 @@
|
||||||
(drscheme:language-configuration:language-settings-language settings))
|
(drscheme:language-configuration:language-settings-language settings))
|
||||||
|
|
||||||
(define (stepper-works-for? language-level)
|
(define (stepper-works-for? language-level)
|
||||||
|
(printf "~s\n" language-level)
|
||||||
(or (send language-level stepper:supported?)
|
(or (send language-level stepper:supported?)
|
||||||
|
(is-a? language-level drscheme:module-language:module-language<%>)
|
||||||
(getenv "PLTSTEPPERUNSAFE")))
|
(getenv "PLTSTEPPERUNSAFE")))
|
||||||
|
|
||||||
;; the stepper's frame:
|
;; the stepper's frame:
|
||||||
|
@ -212,28 +215,31 @@
|
||||||
[stretchable-width #f]
|
[stretchable-width #f]
|
||||||
[stretchable-height #f]))
|
[stretchable-height #f]))
|
||||||
|
|
||||||
|
;; called from drscheme-button.ss, installed via the #lang htdp/bsl (& co) reader into drscheme
|
||||||
|
(define/public (stepper-button-callback)
|
||||||
|
(if stepper-frame
|
||||||
|
(send stepper-frame show #t)
|
||||||
|
(let* ([language-level
|
||||||
|
(extract-language-level (get-definitions-text))]
|
||||||
|
[language-level-name (language-level->name language-level)])
|
||||||
|
(if (stepper-works-for? language-level)
|
||||||
|
(set! stepper-frame
|
||||||
|
(go this
|
||||||
|
program-expander
|
||||||
|
(+ 1 (send (get-definitions-text) get-start-position))
|
||||||
|
(+ 1 (send (get-definitions-text) get-end-position))))
|
||||||
|
(message-box
|
||||||
|
(string-constant stepper-name)
|
||||||
|
(format (string-constant stepper-language-level-message)
|
||||||
|
language-level-name))))))
|
||||||
|
|
||||||
(define stepper-button
|
(define stepper-button
|
||||||
(new switchable-button%
|
(new switchable-button%
|
||||||
[parent stepper-button-parent-panel]
|
[parent stepper-button-parent-panel]
|
||||||
[label (string-constant stepper-button-label)]
|
[label (string-constant stepper-button-label)]
|
||||||
[bitmap x:foot-img/horizontal]
|
[bitmap x:foot-img/horizontal]
|
||||||
[alternate-bitmap x:foot-img/vertical]
|
[alternate-bitmap x:foot-img/vertical]
|
||||||
[callback (lambda (dont-care)
|
[callback (lambda (dont-care) (stepper-button-callback))]))
|
||||||
(if stepper-frame
|
|
||||||
(send stepper-frame show #t)
|
|
||||||
(let* ([language-level
|
|
||||||
(extract-language-level (get-definitions-text))]
|
|
||||||
[language-level-name (language-level->name language-level)])
|
|
||||||
(if (stepper-works-for? language-level)
|
|
||||||
(set! stepper-frame
|
|
||||||
(go this
|
|
||||||
program-expander
|
|
||||||
(+ 1 (send (get-definitions-text) get-start-position))
|
|
||||||
(+ 1 (send (get-definitions-text) get-end-position))))
|
|
||||||
(message-box
|
|
||||||
(string-constant stepper-name)
|
|
||||||
(format (string-constant stepper-language-level-message)
|
|
||||||
language-level-name))))))]))
|
|
||||||
|
|
||||||
(register-toolbar-button stepper-button)
|
(register-toolbar-button stepper-button)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user