Lisp HUG Maillist Archive

RE: Tab-control problems: Panes on 2., 3. etc tabs not created initially - how am I notified?

 

> From: Martin Simmons [mailto:martin@lispworks.com] 
> 
> Could you explain what you mean by "fill" please?  The panes 
> are available via the slots in the interface and it should be 
> posible to set the text before they are created, unless you 
> need to do something that depends on the size of the pane.

I just try to set the text, that's what I mean by 'fill'.

I try to set the text in the pane, using this function:

(defun report-message-to-window (type message)
  "Reports a message to the window. Message may be a list of strings, or a string."
	(capi:apply-in-pane-process (get-window-messages)
				    #'(lambda (pane text type)
					(let ((old-text (capi:text-input-pane-text pane)))
					  (setf (capi:text-input-pane-text pane) 
						(if (listp text)
						    (progn
						      (concatenate 'string 
								   (format nil "~:{~A~A~^~%~}~%" text)
								   old-text))
						    (progn
						      (concatenate 'string type ": " text (format nil "~%") old-text))))))
					  (get-window-messages) message type))

with

(defparameter *main-window* (make-instance 'scenario-status-window 
					   :visible-min-height '(character 30) 
					   :visible-min-width '(character 120)))

(defun get-window-messages ()
  (slot-value *main-window* 'runtime-messages))

(defun display-main-window ()
  (capi:display *main-window* :process t))

and the tab-window from my first post. Then

CL-USER> (display-main-window)
#<SCENARIO-STATUS-WINDOW "Scenario status" 206AA2A4>
CL-USER> (report-message-to-window "serious" "no window today")

gives a backtrace

No applicable methods for #<STANDARD-GENERIC-FUNCTION CAPI-INTERNALS:INTERFACE-PROCESS 20F3C20A> with args (#<CAPI:MULTI-LINE-TEXT-INPUT-PANE RUNTIME-MESSAGES  20687D54>)
   [Condition of type SIMPLE-ERROR]

Restarts:
  0: [CONTINUE] Call #<STANDARD-GENERIC-FUNCTION CAPI-INTERNALS:INTERFACE-PROCESS 20F3C20A> again
  1: [ABORT] Abort handling SLIME request.
  2: [ABORT] Quit process.

Backtrace:
  0: CONDITIONS::CONDITIONS-ERROR (:INVISIBLEP T "No applicable methods for ~S with args ~S" (#<STANDARD-GENERIC-FUNCTION CAPI-INTERNALS:INTERFACE-PROCESS 20F3C20A> (#<CAPI:MULTI-LINE-TEXT-INPUT-PANE RUNTIME-MESSAGES  20687D54>)))
  1: CERROR ("Call ~S again" "No applicable methods for ~S with args ~S" &REST (#<STANDARD-GENERIC-FUNCTION CAPI-INTERNALS:INTERFACE-PROCESS 20F3C20A> (#<CAPI:MULTI-LINE-TEXT-INPUT-PANE RUNTIME-MESSAGES  20687D54>)))
  2: (METHOD NO-APPLICABLE-METHOD (T)) (#<STANDARD-GENERIC-FUNCTION CAPI-INTERNALS:INTERFACE-PROCESS 20F3C20A> &REST (#<CAPI:MULTI-LINE-TEXT-INPUT-PANE RUNTIME-MESSAGES  20687D54>))
  3: CAPI:EXECUTE-WITH-INTERFACE (#1=#<CAPI:MULTI-LINE-TEXT-INPUT-PANE RUNTIME-MESSAGES  20687D54> #'(LAMBDA (PANE TEXT TYPE) (LET (#) (SETF # #))) &REST (#1# "no window today" "serious"))
  4: REPORT-MESSAGE-TO-WINDOW NIL
  5: SPECIAL::%EVAL-NOHOOK ((REPORT-MESSAGE-TO-WINDOW "serious" "no window today"))
  6: IV:PROCESS-TOP-LEVEL (DSPEC:*CURRENT-FORM* #S(LEXICAL::ENVIRONMENT :VARIABLES NIL :FUNCTIONS NIL :REMOTE-ENVIRONMENT NIL) #<function LEXICAL:EVAL-WITH-ENV 20141812> &OPTIONAL :EXECUTE)
 --more--

Also,

CL-USER> (get-window-messages)
#<CAPI:MULTI-LINE-TEXT-INPUT-PANE RUNTIME-MESSAGES  20687D54>
CL-USER> (capi:simple-pane-handle (get-window-messages))
NIL

until I have visited the third pane by clicking on its tab with the mouse, then

CL-USER> (get-window-messages)
#<CAPI:MULTI-LINE-TEXT-INPUT-PANE RUNTIME-MESSAGES  20687D54>
CL-USER> (capi:simple-pane-handle (get-window-messages))
1379516
CL-USER> 


I gather from your comment that I probably do something wrong, so if you could enlighten me, I'd be very grateful.

-- 
Eivind


Re: Tab-control problems: Panes on 2., 3. etc tabs not created initially - how am I notified?

Unable to parse email body. Email id is 5440

Updated at: 2020-12-10 08:48 UTC