Update of /project/cello/cvsroot/cello In directory clnet:/tmp/cvs-serv9119
Modified Files: cello-magick.lisp cello-window.lisp control.lisp ctl-selectable.lisp ctl-toggle.lisp focus-navigation.lisp focus-utilities.lisp focus.lisp image.lisp ix-styled.lisp ix-text.lisp ix-togl.lisp lighting.lisp mouse-click.lisp window-utilities.lisp wm-mouse.lisp Log Message: nothing special
--- /project/cello/cvsroot/cello/cello-magick.lisp 2007/02/02 20:11:00 1.7 +++ /project/cello/cvsroot/cello/cello-magick.lisp 2008/06/16 12:39:20 1.8 @@ -53,6 +53,8 @@ (ogl::glec :snapshot) (record-frame recording pixels columns rows))))
+(export! ix-image-file) + (defmd ix-image-file (ix-view) (:documentation "Quick way to drop a view of a binary JPG, PNG, GIF, etc into a Cello window") image-path --- /project/cello/cvsroot/cello/cello-window.lisp 2008/04/11 09:22:46 1.8 +++ /project/cello/cvsroot/cello/cello-window.lisp 2008/06/16 12:39:20 1.9 @@ -33,6 +33,7 @@ :lb (c-in (scr2log -800)) ;; :tick-count (c-in (os-tickcount)) :event-handler 'cello-window-event-handler + :registry? t ))
(defmethod path ((self cello-window)) ".") --- /project/cello/cvsroot/cello/control.lisp 2008/04/11 09:22:46 1.10 +++ /project/cello/cvsroot/cello/control.lisp 2008/06/16 12:39:20 1.11 @@ -15,7 +15,7 @@ |#
(in-package :cello) -(export! control enabled ^enabled ct-action-lambda +(export! control enabled ^enabled ct-action-lambda sound ^sound tool-tip tool-tip-show? click-evt ^click-evt ^mouse-over? mouse-over?)
(defmd control () @@ -26,12 +26,11 @@ (ct-action nil :cell nil) sound click-repeat-p - #+hunh? (click-repeat-event (c? (bwhen (c (^click-evt)) - (let ((age (f-sensitivity :age (0.1) - (click-age c )))) - (when (> age 0.5) age))))) + (mouse-up-handler nil :documentation "Menus use this") (click-evt (c-in nil)) + (double-click-evt (c-in nil)) + (double-click-action (c-in nil)) (click-tolerance (mkv2 0 0) :cell nil) (key-evt nil :cell :ephemeral) (enabled t) @@ -49,6 +48,17 @@
(defmethod user-errors (other) (declare (ignore other)))
+(defmethod do-double-click ((self control) ) + (b-when a (^double-click-action) + (trc "control sees defmethod" self a) + (funcall a self) + t)) ;; ie, handled + +(export! control-trigger) +(defun control-trigger (self &key even-if-disabled) + (when (or even-if-disabled (^enabled)) + (funcall (ct-action self) self nil))) + (defmethod tool-tip-show? (other) (declare (ignore other)) nil) @@ -65,12 +75,6 @@
(defmethod kb-selector (other) (declare (ignore other)) nil)
-(defobserver click-repeat-event () - (with-integrity (:change :obs-click-repeat-event) - (when new-value - (bwhen (f (ct-action self)) - (funcall f self (os-event (^click-evt))))))) ;; /// make fresh event with new time - (defmethod enabled (other)(assert other) nil)
(defmethod do-cello-keydown ((self control) k event) --- /project/cello/cvsroot/cello/ctl-selectable.lisp 2008/04/11 09:22:47 1.5 +++ /project/cello/cvsroot/cello/ctl-selectable.lisp 2008/06/16 12:39:20 1.6 @@ -31,9 +31,10 @@
(defmd ct-selector-ex (ct-selector) ;; mixin at any node containing ct.selectable.ex's (selected-key (c-in nil)) - :selection (c? (let (sel) + :selection (c? (ekx new-seletcion!!!!!! + let (sel) (bwhen (skey (^selected-key)) - ;(trc "sel rule runs" self skey .cache) + (trc "sel rule runs" self skey .cache) (fm-traverse self (lambda (node) (when (typep node 'ct-selectable-ex) @@ -113,7 +114,7 @@ (defmd ct-selectable-ex (control) (selected-key (c-in nil)) (selectedp (c? (bwhen (selector (ct-selector self)) - ;;(trc "selectable-ex selectedp sees" (selection selector)) + (trc "selectable-ex selectedp sees" self (^value) selector (selected-key selector) (selection selector)) (bwhen (skey (selected-key selector)) (eql (^selected-key) skey))))) :ct-action 'ct-selectable-ex-act) --- /project/cello/cvsroot/cello/ctl-toggle.lisp 2008/04/11 09:22:47 1.12 +++ /project/cello/cvsroot/cello/ctl-toggle.lisp 2008/06/16 12:39:20 1.13 @@ -93,7 +93,7 @@ :transition-fn 'ctfsm-transition-fn
:ct-action (ct-action-lambda - (trc "twister ct-action" self event) + ;(trc "twister ct-action" self event) (with-integrity (:change :ctfsm-action) (let ((newv (funcall (transition-fn self) self (value self) (states self)))) (ct-fsm-assume-value self newv)))))) --- /project/cello/cvsroot/cello/focus-navigation.lisp 2008/04/11 09:22:47 1.3 +++ /project/cello/cvsroot/cello/focus-navigation.lisp 2008/06/16 12:39:20 1.4 @@ -19,7 +19,7 @@ ;_____________________ N a v i g a t i o n ____________________ ; (defun focus-navigate (old new &optional leave-old) - #+xxx (trc "focus-navigate > old, new" old new) + #+x42 (trc "focus-navigate > old, new" old new) ;; (c-assert new) ;; 990810kt i don't remember if we navigate to nil (should tho) ///
(when (eql old new) --- /project/cello/cvsroot/cello/focus-utilities.lisp 2008/04/11 09:22:47 1.6 +++ /project/cello/cvsroot/cello/focus-utilities.lisp 2008/06/16 12:39:20 1.7 @@ -38,20 +38,26 @@ (focus-find-first self) (focus-find-first self :tab-stop-only nil)))
+(export! focus-on) + (defmethod focus-on (self &optional focuser) (c-assert (or self focuser)) #+xxx (trc "focus.on self, focuser" self focuser .focuser (focus-state .focuser)) ;; (break "focus.on self, focuser") (setf (focus (or focuser .focuser)) self))
-(defmethod focus-gain (self) - (declare (ignore self))) - -(defmethod focus-lose (self new-focus) - (if self - (focus-lose (fm-parent self) new-focus) - t) ;; means "yielded" - ) +(defgeneric focus-gain (self) + (:method (self) (declare (ignore self))) + (:method ((self focus)) (setf (^focused-on) t))) + +(defgeneric focus-lose (self new-focus) + (:method (self new-focus) (if self + (focus-lose (fm-parent self) new-focus) + t)) + (:method :around ((self focus) new-focus) + (declare (ignore new-focus)) + (when (call-next-method) + (setf (^focused-on) nil))))
;________________________________ I d l i n g _______________________ ; --- /project/cello/cvsroot/cello/focus.lisp 2008/04/11 09:22:47 1.7 +++ /project/cello/cvsroot/cello/focus.lisp 2008/06/16 12:39:20 1.8 @@ -22,10 +22,10 @@
;;; also got FFComposite rule deciding it was active if any kid was
-arrange for Focuser to process clicks and keys first, then mebbe dump into dvk, do-click/do-double-click +arrange for Focuser to process clicks and keys first, then mebbe dump into dvk, bottom up from focus/imageunder
-arrange for Controller to process clicks first, then mebbe dump into do-click/do-double-click +arrange for Controller to process clicks first, then mebbe dump into bottom up from focus/imageunder
add finalization for radio button (look at others, see if ICR can ne de-celled @@ -68,6 +68,8 @@ (focus-gain new-focus)) (call-next-method)))
+(export! focused-on ^focused-on) + (defmodel focus () ((focus-thickness :cell nil :initarg :focus-thickness :initform (u96ths 3) @@ -111,7 +113,9 @@
(defgeneric focus-handle-keysym (self keysym) (:method :around (self keysym) - (unless (call-next-method) + (progn ;; unless + (call-next-method) + ;; (trc "unhandled so parent?" .parent) (when .parent (focus-handle-keysym .parent keysym)))) (:method (self keysym) (declare (ignore self keysym)) nil)) --- /project/cello/cvsroot/cello/image.lisp 2008/04/11 09:22:47 1.19 +++ /project/cello/cvsroot/cello/image.lisp 2008/06/16 12:39:20 1.20 @@ -44,7 +44,7 @@ recording (snapshot-pathnamer nil :cell nil) (snapshot-release-id :initarg :snapshot-release-id - :initform (c-in nil) :accessor snapshot-release-id) + :initform nil #+please (c-in nil) :accessor snapshot-release-id) ps3 ; persistence
; cached calculations @@ -180,6 +180,7 @@ :fm-parent *parent* :kids (c? (the-kids ,@dd-kids))))
+(export! ix-kid-sized) (defmodel ix-kid-sized (geo-kid-sized ix-family)()) (defmodel ix-inline (geo-inline ix-view)()) (defobserver .kids ((self ix-inline)) @@ -349,7 +350,7 @@ (dbg-awake-num ap 'lb) ) #+nope (unless (>= (lb ap) (lt ap)) ;; this happens normally as structures get "collapsed" etc - (inspect ap) + (error 'x-systemfatal :app-func 'dbg-awake :error-text "Bottom less than top: self, lT, height, lB" :other-data (list ap (lt ap) (l-height ap) (lb ap)))) (call-next-method)) --- /project/cello/cvsroot/cello/ix-styled.lisp 2008/04/11 09:22:48 1.8 +++ /project/cello/cvsroot/cello/ix-styled.lisp 2008/06/16 12:39:20 1.9 @@ -50,6 +50,7 @@ `(call-with-styles (list ,@custom-styles) (lambda () ,@body)))
(defun call-with-styles (styles styled-fn) + (setf *styles* styles) ;; need when showing off from repl (let ((*styles* styles)) (funcall styled-fn)))
@@ -111,6 +112,7 @@ ;; until 2008-03-30 this next was only done for extruded case above (ix-string-width self (display-text$ self))) ;; ugh. make better. subclass must have display-text$
+(export! ix-string-width)
(defun ix-string-width (self string) (c-assert (s-canvas) () "~a not contained by any canvas" self) --- /project/cello/cvsroot/cello/ix-text.lisp 2008/04/11 09:22:48 1.12 +++ /project/cello/cvsroot/cello/ix-text.lisp 2008/06/16 12:39:21 1.13 @@ -138,6 +138,18 @@ (defun find-menu (id) (fm-find-one *menus* id :must-find t :skip-tree nil :global-search nil :test #'cells::true-that))
+(defun make-string-tool-tip (self s) + (make-kid 'ix-text + :inset 3 + :style-id :label + :pre-layer (with-layers + +yellow+ + :fill + (:frame-3d :edge-raised + :thickness 2) + +black+) + :text$ s)) + (defmd tool-tip (ix-stack) :visible (c? (^kids)) :kids (c? (the-kids @@ -145,16 +157,10 @@ (when (tool-tip-show? v) (typecase (tool-tip v) (null) - (string (make-kid 'ix-text - :inset 3 - :style-id :label - :pre-layer (with-layers +yellow+ :fill - (:frame-3d :edge-raised - :thickness 2) - +black+) - :text$ (tool-tip v))) + (string + (make-string-tool-tip self (tool-tip v))) (t (funcall (tool-tip v) self v))))))) - + ; ; tedious geometry stuff to keep tool tip ; visible yet not eclipsed by mouse pointer @@ -165,9 +171,10 @@ ((^visible) .retog. (or fixed (setf fixed - (if (> (+ 16 (v2-h mp) (l-width self)) (lr .og.)) - (px-maintain-pr (- (v2-h mp) 16)) - (+ 16 (v2-h mp)))))) + (let ((pref (+ 6 (v2-h mp)))) + (if (> (+ pref (l-width self)) (lr .og.)) ;; don't sail off to right of togl + (px-maintain-pr (lr .og.) #+hunh? (- (v2-h mp) 16)) + pref))))) (t (setf fixed nil)))))) :py (let (fixed) (c? (bwhen (mp (mouse-pos .og.)) @@ -176,5 +183,5 @@ .retog. (or fixed (setf fixed (min (- (lt .og.)(l-height self)) - (py-maintain-pb (v2-v mp)))))) + (+ 6 (py-maintain-pb (v2-v mp))))))) (t (setf fixed nil))))))) --- /project/cello/cvsroot/cello/ix-togl.lisp 2008/04/11 09:22:49 1.18 +++ /project/cello/cvsroot/cello/ix-togl.lisp 2008/06/16 12:39:21 1.19 @@ -35,7 +35,7 @@ (without-c-dependency (find-ix-under self pos))))))) (:documentation "Mixin to have mouse view tracked in a subtree of the window, mostly so other GUI layout can depend on -the sub-tree layout without creating a cyclic dependency, as would happen if the whole window were watched.")) +the sub-tree layout without creating a cyclic dependency, as would happen iof the whole window were watched."))
(defmd ix-togl (mouse-view-tracker #+not focuser ogl-lit-scene control ogl-shared-resource-tender togl ix-view) (redisplayp nil :cell nil) @@ -57,7 +57,7 @@
(mouse-up-evt (c-in nil) :cell :ephemeral) (mouse-down-evt (c-in nil) :cell :ephemeral) - ;; FNYI (double-click? (c-in nil)) + (double-click-evt (c-in nil) :cell :ephemeral)
(tick-count (c-in nil)) (tick-fine (c-in nil)) @@ -75,7 +75,14 @@ :cb-destroy (lambda (self) ;(trc "IX-TOGL being destoyed!!!!!!!!!!" self) (setf (togl-ptr self) nil) ;; new 2007-04-13 to avoid togl.c line 1039 crash closing window - (setf cells::*c-debug* t))) + ;; bad idea to do it this way, gotta get *istack* bound first: (setf cells::*c-debug* t) + )) + +(defmethod ctk::do-on-double-click-1 :before ((self ix-togl) &rest args) + (trc "IX-togl do-on-double-click-1 before" self (mouse-control self)) + (bif (mi (mouse-control self)) + (do-double-click mi ) + (do-double-click self )))
;;;(defobserver mouse-pos ((self ix-togl)) ;;; #+nah (when new-value @@ -125,26 +132,29 @@ (:KeyPress ) (:KeyRelease ) (:ButtonPress - (setf (mouse-pos self) (mkv2 (ctk::xbe-x xe) - (- (ctk::xbe-y xe)))) ; trigger mouseview recalc - (setf (mouse-down-evt self) (eko (nil "mousedown!!!" (ctk::xbe button xe)) - (make-os-event - :modifiers (keyboard-modifiers .tkw) - :where (mouse-pos self) - :realtime (now) - :c-event xe))) - (when (eql 3 (ctk::xbe button xe)) - (when (^mouse-view) - (inspect (^mouse-view))))) + (case (xbe-button xe) + (1 (setf (mouse-pos self) (mkv2 (xbe-x xe) + (- (xbe-y xe)))) ; trigger mouseview recalc + (setf (mouse-down-evt self) (eko (nil "mousedown!!!" (ctk::xbe button xe)) + (make-os-event + :modifiers (keyboard-modifiers .tkw) + :where (mouse-pos self) + :realtime (now) + :c-event xe)))) + (3 (when (^mouse-view) + (inspect (^mouse-view)))))) + (:ButtonRelease - (setf (mouse-pos self) (mkv2 (ctk::xbe-x xe) - (- (ctk::xbe-y xe)))) ; trigger mouseview recalc - (setf (mouse-up-evt self) (eko (nil "mouse up!!!") - (make-os-event - :modifiers (keyboard-modifiers .tkw) - :where (mouse-pos self) - :realtime (now) - :c-event xe)))) + (case (xbe-button xe) + (1 (setf (mouse-pos self) (mkv2 (ctk::xbe-x xe) + (- (ctk::xbe-y xe)))) ; trigger mouseview recalc + (with-metrics (nil nil "mouse up evt") + (setf (mouse-up-evt self) (eko (nil "mouse up!!!") + (make-os-event + :modifiers (keyboard-modifiers .tkw) + :where (mouse-pos self) + :realtime (now) + :c-event xe)))))))
(:MotionNotify (trc nil "setting mouse pos!!!!" (ctk::xbe-x xe) (- (ctk::xbe-y xe))) @@ -186,7 +196,6 @@ (dolist (light new-value) (md-awaken light)))
- (defmethod ogl-node-window ((self ix-togl)) self)
@@ -248,7 +257,7 @@ (defobserver mouse-down-evt (self m-down) .retog. (when m-down - #+xxx (trcx mousedown self m-down (mouse-control self)) + #+x (trcx mousedown self m-down (mouse-control self)) (bwhen (clickee (mouse-control self)) (trc nil "mousedown clickee, clickw" clickee self) (mk-part :click (mouse-click) ;; wow, a free-floating part --- /project/cello/cvsroot/cello/lighting.lisp 2008/04/11 09:22:50 1.9 +++ /project/cello/cvsroot/cello/lighting.lisp 2008/06/16 12:39:21 1.10 @@ -92,7 +92,7 @@ (ix-render-light self)))) (loop for light in (fixed-lighting self) do (ix-render-light light)) - (when (and (not lights) (emergency-lighting self)) + (when (not lights) (dolist (e-light (emergency-lighting self)) (ix-render-light e-light)))))
--- /project/cello/cvsroot/cello/mouse-click.lisp 2008/04/11 09:22:50 1.9 +++ /project/cello/cvsroot/cello/mouse-click.lisp 2008/06/16 12:39:24 1.10 @@ -48,7 +48,7 @@ (mouse-pos (click-window self)))))))
(clicked :reader clicked - :initform (c? (trc nil "clicked?> typeof clickw" (click-window self) (type-of (click-window self))) + :initform (c? ;(trc "clicked?> typeof clickw" (click-window self) (type-of (click-window self))) (when (typep (click-window self) 'model) (trc nil "clicked?> asking clickcompleted") (bwhen (up (^click-completed)) --- /project/cello/cvsroot/cello/window-utilities.lisp 2008/04/11 09:22:50 1.10 +++ /project/cello/cvsroot/cello/window-utilities.lisp 2008/06/16 12:39:24 1.11 @@ -18,12 +18,12 @@
;-------------------- double click -----------------------------------
-(defmethod do-double-click :around (self os-event &rest iargs &key &allow-other-keys) +(defmethod do-double-click :around (self) (when self (or (call-next-method) - (apply #'do-double-click (fm-parent self) os-event iargs)))) + (do-double-click (fm-parent self)))))
-(defmethod do-double-click (self os-event &key) +(defmethod do-double-click (self) (declare (ignorable self os-event)) ;;(trc "*** No special do-double-click for ix-view, event:" self osEvent) nil) --- /project/cello/cvsroot/cello/wm-mouse.lisp 2006/11/04 20:56:30 1.6 +++ /project/cello/cvsroot/cello/wm-mouse.lisp 2008/06/16 12:39:24 1.7 @@ -16,21 +16,6 @@
(in-package :cello)
-(defmethod do-click :around (self os-event) - (declare (ignorable os-event)) - (when self - (or (call-next-method) - (do-click (fm-parent self) os-event)))) - -(defmethod do-click (self os-event) - (declare (ignorable self os-event)) - nil) - -; -; ------------ double click --------------------------------------- -; - - (defstruct (os-event (:conc-name nil)) modifiers