Adapted to new version of the Science Collection
This commit is contained in:
parent
e2154543c5
commit
b063d54f6e
|
@ -18,6 +18,8 @@
|
|||
;; Editor: Text size.
|
||||
;; Editor: Save and load.
|
||||
;; Editor: When inserting part copied from MathBox, automatically insert new MathBox.
|
||||
;; Editor: Keybindings for λ α β γ δ ε ∆ Λ works in MathBox. Should work outside too.
|
||||
;; (Partially done. β and bold clashes) More greek letters?
|
||||
;; Parser: Extend f(x):=expr syntax to 2 or more variables.
|
||||
;; Evaluation: Get syntax-location from math-text%
|
||||
;; Keymaps: Insertion of greek, and, mathematical characters.
|
||||
|
@ -32,12 +34,6 @@
|
|||
;; Snips: Represent equations, integrals etc with small graphs ala Wolfram Alpha.
|
||||
;; Educational: Recognize standard equations and offer step by step solutions.
|
||||
|
||||
;; LIMBO
|
||||
|
||||
;; PlotCanvas: Add "copy plot as image". set-clipboard-image is unimplmented :-(
|
||||
;; (Fixed on OS X)
|
||||
|
||||
|
||||
;; DONE
|
||||
;;
|
||||
;; MathBox: Evaluating an expression with an error, removes previous result.
|
||||
|
@ -57,6 +53,7 @@
|
|||
;; NSolve: Implemented bisection and Brent.
|
||||
;; Snips: Right-click menu: Evaluation options such output on/off.
|
||||
;; Errors: Errors and warnings can be signaled with user-error and user-warning
|
||||
;; PlotCanvas: Add "copy plot as image".
|
||||
|
||||
|
||||
;; IDEAS
|
||||
|
@ -70,8 +67,8 @@
|
|||
(except-in plot plot points)
|
||||
(prefix-in plot: plot)
|
||||
"../infix/main.rkt"
|
||||
"../infix/parser.rkt"
|
||||
(except-in (planet williams/science/math) infinite? nan?)
|
||||
"../infix/parser.rkt"
|
||||
(planet williams/science/math)
|
||||
"../numeric/root-finding.rkt"
|
||||
"../utils/clipboard.rkt")
|
||||
|
||||
|
@ -94,7 +91,7 @@
|
|||
(if (exact? x) (exact->inexact x) x))
|
||||
|
||||
;;;
|
||||
;;;
|
||||
;;; GLOBAL VARIABLES
|
||||
;;;
|
||||
|
||||
(define all-math-texts '())
|
||||
|
@ -128,7 +125,7 @@
|
|||
(define (ensure-number-function f)
|
||||
(lambda (x)
|
||||
(let ([v (f x)])
|
||||
(if (number? v) v 0))))
|
||||
(if (number? v) v 0))))
|
||||
(add-renderer! (function (ensure-number-function f) x-min x-max
|
||||
#:y-min y-min #:y-max y-max
|
||||
#:samples samples #:color color
|
||||
|
@ -147,8 +144,8 @@
|
|||
#:alpha alpha
|
||||
#:label label])
|
||||
|
||||
#;(lines vs
|
||||
[ #:x-min x-min
|
||||
#;(lines vs
|
||||
[ #:x-min x-min
|
||||
#:x-max x-max
|
||||
#:y-min y-min
|
||||
#:y-max y-max
|
||||
|
@ -393,14 +390,7 @@
|
|||
(let* ([bm (send plot-canvas make-bitmap (send plot-canvas get-width) (send plot-canvas get-height))]
|
||||
[dc (new bitmap-dc% [bitmap bm])])
|
||||
(draw-plot dc)
|
||||
bm))
|
||||
|
||||
; TODO: Use this when set-clipboard-bitmap is implemented in the racket gui
|
||||
#;(send the-clipboard set-clipboard-bitmap
|
||||
(let* ([bm (send plot-canvas make-bitmap (send plot-canvas get-width) (send plot-canvas get-height))]
|
||||
[dc (new bitmap-dc% [bitmap bm])])
|
||||
(draw-plot dc)
|
||||
bm)))])
|
||||
bm)))])
|
||||
|
||||
|
||||
(define plot-canvas%
|
||||
|
@ -506,16 +496,27 @@
|
|||
(list 'src-name 1 0 1 (string-length str)))
|
||||
(open-input-string str))))))
|
||||
|
||||
(define (register-greek keymap)
|
||||
(define (register name char shortcuts)
|
||||
(let ([insert-name (string-append "insert-" name)])
|
||||
(send keymap add-function insert-name
|
||||
(λ (ed e) (send ed insert char)))
|
||||
(for ([shortcut shortcuts])
|
||||
(send keymap map-function shortcut insert-name))))
|
||||
(register "lambda" #\λ '("d:\\" "c:\\"))
|
||||
(register "Lambda" #\Λ '("c:L"))
|
||||
(register "alpha" #\α '("c:a"))
|
||||
(register "beta" #\β '("c:b")) ; TODO: Taken by bold
|
||||
(register "gamma" #\γ '("c:g"))
|
||||
(register "delta" #\δ '("c:d"))
|
||||
(register "epsilon" #\ε '("c:e"))
|
||||
(register "rho" #\ρ '("c:r"))
|
||||
(register "Gamma" #\Γ '("c:G"))
|
||||
(register "Delta" #\∆ '("c:D")))
|
||||
|
||||
(define (install-math-snip-keymap math-snip)
|
||||
(let ([keymap (send (send math-snip get-editor) get-keymap)])
|
||||
|
||||
(define (register name char shortcuts)
|
||||
(let ([insert-name (string-append "insert-" name)])
|
||||
(send keymap add-function insert-name
|
||||
(λ (ed e) (send ed insert char)))
|
||||
(for ([shortcut shortcuts])
|
||||
(send keymap map-function shortcut insert-name))))
|
||||
|
||||
(send keymap add-function "evaluate-math"
|
||||
(λ (ed e) (send ed evaluate)))
|
||||
(send keymap add-function "left-willing-to-leave"
|
||||
|
@ -539,16 +540,8 @@
|
|||
(send keymap add-function "newline"
|
||||
(λ (ed e) (send ed insert #\newline)))
|
||||
|
||||
(register "lambda" #\λ '("d:\\" "c:\\"))
|
||||
(register "Lambda" #\Λ '("c:L"))
|
||||
(register "alpha" #\α '("c:a"))
|
||||
(register "beta" #\β '("c:b"))
|
||||
(register "gamma" #\γ '("c:g"))
|
||||
(register "delta" #\δ '("c:d"))
|
||||
(register "epsilon" #\ε '("c:e"))
|
||||
(register "rho" #\ρ '("c:r"))
|
||||
(register "Gamma" #\Γ '("c:G"))
|
||||
(register "Delta" #\∆ '("c:D"))
|
||||
(register-greek keymap)
|
||||
|
||||
|
||||
(send keymap map-function "s:enter" "newline")
|
||||
(send keymap map-function "enter" "evaluate-math")
|
||||
|
@ -562,6 +555,7 @@
|
|||
;;;
|
||||
|
||||
(define keymap (send text-editor get-keymap))
|
||||
(register-greek keymap)
|
||||
|
||||
;(add-editor-keymap-functions keymap)
|
||||
;(add-text-keymap-functions keymap)
|
||||
|
@ -623,7 +617,7 @@
|
|||
|
||||
(send keymap map-function "c:m" "insert-math")
|
||||
(send keymap map-function "d:m" "insert-math") ; OS X cmd
|
||||
(send keymap map-function "~s:left" "left-willing-to-enter-math-snip")
|
||||
(send keymap map-function "~s:left" "left-willing-to-enter-math-snip")
|
||||
(send keymap map-function "~s:right" "right-willing-to-enter-math-snip")
|
||||
(send keymap map-function "c:b" "bold") ; Win ctrl
|
||||
(send keymap map-function "d:b" "bold") ; OS X cmd
|
||||
|
|
Loading…
Reference in New Issue
Block a user