Good Afternoon All,
First thanks for a great way to make simple GUIs in Common Lisp. In my current application I have a tray of buttons. This currently gets populated from a directory path defined by the user. I keep this frame as a special variable in Common Lisp so I can easily access it across all functions.
Is there a way to get the parent of a widget currently? How about a list of all children?
I'd like to write a function that saves the frame's parent, deletes the frame on CL and Tcl sides, then binds and packs a new frame instance in it's place.
Here is a picture of my little launcher program.
https://i.imgur.com/GiOaez7.png
You can see how the frame exists inside a notebook and contains buttons. Thanks for any help!
Hello,
I've managed to get what I *think* is correct. Really the CLOS side should track CLOS child objects when placed, gridded, and packed so it can be done without TCL.
(defun tk-parent (w) "Returns a Wish understood representation of the CLOS object parent" (let* ((old-path (widget-path w)) (parent-path (subseq old-path 0 (search "." old-path :from-end t)))) parent-path))
(defun tk-destroy-widget (w) "Given a CLOS object destroys it on the Wish side" (send-wish (concatenate 'string "destroy " (widget-path w))) (setf w NIL))
(defun tk-destroy-children (w) "Given a CLOS object destroys the children on the Wish side" (let ((command-string "foreach w [winfo children "~a"] { destroy $w }")) (send-wish (format nil command-string (widget-path w)))))
On 6/13/20 3:20 PM, Ryan wrote:
Good Afternoon All,
First thanks for a great way to make simple GUIs in Common Lisp. In my current application I have a tray of buttons. This currently gets populated from a directory path defined by the user. I keep this frame as a special variable in Common Lisp so I can easily access it across all functions.
Is there a way to get the parent of a widget currently? How about a list of all children?
I'd like to write a function that saves the frame's parent, deletes the frame on CL and Tcl sides, then binds and packs a new frame instance in it's place.
Here is a picture of my little launcher program.
https://i.imgur.com/GiOaez7.png
You can see how the frame exists inside a notebook and contains buttons. Thanks for any help!