[graphic-forms-cvs] r36 - in trunk/src: tests/uitoolkit uitoolkit/widgets
junrue at common-lisp.net
junrue at common-lisp.net
Mon Mar 13 02:06:21 UTC 2006
Author: junrue
Date: Sun Mar 12 21:06:21 2006
New Revision: 36
Modified:
trunk/src/tests/uitoolkit/layout-tester.lisp
trunk/src/uitoolkit/widgets/flow-layout.lisp
trunk/src/uitoolkit/widgets/layout.lisp
trunk/src/uitoolkit/widgets/menu-language.lisp
trunk/src/uitoolkit/widgets/menu.lisp
trunk/src/uitoolkit/widgets/widget-generics.lisp
Log:
enhance append-submenu so it can take callback or dispatcher
Modified: trunk/src/tests/uitoolkit/layout-tester.lisp
==============================================================================
--- trunk/src/tests/uitoolkit/layout-tester.lisp (original)
+++ trunk/src/tests/uitoolkit/layout-tester.lisp Sun Mar 12 21:06:21 2006
@@ -157,6 +157,12 @@
(gfw:show victim (not (gfw:visible-p victim)))
(gfw:layout *layout-tester-win*))))
+(defun check-flow-orient-item (disp menu time)
+ (declare (ignore disp time))
+ (let ((layout (gfw:layout-manager *layout-tester-win*)))
+ (gfw:check (gfw:item-at menu 0) (find :horizontal (gfw:style-of layout)))
+ (gfw:check (gfw:item-at menu 1) (find :vertical (gfw:style-of layout)))))
+
(defun set-flow-horizontal (disp item time rect)
(declare (ignorable disp item time rect))
(let ((layout (gfw:layout-manager *layout-tester-win*)))
@@ -191,9 +197,9 @@
:callback #'set-flow-vertical))))
(spacing-menu (gfw:defmenusystem ((:item "Decrease")
(:item "Increase")))))
- (gfw:append-submenu menu "Margin" margin-menu)
- (gfw:append-submenu menu "Orientation" orient-menu)
- (gfw:append-submenu menu "Spacing" spacing-menu)
+ (gfw:append-submenu menu "Margin" margin-menu nil)
+ (gfw:append-submenu menu "Orientation" orient-menu #'check-flow-orient-item)
+ (gfw:append-submenu menu "Spacing" spacing-menu nil)
(setf it (gfw:append-item menu "Fill" nil nil))
(gfw:check it t)
(gfw:append-item menu "Wrap" nil #'(lambda (a0 a1 a2 a3) (format t "wrap: ~a~%" a2)))))
Modified: trunk/src/uitoolkit/widgets/flow-layout.lisp
==============================================================================
--- trunk/src/uitoolkit/widgets/flow-layout.lisp (original)
+++ trunk/src/uitoolkit/widgets/flow-layout.lisp Sun Mar 12 21:06:21 2006
@@ -87,7 +87,7 @@
:size size
:location pnt))
entries))))
- (reverse entries)))
+ (nreverse entries)))
;;;
;;; methods
Modified: trunk/src/uitoolkit/widgets/layout.lisp
==============================================================================
--- trunk/src/uitoolkit/widgets/layout.lisp (original)
+++ trunk/src/uitoolkit/widgets/layout.lisp Sun Mar 12 21:06:21 2006
@@ -45,7 +45,6 @@
(hdwp nil))
(when (and (layout-p win) layout)
(setf kids (compute-layout layout win width-hint height-hint))
-(loop for x in kids do (format t "~a~%" (cdr x)))
(setf hdwp (gfs::begin-defer-window-pos (length kids)))
(loop for k in kids
do (let* ((rect (cdr k))
Modified: trunk/src/uitoolkit/widgets/menu-language.lisp
==============================================================================
--- trunk/src/uitoolkit/widgets/menu-language.lisp (original)
+++ trunk/src/uitoolkit/widgets/menu-language.lisp Sun Mar 12 21:06:21 2006
@@ -211,9 +211,9 @@
(vector-push-extend it (items owner))))
(defmethod define-submenu ((gen win32-menu-generator) label dispatcher disabled)
- (let* ((submenu (make-instance 'menu :handle (gfs::create-popup-menu) :dispatcher dispatcher))
+ (let* ((submenu (make-instance 'menu :handle (gfs::create-popup-menu)))
(parent (first (menu-stack-of gen)))
- (item (append-submenu parent label submenu)))
+ (item (append-submenu parent label submenu dispatcher)))
(push submenu (menu-stack-of gen))
(enable item (not disabled))))
Modified: trunk/src/uitoolkit/widgets/menu.lisp
==============================================================================
--- trunk/src/uitoolkit/widgets/menu.lisp (original)
+++ trunk/src/uitoolkit/widgets/menu.lisp Sun Mar 12 21:06:21 2006
@@ -141,7 +141,7 @@
(vector-push-extend item (items owner))
item))
-(defmethod append-submenu ((parent menu) text (submenu menu))
+(defmethod append-submenu ((parent menu) text (submenu menu) disp)
(if (or (gfi:disposed-p parent) (gfi:disposed-p submenu))
(error 'gfi:disposed-error))
(let* ((tc (thread-context))
@@ -154,6 +154,16 @@
(put-menuitem tc item)
(vector-push-extend item (items parent))
(put-widget tc submenu)
+ (cond
+ ((null disp))
+ ((functionp disp)
+ (let ((class (define-dispatcher `((event-activate . ,disp)))))
+ (setf (dispatcher submenu) (make-instance (class-name class)))))
+ ((typep disp 'gfw:event-dispatcher)
+ (setf (dispatcher submenu) disp))
+ (t
+ (error 'gfs:toolkit-error
+ :detail "callback must be a function, instance of gfw:event-dispatcher, or null")))
item))
(defun menu-cleanup-callback (menu item)
Modified: trunk/src/uitoolkit/widgets/widget-generics.lisp
==============================================================================
--- trunk/src/uitoolkit/widgets/widget-generics.lisp (original)
+++ trunk/src/uitoolkit/widgets/widget-generics.lisp Sun Mar 12 21:06:21 2006
@@ -48,7 +48,7 @@
(defgeneric append-item (object text image dispatcher)
(:documentation "Adds the new item with the specified text to the object, and returns the newly-created item."))
-(defgeneric append-submenu (object text submenu)
+(defgeneric append-submenu (object text submenu dispatcher)
(:documentation "Adds a submenu anchored to a parent menu and returns the corresponding item."))
(defgeneric background-color (object)
More information about the Graphic-forms-cvs
mailing list