Andy Chambers wrote:
Two questions...
- What's the best way to remove an observer that's been set on some slot?
My ide offers a gui display of all methods on a GF, in this case the gf being slot-value-observe. If I am feeling energetic I use that to hunt down the specific method and then (using the same gui) remove the method.
If I am not feeling energetic I delete the body of the one I want to lose, recompile so it still runs but does nothing, then delete altogether so on the next load from scratch it is fully gone.
- If there's an observer like
(defobserver image-files ((self widget)) (loop for (name file-pathname) in (set-difference new-value old-value :key 'car) do (tk-format `(:pre-make-tk ,self) "image create photo ~(~a.~a~) -file {~a} -height ~a -width ~a" (^path) name (namestring file-pathname) (^height)(^width))))
....can I make one that specializes on a subclass of widget that overrides the first? How does one do this?
No. Observers are progn in any lisp that supports progn method combination.
To get the desired effect, have one observer redispatch to another GF (perhaps observe-widget-image-files) and then use classic method combo for that and tailor functionality the old-fashioned way.
kenny