[cells-gtk-cvs] CVS update: root/cells-gtk/layout.lisp
Peter Denno
pdenno at common-lisp.net
Tue Jan 3 18:58:55 UTC 2006
Update of /project/cells-gtk/cvsroot/root/cells-gtk
In directory common-lisp.net:/tmp/cvs-serv29248/root/cells-gtk
Modified Files:
layout.lisp
Log Message:
Stuff for divider position and checking whether page already is displayed (or something like that).
Date: Tue Jan 3 19:58:55 2006
Author: pdenno
Index: root/cells-gtk/layout.lisp
diff -u root/cells-gtk/layout.lisp:1.5 root/cells-gtk/layout.lisp:1.6
--- root/cells-gtk/layout.lisp:1.5 Sun May 29 23:08:22 2005
+++ root/cells-gtk/layout.lisp Tue Jan 3 19:58:54 2006
@@ -76,7 +76,13 @@
(y-pad kid))))))
(def-widget hpaned ()
- () () ())
+ ((divider-pos :accessor divider-pos :initarg :divider-pos :initform (c-in 0)))
+ ()
+ ())
+
+(def-c-output divider-pos ((self hpaned))
+ (when new-value
+ (gtk-paned-set-position (id self) new-value)))
(def-c-output .kids ((self hpaned))
(when new-value
@@ -90,7 +96,13 @@
#+clisp (call-next-method))
(def-widget vpaned ()
- () () ())
+ ((divider-pos :accessor divider-pos :initarg :divider-pos :initform (c-in 0)))
+ ()
+ ())
+
+(def-c-output divider-pos ((self vpaned))
+ (when new-value
+ (gtk-paned-set-position (id self) new-value)))
(def-c-output .kids ((self vpaned))
(when new-value
@@ -184,7 +196,7 @@
#+clisp (call-next-method))
(def-widget notebook ()
- ((tab-labels :accessor tab-labels :initarg :tab-labels :initform nil)
+ ((tab-labels :accessor tab-labels :initarg :tab-labels :initform (c-in nil))
(tab-labels-widgets :accessor tab-labels-widgets :initform (c-in nil))
(show-page :accessor show-page :initarg :show-page :initform (c-in 0))
(tab-pos :accessor tab-pos :initarg :tab-pos :initform (c-in nil)))
@@ -205,16 +217,22 @@
(:bottom 3)
(t 2)))))
+(defun notebook-contains-page-p (notebook widget &aux (wid (pointer-address (id widget))))
+ (loop for i from 1 to (gtk-notebook-get-n-pages (id notebook))
+ for page = (gtk-notebook-get-nth-page (id notebook) (1- i))
+ when (= wid (pointer-address page)) return t))
+
(def-c-output show-page ((self notebook))
(when (and new-value (>= new-value 0) (< new-value (length (kids self))))
(setf (current-page self) new-value)))
(def-c-output .kids ((self notebook))
- (dolist (widget (tab-labels-widgets self))
- (not-to-be widget))
+ ;(dolist (widget (tab-labels-widgets self)) ;; This was from the original code.
+ ; (not-to-be widget)) ;; It causes errors.
(loop for kid in new-value
for pos from 0
- for label = (nth pos (tab-labels self)) do
+ for label = (nth pos (tab-labels self))
+ unless (notebook-contains-page-p self kid) do
(let ((lbl (and label (make-be 'label :text label))))
(when lbl (push lbl (tab-labels-widgets self)))
(gtk-notebook-append-page (id self) (id kid) (and lbl (id lbl)))))
More information about the Cells-gtk-cvs
mailing list