Adapted to new version of the Science Collection

This commit is contained in:
Jens Axel Søgaard 2013-12-06 18:48:53 +01:00
parent e2154543c5
commit b063d54f6e

View File

@ -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