original commit: ad23bf94bb5b9e0c782d1e064f798d59d3af85cb
This commit is contained in:
Robby Findler 1999-10-24 00:01:51 +00:00
parent 80f948e9a6
commit bc42f68f99
3 changed files with 32 additions and 12 deletions

View File

@ -209,10 +209,12 @@
'framework:auto-set-wrap?)))
(private
[remove-callback
(preferences:add-callback
'framework:auto-set-wrap?
(lambda (p v)
(auto-wrap v)))])))
(preferences:add-callback
'framework:auto-set-wrap?
(let ([autowrap-mixin-pref-callback
(lambda (p v)
(auto-wrap v))])
autowrap-mixin-pref-callback))])))
(define file<%> (interface (-keymap<%>)))
(define file-mixin

View File

@ -1016,12 +1016,15 @@
(if v
(list rest-panel outer-info-panel)
(list rest-panel))))))])
(private
[memory-cleanup void]) ;; only for PLTers; used with memory-text
(override
[on-close
(lambda ()
(super-on-close)
(unregister-collecting-blit gc-canvas)
(close-panel-callback))])
(close-panel-callback)
(memory-cleanup))])
(public
[lock-status-changed
@ -1083,6 +1086,10 @@
[ec (make-object editor-canvas% panel memory-text '(no-hscroll no-vscroll))])
(determine-width "000000000" ec memory-text)
(update-text)
(set! memory-cleanup
(lambda ()
(send memory-text remove-canvas ec)
(send ec set-editor #f)))
(send panel stretchable-width #f))))
(private
[lock-message (make-object message%

View File

@ -14,11 +14,15 @@
[(windows) "mred.pre"]
[else ".mred.prefs"])))
(define-struct callbacks-ht (ht))
(define preferences (make-hash-table))
(define marshall-unmarshall (make-hash-table))
(define callbacks (make-hash-table))
(define callbacks (make-callbacks-ht (make-hash-table)))
(define defaults (make-hash-table))
(printf "hash-tables: ~s~n" (list preferences marshall-unmarshall (callbacks-ht-ht callbacks) defaults))
(define-struct un/marshall (marshall unmarshall))
(define-struct marshalled (data))
(define-struct pref (value))
@ -59,19 +63,26 @@
(define get-callbacks
(lambda (p)
(hash-table-get callbacks
(hash-table-get (callbacks-ht-ht callbacks)
p
(lambda () null))))
(define add-callback
(lambda (p callback)
(hash-table-put! callbacks p (append (get-callbacks p) (list callback)))
(printf "added callback (~s) for ~s~n" callback p)
(hash-table-put! (callbacks-ht-ht callbacks) p (append (get-callbacks p) (list callback)))
(lambda ()
(hash-table-put!
callbacks p
(mzlib:function:remove callback
(get-callbacks p)
eq?)))))
(callbacks-ht-ht callbacks)
p
(let loop ([callbacks (get-callbacks p)])
(cond
[(null? callbacks) null]
[else (if (eq? (car callbacks) callback)
(begin
(printf "removed callback (~s) for ~s~n" callback p)
(loop (cdr callbacks)))
(cons (car callbacks) (loop (cdr callbacks))))]))))))
(define check-callbacks
(lambda (p value)