[ltk-user] custom styles for tiled Tk [patch]
Daniel Herring
dherring at tentpost.com
Sat Jun 6 13:47:18 UTC 2009
On Sat, 6 Jun 2009, Daniel Herring wrote:
> I'm using the development code from
> http://ltk.rplay.net/svn/branches/ltk/repl (r210)
>
> Since tiled Tk dropped the -indicatoron attribute from radio-buttons, I
> need to define a custom style as described on pages 5-7 of
> http://tktable.sourceforge.net/tile/tile-tcl2004.pdf
>
> How would one approach this with ltk?
First try was to directly use (send-wish). Then more reading revealed
that the Toolbar style was added to all standard ttk themes. So the
following just works (bash shell, Tk 8.5 or higher).
# cat << _EOF | wish
ttk::checkbutton .cb -text "test" -style Toolbutton
ttk::checkbutton .cb2 -text "test2" -style Toolbutton
pack .cb
pack .cb2
_EOF
However, the ltk equivalent doesn't work...
(defun ltk-toolbar ()
(with-ltk ()
(let* ((f (make-instance 'frame))
(cb (make-instance 'check-button
:master f
:text "test"
:variable "cb"
:style "Toolbutton"))
(cb2 (make-instance 'check-button
:master f
:text "test2"
:variable "cb2"
:style "Toolbutton")))
(pack f)
(pack cb)
(pack cb2))))
Running this gives an error that :style is an invalid parameter. Ok,
update (defargs check-button) to include style and recompile ltk.
Now I get the same error I was getting with radio-buttons.
"Tcl/Tk error: Layout toolbutton not found"
"Do you wish to invoke the debugger?"
Y/N
(setf *debug-tk* t)
Now I see the problem; the log shows
buffer_text "ttk::checkbutton .wc.wd -style toolbutton -textvariable text_wd -variable cb"
"Toolbutton" was downcased to "toolbutton" and the quotes were removed.
Looks like a (format s "~A" "Toolbutton") somewhere...
Here's the diffs which make Toolbar-style checkboxes work in ltk for me.
I'm not exactly sure what the *initargs* voodoo is, but it seemed to
behave rationally.
*****
diff --git a/ltk.lisp b/ltk.lisp
index aec7b93..b30a0e8 100644
--- a/ltk.lisp
+++ b/ltk.lisp
@@ -1339,6 +1339,7 @@ can be passed to AFTER-CANCEL"
(spacing2 spacing2 "~@[ -spacing2 ~(~a~)~]" spacing2 "")
(spacing3 spacing3 "~@[ -spacing3 ~(~a~)~]" spacing3 "")
(state state "~@[ -state ~(~a~)~]" state "")
+ (style style "~@[ -style ~s~]" style "")
(tabs tabs "~@[ -tabs ~(~a~)~]" tabs "")
(takefocus takefocus "~@[ -takefocus ~(~a~)~]" takefocus "if true,
the widget can take the focus")
(tearoff tearoff "~@[ -tearoff ~(~a~)~]" tearoff "if true, the menu
can be torn off")
@@ -1465,7 +1466,7 @@ can be passed to AFTER-CANCEL"
#-:tk84
(defargs check-button ()
- cbcommand class compound cursor image offvalue onvalue state takefocus
textvariable underline variable width)
+ cbcommand class compound cursor image offvalue onvalue state style
takefocus textvariable underline variable width)
#+:tk84
(defargs check-button ()
*****
Later,
Daniel
More information about the ltk-user
mailing list