[mcclim-devel] Title panes
Robert Swindells
rjs at fdy2.demon.co.uk
Tue Oct 6 23:27:42 UTC 2009
Robert Strandh wrote:
>Robert Swindells writes:
> >
> > There doesn't seem to be a display-title method for the title-pane
> > class, is this deliberate ?
>
>I can only guess. The spec says very little about the title pane. It
>doesn't even mention any :initarg or a slot that can be used to give a
>title. It does mention the name of the display function, but doesn't
>say anything else about it. That's probably the reason nobody
>implemented it.
>
> > The examples in the Franz CLIM User Guide imply to me that you should
> > be able to use this pane type without needing to supply a
> > display-function for it.
>
>It should not be very hard to do this. If you can give me some
>examples of how to use it and what is supposed to happen when the
>title pane is displayed, or better yet, some code, I'll be happy to
>put it in.
The following patch works well enough for me to see something:
It might need a bounding box and the Franz example looks as if the
text may need to be larger than the default size.
Index: panes.lisp
===================================================================
RCS file: /project/mcclim/cvsroot/mcclim/panes.lisp,v
retrieving revision 1.197
diff -u -r1.197 panes.lisp
--- panes.lisp 1 Aug 2009 22:11:06 -0000 1.197
+++ panes.lisp 6 Oct 2009 23:21:01 -0000
@@ -2741,11 +2741,22 @@
;;; TITLE PANE
(defclass title-pane (clim-stream-pane)
- ()
+ ((display-string :initarg :display-string
+ :accessor display-string))
(:default-initargs :display-time t
:scroll-bars nil
:display-function 'display-title))
+(defmethod display-title (frame (pane title-pane))
+ (declare (ignore frame))
+ (let ((a (text-style-ascent (pane-text-style pane) pane))
+ (tw (text-size pane (display-string pane))))
+ (with-bounding-rectangle* (x1 y1 x2 y2) (sheet-region pane)
+ (multiple-value-bind (tx ty)
+ (values (- (/ (- x2 x1) 2) (/ tw 2))
+ (+ y1 2 a))
+ (draw-text* pane (display-string pane) tx ty)))))
+
;;; Pointer Documentation Pane
(defparameter *default-pointer-documentation-background* +black+)
More information about the mcclim-devel
mailing list