original commit: 544dbee8dc0c02c1b0f6f9fff35d3fd4dc32a7c9
This commit is contained in:
Matthew Flatt 1998-10-10 03:48:20 +00:00
parent 38f131a449
commit 7ad10b29e5

View File

@ -983,7 +983,7 @@
(get-size (box 0) h) (get-size (box 0) h)
(let ([new-min-height (+ (* fixed-height-lines height) (let ([new-min-height (+ (* fixed-height-lines height)
(- (unbox h) (unbox ch)))]) (- (unbox h) (unbox ch)))])
(set-min-height new-min-height) (set-min-height (inexact->exact (round new-min-height)))
(force-redraw)))))))]) (force-redraw)))))))])
(sequence (sequence
@ -1395,8 +1395,8 @@
(unless (and (list? children-info) (unless (and (list? children-info)
(andmap (lambda (x) (and (list? x) (andmap (lambda (x) (and (list? x)
(= 4 (length x)) (= 4 (length x))
(number? (car x)) (not (negative? (car x))) (integer? (car x)) (number? (car x)) (not (negative? (car x))) (integer? (car x)) (exact? (car x))
(number? (cadr x)) (not (negative? (cadr x))) (integer? (cadr x)))) (number? (cadr x)) (not (negative? (cadr x))) (integer? (cadr x)) (exact? (cadr x))))
children-info)) children-info))
(raise-type-error (who->name '(method area-container-window<%> place-children)) (raise-type-error (who->name '(method area-container-window<%> place-children))
"list of (list of non-negative-integer non-negative-integer boolean boolean)" "list of (list of non-negative-integer non-negative-integer boolean boolean)"
@ -1449,7 +1449,7 @@
(= (length l) (length children-info)) (= (length l) (length children-info))
(andmap (lambda (x) (and (list? x) (andmap (lambda (x) (and (list? x)
(= 4 (length x)) (= 4 (length x))
(andmap (lambda (x) (and (number? x) (integer? x))) x))) (andmap (lambda (x) (and (number? x) (integer? x) (exact? x))) x)))
l)) l))
(raise-mismatch-error 'container-redraw (raise-mismatch-error 'container-redraw
"result from place-children is not a list of 4-integer lists with the correct length: " "result from place-children is not a list of 4-integer lists with the correct length: "
@ -1884,7 +1884,10 @@
(set! dy (- dy (- (unbox hbox) (unbox ybox)))) (set! dy (- dy (- (unbox hbox) (unbox ybox))))
; Subtract space above label ; Subtract space above label
(set! dy (- dy (quotient (- (send l get-height) (unbox hbox)) 2))))) (set! dy (- dy (quotient (- (send l get-height) (unbox hbox)) 2)))
; Exact
(set! dy (inexact->exact dy))))
(when value (when value
(set-value value) (set-value value)
@ -1896,7 +1899,7 @@
(send (send e get-admin) get-view #f #f cw #f) (send (send e get-admin) get-view #f #f cw #f)
(send c get-size tw (box 0)) (send c get-size tw (box 0))
(let ([new-min-width (+ (unbox ew) (- (unbox tw) (unbox cw)))]) (let ([new-min-width (+ (unbox ew) (- (unbox tw) (unbox cw)))])
(send c set-min-width new-min-width))))) (send c set-min-width (inexact->exact new-min-width))))))
(send e callback-ready)))) (send e callback-ready))))
;;;;;;;;;;;;;;;;;;;;;;;;; mred Class Construction ;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;; mred Class Construction ;;;;;;;;;;;;;;;;;;;;;;;;;
@ -2077,10 +2080,14 @@
[(on?) (send wx drag-accept-files on?)])] [(on?) (send wx drag-accept-files on?)])]
[client->screen (lambda (x y) [client->screen (lambda (x y)
(check-slider-integer '(method window<%> client->screen) x)
(check-slider-integer '(method window<%> client->screen) y)
(double-boxed (double-boxed
x y x y
(lambda (x y) (send wx client-to-screen x y))))] (lambda (x y) (send wx client-to-screen x y))))]
[screen->client (lambda (x y) [screen->client (lambda (x y)
(check-slider-integer '(method window<%> screen->client) x)
(check-slider-integer '(method window<%> screen->client) y)
(double-boxed (double-boxed
x y x y
(lambda (x y) (send wx screen-to-client x y))))] (lambda (x y) (send wx screen-to-client x y))))]
@ -2166,8 +2173,12 @@
[() (send wx center 'both)] [() (send wx center 'both)]
[(dir) (send wx center dir)])] [(dir) (send wx center dir)])]
[move (lambda (x y) [move (lambda (x y)
(check-slider-integer '(method top-level-window<%> move) x)
(check-slider-integer '(method top-level-window<%> move) y)
(send wx move x y))] (send wx move x y))]
[resize (lambda (w h) [resize (lambda (w h)
(check-range-integer '(method top-level-window<%> resize) w)
(check-range-integer '(method top-level-window<%> resize) h)
(send wx set-size -1 -1 w h))] (send wx set-size -1 -1 w h))]
[get-focus-window (lambda () (let ([w (send wx get-focus-window)]) [get-focus-window (lambda () (let ([w (send wx get-focus-window)])
@ -2333,30 +2344,33 @@
(check-orientation 'radio-box style)) (check-orientation 'radio-box style))
(private (private
[wx #f] [wx #f]
[per-button [check-button
(lambda (method n k) (lambda (method n)
(if (< -1 n (get-number)) (check-non-negative-integer `(method radio-box% ,method) n)
(k) (unless (< n (length choices))
(raise-mismatch-error (who->name `(method radio-box% ,method)) "no such button: " n)))]) (raise-mismatch-error (who->name `(method radio-box% ,method)) "no such button: " n)))])
(override (override
[enable (case-lambda [enable (case-lambda
[(on?) (send wx enable on?)] [(on?) (send wx enable on?)]
[(which on?) (per-button 'enable which (lambda () (send wx enable which on?)))])] [(which on?) (check-button 'enable which)
(send wx enable which on?)])]
[is-enabled? (case-lambda [is-enabled? (case-lambda
[() (send wx is-enabled?)] [() (send wx is-enabled?)]
[(which) (per-button 'is-enabled? which [(which) (check-button 'is-enabled? which)
(lambda () (send wx is-enabled? which)))])]) (send wx is-enabled? which)])])
(public (public
[get-number (lambda () (length choices))] [get-number (lambda () (length choices))]
[get-item-label (lambda (n) [get-item-label (lambda (n)
(per-button 'get-item-label n (check-button 'get-item-label n)
(lambda () (list-ref choices n))))] (list-ref choices n))]
[get-item-plain-label (lambda (n) [get-item-plain-label (lambda (n)
(per-button 'get-item-plain-label n (check-button 'get-item-plain-label n)
(lambda () (wx:label->plain-label (list-ref choices n)))))] (wx:label->plain-label (list-ref choices n)))]
[get-selection (lambda () (send wx get-selection))] [get-selection (lambda () (send wx get-selection))]
[set-selection (lambda (v) (send wx set-selection v))]) [set-selection (lambda (v)
(check-button 'set-selection v)
(send wx set-selection v))])
(sequence (sequence
(super-init (lambda () (super-init (lambda ()
(set! wx (make-object wx-radio-box% this this (set! wx (make-object wx-radio-box% this this
@ -2381,6 +2395,11 @@
[get-value (lambda () (send wx get-value))] [get-value (lambda () (send wx get-value))]
[set-value (lambda (v) [set-value (lambda (v)
(check-slider-integer '(method slider% set-value) v) (check-slider-integer '(method slider% set-value) v)
(unless (<= min-val v max-val)
(raise-mismatch-error (who->name '(method slider% set-value))
(format "slider's range is ~a to ~a; cannot set the value to: "
min-val max-val)
v))
(send wx set-value v))]) (send wx set-value v))])
(sequence (sequence
(super-init (lambda () (super-init (lambda ()
@ -2403,6 +2422,11 @@
[get-value (lambda () (send wx get-value))] [get-value (lambda () (send wx get-value))]
[set-value (lambda (v) [set-value (lambda (v)
(check-range-integer '(method gauge% set-value) v) (check-range-integer '(method gauge% set-value) v)
(when (> v (send wx get-range))
(raise-mismatch-error (who->name '(method gauge% set-value))
(format "gauge's range is only ~a; cannot set the value to: "
(send wx get-range))
v))
(send wx set-value v))] (send wx set-value v))]
[get-range (lambda () (send wx get-range))] [get-range (lambda () (send wx get-range))]
[set-range (lambda (v) [set-range (lambda (v)
@ -2434,14 +2458,24 @@
[append (lambda (i) (send wx append i))] [append (lambda (i) (send wx append i))]
[clear (lambda () (send wx clear))] [clear (lambda () (send wx clear))]
[get-number (lambda () (send wx number))] [get-number (lambda () (send wx number))]
[get-string (lambda (n) (send wx get-string n))] [get-string (lambda (n) (check-item 'get-string n) (send wx get-string n))]
[get-selection (lambda () (and (positive? (get-number)) (-1=>false (send wx get-selection))))] [get-selection (lambda () (and (positive? (send wx number)) (-1=>false (send wx get-selection))))]
[get-string-selection (lambda () (and (positive? (get-number)) (send wx get-string-selection)))] [get-string-selection (lambda () (and (positive? (send wx number)) (send wx get-string-selection)))]
[set-selection (lambda (s) (send wx set-selection s))] [set-selection (lambda (s) (check-item 'set-selection s) (send wx set-selection s))]
[set-string-selection (lambda (s) (send wx set-string-selection s))] [set-string-selection (lambda (s) (unless (send wx set-string-selection s)
(raise-mismatch-error (who->name '(method list-control<%> set-string-selection))
"no item matching the given string: " s)))]
[find-string (lambda (x) (-1=>false (send wx find-string x)))]) [find-string (lambda (x) (-1=>false (send wx find-string x)))])
(private (private
[wx #f]) [wx #f]
[check-item
(lambda (method n)
(check-non-negative-integer `(method list-control<%> ,method) n)
(let ([m (send wx number)])
(unless (< n m)
(raise-mismatch-error (who->name `(method list-control<%> ,method))
(format "control only has ~a items; given: " m)
n))))])
(sequence (sequence
(super-init (lambda () (set! wx (mk-wx)) wx) label parent #f)))) (super-init (lambda () (set! wx (mk-wx)) wx) label parent #f))))
@ -2474,21 +2508,29 @@
[(i) (super-append i)] [(i) (super-append i)]
[(i d) (send wx append i d)])]) [(i d) (send wx append i d)])])
(public (public
[delete (lambda (n) (send wx delete n))] [delete (lambda (n) (check-item 'delete n) (send wx delete n))]
[get-data (lambda (n) (send wx get-data n))] [get-data (lambda (n) (check-item 'get-data n) (send wx get-data n))]
[get-selections (lambda () (send wx get-selections))] [get-selections (lambda () (send wx get-selections))]
[number-of-visible-items (lambda () (send wx number-of-visible-items))] [number-of-visible-items (lambda () (send wx number-of-visible-items))]
[is-selected? (lambda (n) (send wx selected? n))] [is-selected? (lambda (n) (check-item 'is-selected? n) (send wx selected? n))]
[set (lambda (l) (send wx set l))] [set (lambda (l) (send wx set l))]
[set-string (lambda (n d) (send wx set-string n d))] [set-string (lambda (n d) (check-item 'set-string n) (send wx set-string n d))]
[set-data (lambda (n d) (send wx set-data n d))] [set-data (lambda (n d) (check-item 'set-data n) (send wx set-data n d))]
[get-first-visible-item (lambda () (send wx get-first-item))] [get-first-visible-item (lambda () (send wx get-first-item))]
[set-first-visible-item (lambda (n) (send wx set-first-visible-item n))] [set-first-visible-item (lambda (n) (check-item 'set-first-visible-item n) (send wx set-first-visible-item n))]
[select (case-lambda [select (case-lambda
[(n) (send wx set-selection n)] [(n) (check-item 'select n) (send wx set-selection n)]
[(n on?) (send wx set-selection n on?)])]) [(n on?) (check-item 'select n) (send wx set-selection n on?)])])
(private (private
[wx #f]) [wx #f]
[check-item
(lambda (method n)
(check-non-negative-integer `(method list-box% ,method) n)
(let ([m (send wx number)])
(unless (< n m)
(raise-mismatch-error (who->name `(method list-box% ,method))
(format "list only has ~a items; given: " m)
n))))])
(sequence (sequence
(super-init (lambda () (super-init (lambda ()
(let-values ([(kind style) (let-values ([(kind style)
@ -2580,8 +2622,7 @@
[(h-pixels v-pixels x-len y-len x-page y-page x-val y-val) [(h-pixels v-pixels x-len y-len x-page y-page x-val y-val)
(set-scrollbars h-pixels v-pixels x-len y-len x-page y-page x-val y-val #t)] (set-scrollbars h-pixels v-pixels x-len y-len x-page y-page x-val y-val #t)]
[(h-pixels v-pixels x-len y-len x-page y-page x-val y-val man?) [(h-pixels v-pixels x-len y-len x-page y-page x-val y-val man?)
(send wx set-scrollbars (send wx set-scrollbars h-pixels v-pixels x-len y-len x-page y-page x-val y-val man?)])])
h-pixels v-pixels x-len y-len x-page y-page x-val y-val man?)])])
set-scrollbars)] set-scrollbars)]
[get-scroll-pos (lambda (d) (send wx get-scroll-pos d))] [get-scroll-pos (lambda (d) (send wx get-scroll-pos d))]
@ -2606,7 +2647,8 @@
(sequence (sequence
(check-container-parent 'editor-canvas parent) (check-container-parent 'editor-canvas parent)
(check-instance '(constructor editor-canvas) internal-editor<%> "text% or pasteboard%" #t buffer) (check-instance '(constructor editor-canvas) internal-editor<%> "text% or pasteboard%" #t buffer)
(check-style '(constructor editor-canvas) #f '(hide-vscroll hide-hscroll no-vscroll no-hscroll) style)) (check-style '(constructor editor-canvas) #f '(hide-vscroll hide-hscroll no-vscroll no-hscroll) style)
((check-bounded-integer 1 10000) '(constructor editor-canvas) scrolls-per-page))
(private (private
[force-focus? #f] [force-focus? #f]
[scroll-to-last? #f] [scroll-to-last? #f]
@ -2635,9 +2677,9 @@
[set-line-count [set-line-count
(lambda (n) (lambda (n)
(unless (or (not n) (and (number? n) (integer? n) (<= 1 100))) (unless (or (not n) (and (number? n) (integer? n) (exact? n) (<= 1 100)))
(raise-type-error (who->name '(method editor-canvas% set-line-count)) (raise-type-error (who->name '(method editor-canvas% set-line-count))
"integer in [1, 100]" "exact integer in [1, 100]"
n)) n))
(send wx set-line-count n))] (send wx set-line-count n))]
@ -3868,9 +3910,9 @@
(define (check-bounded-integer min max) (define (check-bounded-integer min max)
(lambda (who range) (lambda (who range)
(unless (and (number? range) (integer? range) (<= min range max)) (unless (and (number? range) (integer? range) (exact? range) (<= min range max))
(raise-type-error (who->name who) (raise-type-error (who->name who)
(format "integer in [~a, ~a]" min max) (format "exact integer in [~a, ~a]" min max)
range)))) range))))
(define (check-range-integer who range) (check-bounded-integer 0 10000)) (define (check-range-integer who range) (check-bounded-integer 0 10000))
@ -3880,8 +3922,8 @@
(define (check-margin-integer who range) (check-bounded-integer 0 1000)) (define (check-margin-integer who range) (check-bounded-integer 0 1000))
(define (check-non-negative-integer who i) (define (check-non-negative-integer who i)
(unless (and (number? i) (integer? i) (not (negative? i))) (unless (and (number? i) (integer? i) (exact? i) (not (negative? i)))
(raise-type-error (who->name who) "non-negative integer" i))) (raise-type-error (who->name who) "non-negative exact integer" i)))
(define (check-dimension who d) (define (check-dimension who d)
(when d (check-range-integer who d))) (when d (check-range-integer who d)))