There doesn't seem to be a display-title method for the title-pane class, is this deliberate ?
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.
Robert Swindells
Hello,
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.
Regards,
Am 05.10.2009 um 07:00 schrieb Robert Strandh:
Hello,
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.
Regards,
Robert Strandh
CLIM:DEFINE-APPLICATION-FRAME allows to specify a :title pane. By default it displays the frame's pretty name. A pane option is :display- string string, which defines the string to display. So :display-string would be an :initarg to the title-pane class.
Generally it is a pane with the title displayed in a large font. No scroll bars, grows horizontally, height is computed, no display after command. That's all. It is a relict from older window systems (like the one on the Lisp Machine), which usually have no title bar - where the application window then has a separate pane for the title. If your application's window has a title bar (usually), there is usually no need to display the title pane in an application window.
Regards,
Rainer Joswig
Rainer Joswig wrote:
Am 05.10.2009 um 07:00 schrieb Robert Strandh:
Hello,
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.
Regards,
Robert Strandh
CLIM:DEFINE-APPLICATION-FRAME allows to specify a :title pane. By default it displays the frame's pretty name. A pane option is :display- string string, which defines the string to display. So :display-string would be an :initarg to the title-pane class.
There is an example on p193 of the CLIM User Guide that uses this pane option.
Generally it is a pane with the title displayed in a large font. No scroll bars, grows horizontally, height is computed, no display after command. That's all. It is a relict from older window systems (like the one on the Lisp Machine), which usually have no title bar - where the application window then has a separate pane for the title. If your application's window has a title bar (usually), there is usually no need to display the title pane in an application window.
I'm trying to get an existing application to work, it has a couple of large panes inside the application-frame each of which has a title frame at the top. For some reason display after command is set for the title panes.
Robert Swindells
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+)