Hi Peter,
sorry for that late reply. Due to a misbehaving progmailrc your last
mail was sorted into the cells-devel folder where I didn't read it.
Please find the following patched attached:
0001-Remove-clisp-hack.patch
Complete removes the clisp-call-next-method hack as I think
it's no longer needed at all. See below.
0002-In-cells3-def-c-output-was-renamed-to-defobserver.patch
Renames remaining occurrences of 'def-c-output'.
I wonder why there weren't any errors as the macro
was removed from cells3.
0003-Inactivate-optional-stuff-by-default.patch
Inactivate optional features (threads, cairo, opengl and
libcellsgtk) by default. I think it's more convenient to
activate those when needed instead of patching the .asd
files all the time. Test-gtk.asd still does exactly this.
> > 2. Also if used in a single threading environment (like clisp)
> > (g-thread-init...) and (gdk-threads-init) do get called which
> > results in an error.
>
> Hmm, I never changed that, I think. They were always called in
> cells-gtk if IIRC. However, if it does no harm to leave them out,
> then that seems the right thing to do.
>
> Are you on windows or linux? I'm just guessing, but it might be the
> case that it is a GTK issue and not a cells-gtk issue whether to call
> them: On linux GTK supports threads, so it might be necessary to call
> those (even if you don't use threads yourself). On windows it
> doesn't, so maybe you can't call them. In this case, we should
> condition on :unix vs. :windows. But again, I'm just guessing. If
> you're on linux, then forget everything I said.
I'm primarily on sbcl/linux. Recently I started to maintain the
project for clisp/windows. As far as I remember thought, I realized
the described problem have way down on clisp/linux.
> As to the call-next-method thing, the background is this:
>
> [...]
>
> I'd suggest you just go ahead and deactivate all
> those calls (e.g by conditioning on :no-progn-combination instead of
> :clisp), which should remove those warnings.
As mentioned above I decided against ':no-progn-combination'.
In my opinion the call-next-method hack is of little use since
'(:method-combination progn)' was removed for clisp in 'cells.lisp'.
Please tell me in case I'm wrong here so I can change the patch.
Thanks again (everybody)
Ingo
_______________________________________________________________
Schon gehört? Der neue WEB.DE MultiMessenger kann`s mit allen:
http://www.produkte.web.de/messenger/?did=3016
>From 6bb7cfe168470fe7fc8831a0f50e4fd0e1c4e73b Mon Sep 17 00:00:00 2001
From: Ingo Bormuth <[EMAIL PROTECTED]>
Date: Fri, 30 May 2008 20:50:43 +0200
Subject: [PATCH] Remove clisp hack:
CLisp used not to supports customized
method-combination for 'def-generic'.
As far as I can tell this shortcoming was
fixed in clisp v2.39. The equivalent hack
was removed from cells on 2006-06-11 by kt.
---
cells-gtk/actions.lisp | 5 ++---
cells-gtk/buttons.lisp | 6 ++----
cells-gtk/layout.lisp | 25 ++++++++-----------------
cells-gtk/menus.lisp | 9 +++------
cells-gtk/widgets.lisp | 6 ++----
5 files changed, 17 insertions(+), 34 deletions(-)
diff --git a/cells-gtk/actions.lisp b/cells-gtk/actions.lisp
index b9ca323..f280a4e 100644
--- a/cells-gtk/actions.lisp
+++ b/cells-gtk/actions.lisp
@@ -47,8 +47,7 @@
(dolist (kid old-value)
(gtk-ffi::gtk-action-group-remove-action (id self) (id kid)))
(dolist (kid new-value)
- (gtk-ffi::gtk-action-group-add-action-with-accel (id self) (id kid) (accel kid)))
- #+clisp (call-next-method))
+ (gtk-ffi::gtk-action-group-add-action-with-accel (id self) (id kid) (accel kid))))
(def-object ui-manager ()
((action-groups :accessor action-groups :initform (c-in nil))
@@ -78,4 +77,4 @@
:name "Action 2" :stock :network :label "Action 2" :accel "<Control>b")))
:kids (kids-list?
- (mk-label :text "Actions test"))))
\ No newline at end of file
+ (mk-label :text "Actions test")))
diff --git a/cells-gtk/buttons.lisp b/cells-gtk/buttons.lisp
index 192a3ac..ea1ae28 100644
--- a/cells-gtk/buttons.lisp
+++ b/cells-gtk/buttons.lisp
@@ -38,8 +38,7 @@
(defobserver .kids ((self button))
(assert-bin self)
(dolist (kid (kids self))
- (gtk-container-add (id self) (id kid)))
- #+clisp (call-next-method))
+ (gtk-container-add (id self) (id kid))))
(defobserver stock ((self button))
(when new-value
@@ -98,5 +97,4 @@
(defobserver .value ((self radio-button))
(when (and new-value (upper self box))
(with-integrity (:change 'radio-up-to-box)
- (setf (value (upper self box)) (md-name self))))
- #+clisp (call-next-method))
+ (setf (value (upper self box)) (md-name self)))))
diff --git a/cells-gtk/layout.lisp b/cells-gtk/layout.lisp
index 8734516..6f84960 100644
--- a/cells-gtk/layout.lisp
+++ b/cells-gtk/layout.lisp
@@ -30,8 +30,7 @@
(when new-value
(dolist (kid new-value)
(gtk-box-pack-start (id self) (id kid)
- (expand? kid) (fill? kid) (padding? kid)))
- #+clisp (call-next-method)))
+ (expand? kid) (fill? kid) (padding? kid)))))
(def-widget hbox (box)
() () ()
@@ -93,8 +92,7 @@
(and (cadr new-value)
(gtk-paned-add2 (id self) (id (make-be 'frame
:shadow 'in
- :kids (kids-list? (cadr new-value)))))))
- #+clisp (call-next-method))
+ :kids (kids-list? (cadr new-value))))))))
(def-widget vpaned ()
((divider-pos :accessor divider-pos :initarg :divider-pos :initform (c-in 0)))
@@ -113,9 +111,7 @@
(and (cadr new-value)
(gtk-paned-add2 (id self) (id (make-be 'frame
:shadow 'in
- :kids (kids-list? (cadr new-value)))))))
- #+clisp (call-next-method))
-
+ :kids (kids-list? (cadr new-value))))))))
(def-widget frame (container)
((shadow :accessor shadow? :initarg :shadow :initform nil)
@@ -143,8 +139,7 @@
(defobserver .kids ((self frame))
(assert-bin self)
(dolist (kid new-value)
- (gtk-container-add (id self) (id kid)))
- #+clisp (call-next-method))
+ (gtk-container-add (id self) (id kid))))
(def-widget aspect-frame (frame)
((xalign :accessor xalign :initarg :xalign :initform 0.5)
@@ -178,8 +173,7 @@
(defobserver .kids ((self expander))
(assert-bin self)
(dolist (kid new-value)
- (gtk-container-add (id self) (id kid)))
- #+clisp (call-next-method))
+ (gtk-container-add (id self) (id kid))))
(def-widget scrolled-window (container)
()
@@ -194,8 +188,7 @@
(dolist (kid new-value)
(if (member (class-name (class-of kid)) '(listbox treebox tree-view text-view layout) :test #'equal)
(gtk-container-add (id self) (id kid))
- (gtk-scrolled-window-add-with-viewport (id self) (id kid))))
- #+clisp (call-next-method))
+ (gtk-scrolled-window-add-with-viewport (id self) (id kid)))))
(def-widget notebook (container)
((tab-labels :accessor tab-labels :initarg :tab-labels :initform (c-in nil))
@@ -243,8 +236,7 @@
(loop for page from 0 to (length new-value) do
(setf (current-page self) page))
(when (and (show-page self) (>= (show-page self) 0) (< (show-page self) (length new-value)))
- (setf (current-page self) (show-page self)))
- #+clisp (call-next-method)))
+ (setf (current-page self) (show-page self)))))
(defobserver show-tabs ((self notebook))
(gtk-notebook-set-show-tabs (id self) new-value))
@@ -304,5 +296,4 @@
(defobserver .kids ((self alignment))
(assert-bin self)
(dolist (kid new-value)
- (gtk-container-add (id self) (id kid)))
- #+clisp (call-next-method))
+ (gtk-container-add (id self) (id kid))))
diff --git a/cells-gtk/menus.lisp b/cells-gtk/menus.lisp
index b731b6c..bcfabf1 100644
--- a/cells-gtk/menus.lisp
+++ b/cells-gtk/menus.lisp
@@ -160,8 +160,7 @@
(assert-bin self)
(when new-value
(dolist (kid new-value)
- (gtk-container-add (id self) (id kid))))
- #+clisp (call-next-method))
+ (gtk-container-add (id self) (id kid)))))
(def-widget separator-tool-item (tool-item)
()
@@ -202,8 +201,7 @@
(defobserver .kids ((self menu-shell))
(when new-value
(dolist (kid new-value)
- (gtk-menu-shell-append (id self) (id kid))))
- #+clisp (call-next-method))
+ (gtk-menu-shell-append (id self) (id kid)))))
(def-widget menu-bar (menu-shell)
() () ())
@@ -295,8 +293,7 @@
(defobserver .value ((self radio-menu-item))
(with-integrity (:change 'radio-menu-item-value)
(when (and new-value (upper self menu-item))
- (setf (value (upper self menu-item)) (md-name self))))
- #+clisp (call-next-method))
+ (setf (value (upper self menu-item)) (md-name self)))))
(def-widget image-menu-item (menu-item)
((stock :accessor stock :initarg :stock :initform nil)
diff --git a/cells-gtk/widgets.lisp b/cells-gtk/widgets.lisp
index 9716cd4..b74816f 100644
--- a/cells-gtk/widgets.lisp
+++ b/cells-gtk/widgets.lisp
@@ -473,8 +473,7 @@
(dolist (kid new-value)
; (when *gtk-debug* (format t "~% window ~A has kid ~A" self kid))
(when *gtk-debug* (trc "WINDOW ADD KID" (md-name self) (md-name kid)) (force-output))
- (gtk-container-add (id self) (id kid)))
- #+clisp (call-next-method))
+ (gtk-container-add (id self) (id kid))))
(def-widget event-box (container)
((visible-window :accessor visible-window :initarg :visible-window :initform nil))
@@ -488,8 +487,7 @@
(defobserver .kids ((self event-box))
(assert-bin self)
(when new-value
- (gtk-container-add (id self) (id (first new-value))))
- #+clisp (call-next-method))
+ (gtk-container-add (id self) (id (first new-value)))))
(declaim (inline widget-id))
(defun widget-id (widget)
--
1.5.5.3
>From d4febfc0c503e84d2793f99aca92c492d8c8a5eb Mon Sep 17 00:00:00 2001
From: Ingo Bormuth <[EMAIL PROTECTED]>
Date: Fri, 30 May 2008 20:54:13 +0200
Subject: [PATCH] In cells3 'def-c-output' was renamed to 'defobserver'.
---
cells-gtk/actions.lisp | 16 ++++++++--------
cells-gtk/callback.lisp | 2 +-
2 files changed, 9 insertions(+), 9 deletions(-)
diff --git a/cells-gtk/actions.lisp b/cells-gtk/actions.lisp
index f280a4e..6df5b60 100644
--- a/cells-gtk/actions.lisp
+++ b/cells-gtk/actions.lisp
@@ -14,17 +14,17 @@
()
:new-args (c_1 (list (name self) nil nil (stock-id self))))
-(def-c-output visible ((self action))
+(defobserver visible ((self action))
(gtk-ffi::gtk-object-set-property (id self) "visible" 'boolean new-value))
-(def-c-output sensitive ((self action))
+(defobserver sensitive ((self action))
(gtk-ffi::gtk-object-set-property (id self) "sensitive" 'boolean new-value))
-(def-c-output label ((self action))
+(defobserver label ((self action))
(when new-value
(gtk-ffi::with-gtk-string (str new-value)
(gtk-ffi::gtk-object-set-property (id self) "label" 'c-pointer str))))
-(def-c-output tooltip ((self action))
+(defobserver tooltip ((self action))
(when new-value
(gtk-ffi::with-gtk-string (str new-value)
(gtk-ffi::gtk-object-set-property (id self) "tooltip" 'c-pointer str))))
@@ -37,13 +37,13 @@
()
:new-args (c_1 (list (name self))))
-(def-c-output sensitive ((self action-group))
+(defobserver sensitive ((self action-group))
(gtk-ffi::gtk-action-group-set-sensitive (id self) new-value))
-(def-c-output visible ((self action-group))
+(defobserver visible ((self action-group))
(gtk-ffi::gtk-action-group-set-visible (id self) new-value))
-(def-c-output .kids ((self action-group))
+(defobserver .kids ((self action-group))
(dolist (kid old-value)
(gtk-ffi::gtk-action-group-remove-action (id self) (id kid)))
(dolist (kid new-value)
@@ -55,7 +55,7 @@
()
())
-(def-c-output tearoffs ((self ui-manager))
+(defobserver tearoffs ((self ui-manager))
(gtk-ffi::gtk-ui-manager-set-add-tearoffs (id self) new-value))
(defmethod add-action-group ((self ui-manager) (group action-group) &optional pos)
diff --git a/cells-gtk/callback.lisp b/cells-gtk/callback.lisp
index 7376975..0029786 100644
--- a/cells-gtk/callback.lisp
+++ b/cells-gtk/callback.lisp
@@ -29,7 +29,7 @@
(format nil "gtk_server_connect(~A, ~A, :callback ~A)"
(id self) event (register-callback self event fn)))
-(def-c-output bindings () ;;; (w widget) event fun)
+(defobserver bindings () ;;; (w widget) event fun)
(loop for binding in new-value
do (destructuring-bind (event . fn) binding
(declare (ignorable event))
--
1.5.5.3
>From 9eb05799b53279e1364048ddb9be59b05df37997 Mon Sep 17 00:00:00 2001
From: Ingo Bormuth <[EMAIL PROTECTED]>
Date: Sun, 1 Jun 2008 04:49:21 +0200
Subject: [PATCH] Inactivate optional stuff by default.
You can activate them before depending on
'cells-get' just as 'test-gtk.asd' does.
---
cells-gtk/cells-gtk.asd | 6 +++---
cells-gtk/test-gtk/test-gtk.asd | 6 +++---
gtk-ffi/gtk-ffi.asd | 2 +-
3 files changed, 7 insertions(+), 7 deletions(-)
diff --git a/cells-gtk/cells-gtk.asd b/cells-gtk/cells-gtk.asd
index 996ed55..8d08815 100644
--- a/cells-gtk/cells-gtk.asd
+++ b/cells-gtk/cells-gtk.asd
@@ -11,13 +11,13 @@
;;;
;;; run gtk in its own thread (requires bordeaux-threads)
-(pushnew :cells-gtk-threads *features*)
+;;(pushnew :cells-gtk-threads *features*)
;;; drawing-area widget using cairo (requires cl-cairo2)
-(pushnew :cells-gtk-cairo *features*)
+;;(pushnew :cells-gtk-cairo *features*)
;;; drawing-area widget using OpenGL (requires libgtkglext1)
-(pushnew :cells-gtk-opengl *features*)
+;;(pushnew :cells-gtk-opengl *features*)
(asdf:defsystem :cells-gtk
:name "cells-gtk"
diff --git a/cells-gtk/test-gtk/test-gtk.asd b/cells-gtk/test-gtk/test-gtk.asd
index 46ec071..4bdb2b7 100644
--- a/cells-gtk/test-gtk/test-gtk.asd
+++ b/cells-gtk/test-gtk/test-gtk.asd
@@ -3,11 +3,11 @@
;;; run gtk in its own thread (requires bordeaux-threads)
(pushnew :cells-gtk-threads *features*)
-;;; drawing-area widget using cairo (requires cl-cairo2)
+;;; drawing-area widget using cairo
+;;; (requires cl-cairo2, libgtkglext1 and libcellsgtk)
(pushnew :cells-gtk-cairo *features*)
-
-;;; drawing-area widget using OpenGL (requires libgtkglext1)
(pushnew :cells-gtk-opengl *features*)
+(pushnew :libcellsgtk *features*)
(asdf:defsystem :test-gtk
diff --git a/gtk-ffi/gtk-ffi.asd b/gtk-ffi/gtk-ffi.asd
index f8e07d1..4c507fa 100644
--- a/gtk-ffi/gtk-ffi.asd
+++ b/gtk-ffi/gtk-ffi.asd
@@ -9,7 +9,7 @@
;;; Step 2 -- If you built or downloaded the libcellsgtk library, uncomment the next line.
;;; features
-(pushnew :libcellsgtk *features*)
+;;(pushnew :libcellsgtk *features*)
(asdf:defsystem :gtk-ffi
:name "gtk-ffi"
--
1.5.5.3
_______________________________________________
cells-devel site list
[email protected]
http://common-lisp.net/mailman/listinfo/cells-devel