![](https://secure.gravatar.com/avatar/320d3707e13d369e6d41b51449a3ed0c.jpg?s=120&d=mm&r=g)
Hi, I made a notebook widget for celtk. It just uses the built-in tile notebook and introduces a "tab" widget which is just a container for stuff you can add to a notebook. On a separate note, I was having trouble getting the latest versions of cells and celtk to play nicely together. I reverted back to cells from March to work on this stuff since that's when I was last working on my expander widget. I'll investigate the problems and try to provide some more useful input later this week. ;--- n o t e b o o k ---------------------------------------------- (deftk notebook (widget decoration-mixin) () (:tk-spec notebook -height -padding -width) (:default-initargs :id (gentemp "NB") :packing nil)) (defmethod make-tk-instance ((self notebook)) (tk-format `(:make-tk ,self) "ttk::notebook ~a" (^path)) (tk-format `(:pack ,self) "pack ~a -expand yes -fill both" (^path))) (defobserver .kids ((self notebook)) (loop for k in (^kids) do (trc "ttk::notebook adds" k (type-of k) (md-name k) (path k)) (tk-format `(:post-make-tk ,self) "~a add ~a -text ~a" (^path) (path k) (text k)))) ;--- t a b ----------------------------------------------------------- (deftk tab (frame-stack widget) () (:tk-spec tab -state -sticky -padding -text -image) (:default-initargs :id (gentemp "TB"))) (defmacro mk-tab ((&rest inits) &body body) `(make-instance 'tab :fm-parent *parent* ,@inits :kids (c? (the-kids ,@body)))) (defmethod make-tk-instance ((self tab)) (tk-format `(:make-tk ,self) "frame ~a" (^path))) ;--- example usage --------------------------------------------------- (defmd nb-test (window) (kids (c? (the-kids (mk-notebook :width 100 :kids (c? (the-kids (mk-tab (:text "first") (mk-stack ("tab with container") (mk-label :text "hi"))) (mk-tab (:text "second") (mk-label :text "a") (mk-label :text "b"))))))))) (defun test-nb () (test-window 'nb-test)) -- ---- Andy Chambers Formedix Ltd