<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:syn="http://purl.org/rss/1.0/modules/syndication/" xmlns:admin="http://webns.net/mvcb/">
  <channel rdf:about="http://blog.gmane.org/gmane.lisp.ltk.user">
    <title>gmane.lisp.ltk.user</title>
    <link>http://blog.gmane.org/gmane.lisp.ltk.user</link>
    <description/>
    <syn:updatePeriod>hourly</syn:updatePeriod>
    <syn:updateFrequency>1</syn:updateFrequency>
    <syn:updateBase>1901-01-01T00:00+00:00</syn:updateBase>
    <items>
      <rdf:Seq>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.lisp.ltk.user/508"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.lisp.ltk.user/507"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.lisp.ltk.user/506"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.lisp.ltk.user/505"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.lisp.ltk.user/504"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.lisp.ltk.user/503"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.lisp.ltk.user/502"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.lisp.ltk.user/501"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.lisp.ltk.user/500"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.lisp.ltk.user/499"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.lisp.ltk.user/501"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.lisp.ltk.user/500"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.lisp.ltk.user/499"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.lisp.ltk.user/498"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.lisp.ltk.user/497"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.lisp.ltk.user/496"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.lisp.ltk.user/495"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.lisp.ltk.user/494"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.lisp.ltk.user/493"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.lisp.ltk.user/492"/>
      </rdf:Seq>
    </items>
    <image rdf:resource="http://gmane.org/img/gmane-25t.png"/>
    <textinput rdf:resource=""/>
  </channel>
  <image rdf:about="http://gmane.org/img/gmane-25t.png">
    <title>Gmane</title>
    <url>http://gmane.org/img/gmane-25t.png</url>
    <link>http://gmane.org</link>
  </image>
  <item rdf:about="http://permalink.gmane.org/gmane.lisp.ltk.user/508">
    <title>Re: Can't get SCALE value</title>
    <link>http://permalink.gmane.org/gmane.lisp.ltk.user/508</link>
    <description>&lt;pre&gt;
but 

Please excuse me, it appears I did not perform my due diligence, this question 
was answered 3 years ago at the following location:
http://permalink.gmane.org/gmane.lisp.ltk.user/329

The answer is that the name passed to :VARIABLE is not in fact updated 
automatically.  Instead of messing with :VARIABLE, I pass a LAMBDA expression to 
the :COMMAND keyword; and therefore the following is the correct way:

   (upper-slider 
    (make-instance 'scale :from 0 :to 7 
   :length  360 
   :command (lambda (val) (setq upper-theta val))))
   (fore-slider 
    (make-instance 'scale :from 0 :to 7 
   :length  360 
   :command (lambda (val) (setq fore-theta val))))


&lt;/pre&gt;</description>
    <dc:creator>JW</dc:creator>
    <dc:date>2012-12-21T22:42:47</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.lisp.ltk.user/507">
    <title>Can't get SCALE value</title>
    <link>http://permalink.gmane.org/gmane.lisp.ltk.user/507</link>
    <description>&lt;pre&gt;I am having two problems with SCALE.  

1. I cannot set bounds to anything other than integers.  For example:
(make-instance 'scale :from 0 :to (* 2 pi) ...
gives me an error.

2. I am unable to retrieve the :VARIABLE value

In the below, vales of UPPER-THETA and FORE-THETA never seem to be anything but 
0, no matter where I slide the scale.  I have tested all the drawing an update 
code, I am stumped!

(defun controltest ()
  "Test of a user-controlled robot arm"
  (with-ltk ()
    (let* ((upper-theta 0) (fore-theta 0)
   (upper-slider 
    (make-instance 'scale :from 0 :to 7 
   :length  360 :variable upper-theta))
   (fore-slider 
    (make-instance 'scale :from 0 :to 7
   :length  360 :variable fore-theta))
   (cnvs (make-instance 'canvas :width cnvs-width :height cnvs-height))
   (upper (manip:uctk-beam :cen-x 200 :cen-y 200 
   :b-length 40 :b-width 20
   :tk-cnvs cnvs))
   (fore (manip:uctk-beam :cen-x 0 :cen-y 40 ; relative to upper
  :b-length 40 :b-width 20
  :tk-cnvs cnvs))
   (slp-time 50) #|ms|# )
      (labels ((update ()
 (draw upper nil) ; contains FORE, no need to draw separately
 (geo:set-member-theta upper 2 fore-theta)
 (geo:set-theta upper upper-theta)
 (after slp-time #'update)))
(geo:add-geo upper fore) ; make FORE a member of UPPER
(pack cnvs :fill :both :expand 1)
(pack upper-slider :side :bottom)
(pack fore-slider :side :bottom)
(update)))))


&lt;/pre&gt;</description>
    <dc:creator>JW</dc:creator>
    <dc:date>2012-12-16T01:19:48</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.lisp.ltk.user/506">
    <title>Bug in LTK</title>
    <link>http://permalink.gmane.org/gmane.lisp.ltk.user/506</link>
    <description>&lt;pre&gt;LTK constructs names for tcl variables by appending characters to "w"
the problem is that there is a command "wm" already in tcl/tk.  This can
cause issues.  I quickly worked around it by making the base-name "ww"
as there are no built-in commands that start with ww.  However the right
solution is probably to make a namespace.

-Jason

&lt;/pre&gt;</description>
    <dc:creator>Jason Miller</dc:creator>
    <dc:date>2012-12-07T16:45:15</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.lisp.ltk.user/505">
    <title>Re: Increamentally build the GUI?</title>
    <link>http://permalink.gmane.org/gmane.lisp.ltk.user/505</link>
    <description>&lt;pre&gt;Hi,

with-ltk plus :serve-event t is good for when you have a program that you want to be able to run at the same time as the repl, or other ltk programs. But you should generally have at least the widgets for the initial frame prepared and debugged. The with-ltk starts a new Tk process, and anything in the body can "see" that main window -- any event callbacks will also see the Tcl/Tk process, as well.

If you're at an even earlier stage in development, which it sounds like you are, you can just install a serve-event ltk directly into your repl:

* (start-wish)
* (mainloop :serve-event t)

Now anything you type in the repl will "see" your running Tk gui. So you can do stuff like:

* (make-instance 'label :text "hello, tk")
* (setf &amp;gt;&amp;gt;label *)
* (pack &amp;gt;&amp;gt;label)

-Thomas 

(Apologies if anyone sees this twice. I sent it with the wrong From line the first time, and it bounced from the list)

 &amp;gt; Date: Mon, 19 Nov 2012 18:10:40 +0100
       &lt;/pre&gt;</description>
    <dc:creator>Thomas Burdick</dc:creator>
    <dc:date>2012-11-26T10:43:18</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.lisp.ltk.user/504">
    <title>Re: Using tags on canvas items?</title>
    <link>http://permalink.gmane.org/gmane.lisp.ltk.user/504</link>
    <description>&lt;pre&gt;Hello again,

activating *debug-tk* reveals the root of the problem. It looks to me as if
there are _two_ problems:

    (itemconfigure canvas polygon :tags '(FOO BAR baz))
    (itemconfigure canvas 'bar    :fill 'yellow) ; doesn't work

is sent to wish as

    bt ".wc.wf itemconfigure 1 -tags {(foo bar baz)}"
    bt ".wc.wf itemconfigure BAR -fill {yellow}"

The first problem is that the symbols are forced to lower case for the first
command while they are forced to UPPER CASE for the second command.

The second problem is revealed by the following command, which (unexpectedly)
happen to work:

    (itemconfigure canvas '|(foo| :fill 'yellow)  ; works!

Please note the parenthesis! This clearly shows that wish interprets the
surrounding parens as part of the tag!

On Wed, Nov 21, 2012 at 12:41:29PM +0100, Josef Wolf wrote:

&lt;/pre&gt;</description>
    <dc:creator>Josef Wolf</dc:creator>
    <dc:date>2012-11-21T12:26:54</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.lisp.ltk.user/503">
    <title>Using tags on canvas items?</title>
    <link>http://permalink.gmane.org/gmane.lisp.ltk.user/503</link>
    <description>&lt;pre&gt;Hello everybody,

I am trying to use the tags feature of the canvas. So I am trying to attach a
list of tags to an item and use those tags later to identify items. Here's an
example:

 (with-ltk ()
   (let* ((sc (make-instance 'scrolled-canvas))
          (canvas (canvas sc))
          (polygon (create-polygon canvas '(10 20 30 40 60 50))))
 
     (pack sc)
     (configure canvas :width 100 :height 100)

     (itemconfigure canvas polygon :tags '(foo bar baz))
     (itemconfigure canvas polygon :fill 'red)
     (itemconfigure canvas 'foo    :fill 'yellow)))

But it somehow doesn't work the way I expected it to work. The polygon stays
red instead of being re-configured to yellow.

It also won't work if I use strings instead of symbols. It only works if I use
a _single_ string. But this is not how the tags feature is intended to work.

Any ideas?

&lt;/pre&gt;</description>
    <dc:creator>Josef Wolf</dc:creator>
    <dc:date>2012-11-21T11:41:29</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.lisp.ltk.user/502">
    <title>Re: How to configure widgets?</title>
    <link>http://permalink.gmane.org/gmane.lisp.ltk.user/502</link>
    <description>&lt;pre&gt;
Thanks for the help, Harven. This works.

Is this just a workaround or is this by intent? It seems that for some options
I still need the CONFIGURE function. What is the reason for this
inconsistency? How do I know which options can be set by CONFIGURE and which
need to be set by SETF? I have not noticed such inconsistencies in Perl/Tk
yet. One would use the configure method/function for everything.

&lt;/pre&gt;</description>
    <dc:creator>Josef Wolf</dc:creator>
    <dc:date>2012-11-21T07:49:09</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.lisp.ltk.user/501">
    <title>Re: How to configure widgets?</title>
    <link>http://permalink.gmane.org/gmane.lisp.ltk.user/501</link>
    <description>&lt;pre&gt;

Try with setf instead of configure, i.e.
(setf (text label-widget) val)
instead of 
(configure label-widget :text val)

Sincerely,
Harven

&lt;/pre&gt;</description>
    <dc:creator>harven&lt; at &gt;free.fr</dc:creator>
    <dc:date>2012-11-20T22:07:15</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.lisp.ltk.user/500">
    <title>Increamentally build the GUI?</title>
    <link>http://permalink.gmane.org/gmane.lisp.ltk.user/500</link>
    <description>&lt;pre&gt;Hello everybody,

I am trying to build my tk GUI incrementally. The SERVE-EVENT parameter seems
to suggest that something like the following should be possible:

  (defvar *frame*)
  (defvar *label-widget*)
  
  (with-ltk (:serve-event t)
    (setf *frame* (make-instance 'frame))
    (pack *frame*))
  
  (with-ltk (:serve-event t)
    (setf *label-widget* (make-instance
                          'label
                          :master *frame*
                          :text "initial text"))
    (pack *label-widget* :side :left))
  
  (with-ltk ()
     ;; All initializations are already done, we just need to enter MAINLOOP
     )

But instead of a single toplevel containing both, the frame and the label, I
get two separate toplevels. And none of those toplevels seem to contain the
label widget. The output of the ps command shows, that two separate WISH
processes are started, which obviously is not going to work.

Does anybody have an example of how to properly use the SERVE-EVENT parameter?

&lt;/pre&gt;</description>
    <dc:creator>Josef Wolf</dc:creator>
    <dc:date>2012-11-19T17:10:40</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.lisp.ltk.user/499">
    <title>How to configure widgets?</title>
    <link>http://permalink.gmane.org/gmane.lisp.ltk.user/499</link>
    <description>&lt;pre&gt;Hello everybody,

I am trying to make my first steps with ltk, and I have problems to
reconfigure existing widgets. Here is an example where I try to reconfigure
the :TEXT attribute of the LABEL-WIDGET widget whenever the checkbox of the
CHECK-BUTTON-WIDGET widget is clicked.

 (with-ltk ()
   (setf *debug-tk* t)
   (let* ((f (make-instance 'frame))
          (label-widget (make-instance 'label
                         :master f
                         :text "initial text"))
          (check-button-widget (make-instance 'check-button
                                :master f
                                :text "check me"
                                :command (lambda (val)
                                           (configure label-widget :text val)))))
     (pack f)
     (pack label-widget :side :left)
     (pack check-button-widget :side :left)
     (configure f :borderwidth 3)
     (configure f :relief :sunken)))

When I click on the checkbox, the col.or of the checkbox changes and I can see
in the debug output something like this:

 process_buffer
 l:(:CALLBACK "we" 1)&amp;lt;=
 buffer size 27
 bt ".wc.wd configure -text {1}"
 process_buffer
 l:(:CALLBACK "we" 0)&amp;lt;=
 buffer size 27
 bt ".wc.wd configure -text {0}"

So I assume, the callback is executed properly. But the diplayed text of
LABEL-WIDGET is not changed at all.

I have tried to use "text" and 'text instead of :text, but none of those seems
to make any difference.

This is on opensuse-12.1 with tk-8.5 and I use LTK-0.98, as it bundled with
the newest quicklisp distro.

Any ideas what I am missing here? Here is the complete debug output of LTK:

; compiling (WITH-LTK NIL ...)buffer size 19
bt "package require Tk"
process_buffer
add-callback (we #&amp;lt;CLOSURE (LAMBDA (VAL)
                             :IN
                             "/lisp/ltk-test.lisp")
                             {C1D9FA5}&amp;gt;)
buffer size 3519
bt "if {\[catch {package require Ttk} err\]} {tk_messageBox -icon error -type
ok -message \"\$err\"}"
bt "proc debug { msg } {
       global server
       puts \$server \"(:debug \\\"\[escape \$msg\]\\\")\"
       flush \$server
    } "
bt "proc escape {s} {regsub -all {\\\\} \$s {\\\\\\\\} s1;regsub -all {\"}
\$s1 {\\\"} s2;return \$s2}"
bt "proc senddata {s} {global server; puts \$server \"(:data \[escape
\$s\])\";flush \$server}"
bt "proc senddatastring {s} {
       global server
       
       puts \$server \"(:data \\\"\[escape \$s\]\\\")\"
       flush \$server
    } "
bt "proc senddatastrings {strings} {
                 global server 
                 puts \$server \"(:data (\"
                          foreach s \$strings {
                     puts \$server \"\\\"\[escape \$s\]\\\"\"
                     }
                 puts \$server \"))\";flush \$server} "
bt "proc to_keyword  {s} {
                if {\[string index \$s 0\] == \"-\"} {
                   return \":\[string range \$s 1 \[string length \$s\]\]\" }
       {return \":\$s\"}}"
bt "proc sendpropertylist {l} {
               global server; 
               set pos 0
               set ll \[llength \$l\]
               puts \$server \"(:data (\"
               while {\$pos &amp;lt; \$ll} {
                 puts \$server \" \[to_keyword \[lindex \$l \$pos\]\] \"
                 set pos \[expr \$pos + 1\]
                 puts \$server \" \[lindex \$l \$pos\] \"
                 set pos \[expr \$pos + 1\]
                }
               puts \$server \"))\"
                  
}"
bt "proc searchall {widget pattern} {
                  set l \[string length \$pattern\]
                 set result \[\$widget search \$pattern 1.0\]
                 set previous 0
                 while {\$result &amp;gt; \$previous} {
                     \$widget tag add sel \$result \$result+\${l}chars
                     set previous \$result
                     set result \[\$widget search \$pattern
                     \$result+\${l}chars\]
                 }
             }"
bt "proc searchnext {widget pattern} {
                 set l \[string length \$pattern\]
                 set result \[\$widget search \$pattern insert\]
                 if {\$result &amp;gt; 0} {
                     \$widget tag remove sel 1.0 end
                     \$widget tag add sel \$result \$result+\${l}chars
                     \$widget mark set insert \$result+\${l}chars
                     \$widget see insert
                 }
             }"
bt "proc resetScroll {c} {
      \$c configure -scrollregion \[\$c bbox all\]
}

proc moveToStart {sb} {
   set range \[\$sb get\]
   \$sb set 0 \[expr \[lindex \$range 1\] - \[lindex \$range 0\]\]
 }
"
bt "proc sendevent {s x y keycode char width height root_x root_y
   mouse_button} {global server; puts \$server \"(:event \\\"\$s\\\" \$x \$y
   \$keycode \$char \$width \$height \$root_x \$root_y \$mouse_button)\";
   flush \$server} "
bt "proc callback {s} {global server; puts \$server \"(:callback
   \\\"\$s\\\")\";flush \$server} "
bt "proc callbackval {s val} {global server; puts \$server \"(:callback
   \\\"\$s\\\" \$val)\"} "
bt "proc callbackstring {s val} {global server; puts \$server \"(:callback
   \\\"\$s\\\" \\\"\[escape \$val\]\\\")\"} "
bt "proc keepalive {} {global server; puts \$server \"(:keepalive  \\\"\[clock
   format \[clock seconds\] -format \"%d/%m/%y %T\"\]\\\")\"; flush \$server}"
bt "global text_wd ; set text_wd \"initial text\""
bt "global text_we ; set text_we \"check me\""
bt "ttk::frame .wc "
bt "ttk::checkbutton .wc.we  -command {callbackval we \$we} -textvariable
   text_we"
bt ".wc.we configure -variable we ; global we ; set we {}"
bt "pack .wc -side top -fill none"
bt "ttk::label .wc.wd  -textvariable text_wd"
bt "pack .wc.wd -side left -fill none"
bt "pack .wc.we -side left -fill none"
bt ".wc configure -borderwidth {3}"
bt ".wc configure -relief {sunken}"
bt ".wc.wd configure -text {x}"
process_buffer
l:(:CALLBACK "we" 1)&amp;lt;=
buffer size 27
bt ".wc.wd configure -text {1}"
process_buffer
l:(:CALLBACK "we" 0)&amp;lt;=
buffer size 27
bt ".wc.wd configure -text {0}"
process_buffer
Closing wish stream: #&amp;lt;TWO-WAY-STREAM
                       :INPUT-STREAM #&amp;lt;SB-SYS:FD-STREAM for "descriptor 9"
                                       {C11D111}&amp;gt;
                       :OUTPUT-STREAM #&amp;lt;SB-SYS:FD-STREAM
                                        for "descriptor 8" {C11D4C9}&amp;gt;&amp;gt;

&lt;/pre&gt;</description>
    <dc:creator>Josef Wolf</dc:creator>
    <dc:date>2012-11-19T16:29:16</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.lisp.ltk.user/501">
    <title>Re: How to configure widgets?</title>
    <link>http://permalink.gmane.org/gmane.lisp.ltk.user/501</link>
    <description>&lt;pre&gt;

Try with setf instead of configure, i.e.
(setf (text label-widget) val)
instead of 
(configure label-widget :text val)

Sincerely,
Harven

&lt;/pre&gt;</description>
    <dc:creator>harven&lt; at &gt;free.fr</dc:creator>
    <dc:date>2012-11-20T22:07:15</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.lisp.ltk.user/500">
    <title>Increamentally build the GUI?</title>
    <link>http://permalink.gmane.org/gmane.lisp.ltk.user/500</link>
    <description>&lt;pre&gt;Hello everybody,

I am trying to build my tk GUI incrementally. The SERVE-EVENT parameter seems
to suggest that something like the following should be possible:

  (defvar *frame*)
  (defvar *label-widget*)
  
  (with-ltk (:serve-event t)
    (setf *frame* (make-instance 'frame))
    (pack *frame*))
  
  (with-ltk (:serve-event t)
    (setf *label-widget* (make-instance
                          'label
                          :master *frame*
                          :text "initial text"))
    (pack *label-widget* :side :left))
  
  (with-ltk ()
     ;; All initializations are already done, we just need to enter MAINLOOP
     )

But instead of a single toplevel containing both, the frame and the label, I
get two separate toplevels. And none of those toplevels seem to contain the
label widget. The output of the ps command shows, that two separate WISH
processes are started, which obviously is not going to work.

Does anybody have an example of how to properly use the SERVE-EVENT parameter?

&lt;/pre&gt;</description>
    <dc:creator>Josef Wolf</dc:creator>
    <dc:date>2012-11-19T17:10:40</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.lisp.ltk.user/499">
    <title>How to configure widgets?</title>
    <link>http://permalink.gmane.org/gmane.lisp.ltk.user/499</link>
    <description>&lt;pre&gt;Hello everybody,

I am trying to make my first steps with ltk, and I have problems to
reconfigure existing widgets. Here is an example where I try to reconfigure
the :TEXT attribute of the LABEL-WIDGET widget whenever the checkbox of the
CHECK-BUTTON-WIDGET widget is clicked.

 (with-ltk ()
   (setf *debug-tk* t)
   (let* ((f (make-instance 'frame))
          (label-widget (make-instance 'label
                         :master f
                         :text "initial text"))
          (check-button-widget (make-instance 'check-button
                                :master f
                                :text "check me"
                                :command (lambda (val)
                                           (configure label-widget :text val)))))
     (pack f)
     (pack label-widget :side :left)
     (pack check-button-widget :side :left)
     (configure f :borderwidth 3)
     (configure f :relief :sunken)))

When I click on the checkbox, the col.or of the checkbox changes and I can see
in the debug output something like this:

 process_buffer
 l:(:CALLBACK "we" 1)&amp;lt;=
 buffer size 27
 bt ".wc.wd configure -text {1}"
 process_buffer
 l:(:CALLBACK "we" 0)&amp;lt;=
 buffer size 27
 bt ".wc.wd configure -text {0}"

So I assume, the callback is executed properly. But the diplayed text of
LABEL-WIDGET is not changed at all.

I have tried to use "text" and 'text instead of :text, but none of those seems
to make any difference.

This is on opensuse-12.1 with tk-8.5 and I use LTK-0.98, as it bundled with
the newest quicklisp distro.

Any ideas what I am missing here? Here is the complete debug output of LTK:

; compiling (WITH-LTK NIL ...)buffer size 19
bt "package require Tk"
process_buffer
add-callback (we #&amp;lt;CLOSURE (LAMBDA (VAL)
                             :IN
                             "/lisp/ltk-test.lisp")
                             {C1D9FA5}&amp;gt;)
buffer size 3519
bt "if {\[catch {package require Ttk} err\]} {tk_messageBox -icon error -type
ok -message \"\$err\"}"
bt "proc debug { msg } {
       global server
       puts \$server \"(:debug \\\"\[escape \$msg\]\\\")\"
       flush \$server
    } "
bt "proc escape {s} {regsub -all {\\\\} \$s {\\\\\\\\} s1;regsub -all {\"}
\$s1 {\\\"} s2;return \$s2}"
bt "proc senddata {s} {global server; puts \$server \"(:data \[escape
\$s\])\";flush \$server}"
bt "proc senddatastring {s} {
       global server
       
       puts \$server \"(:data \\\"\[escape \$s\]\\\")\"
       flush \$server
    } "
bt "proc senddatastrings {strings} {
                 global server 
                 puts \$server \"(:data (\"
                          foreach s \$strings {
                     puts \$server \"\\\"\[escape \$s\]\\\"\"
                     }
                 puts \$server \"))\";flush \$server} "
bt "proc to_keyword  {s} {
                if {\[string index \$s 0\] == \"-\"} {
                   return \":\[string range \$s 1 \[string length \$s\]\]\" }
       {return \":\$s\"}}"
bt "proc sendpropertylist {l} {
               global server; 
               set pos 0
               set ll \[llength \$l\]
               puts \$server \"(:data (\"
               while {\$pos &amp;lt; \$ll} {
                 puts \$server \" \[to_keyword \[lindex \$l \$pos\]\] \"
                 set pos \[expr \$pos + 1\]
                 puts \$server \" \[lindex \$l \$pos\] \"
                 set pos \[expr \$pos + 1\]
                }
               puts \$server \"))\"
                  
}"
bt "proc searchall {widget pattern} {
                  set l \[string length \$pattern\]
                 set result \[\$widget search \$pattern 1.0\]
                 set previous 0
                 while {\$result &amp;gt; \$previous} {
                     \$widget tag add sel \$result \$result+\${l}chars
                     set previous \$result
                     set result \[\$widget search \$pattern
                     \$result+\${l}chars\]
                 }
             }"
bt "proc searchnext {widget pattern} {
                 set l \[string length \$pattern\]
                 set result \[\$widget search \$pattern insert\]
                 if {\$result &amp;gt; 0} {
                     \$widget tag remove sel 1.0 end
                     \$widget tag add sel \$result \$result+\${l}chars
                     \$widget mark set insert \$result+\${l}chars
                     \$widget see insert
                 }
             }"
bt "proc resetScroll {c} {
      \$c configure -scrollregion \[\$c bbox all\]
}

proc moveToStart {sb} {
   set range \[\$sb get\]
   \$sb set 0 \[expr \[lindex \$range 1\] - \[lindex \$range 0\]\]
 }
"
bt "proc sendevent {s x y keycode char width height root_x root_y
   mouse_button} {global server; puts \$server \"(:event \\\"\$s\\\" \$x \$y
   \$keycode \$char \$width \$height \$root_x \$root_y \$mouse_button)\";
   flush \$server} "
bt "proc callback {s} {global server; puts \$server \"(:callback
   \\\"\$s\\\")\";flush \$server} "
bt "proc callbackval {s val} {global server; puts \$server \"(:callback
   \\\"\$s\\\" \$val)\"} "
bt "proc callbackstring {s val} {global server; puts \$server \"(:callback
   \\\"\$s\\\" \\\"\[escape \$val\]\\\")\"} "
bt "proc keepalive {} {global server; puts \$server \"(:keepalive  \\\"\[clock
   format \[clock seconds\] -format \"%d/%m/%y %T\"\]\\\")\"; flush \$server}"
bt "global text_wd ; set text_wd \"initial text\""
bt "global text_we ; set text_we \"check me\""
bt "ttk::frame .wc "
bt "ttk::checkbutton .wc.we  -command {callbackval we \$we} -textvariable
   text_we"
bt ".wc.we configure -variable we ; global we ; set we {}"
bt "pack .wc -side top -fill none"
bt "ttk::label .wc.wd  -textvariable text_wd"
bt "pack .wc.wd -side left -fill none"
bt "pack .wc.we -side left -fill none"
bt ".wc configure -borderwidth {3}"
bt ".wc configure -relief {sunken}"
bt ".wc.wd configure -text {x}"
process_buffer
l:(:CALLBACK "we" 1)&amp;lt;=
buffer size 27
bt ".wc.wd configure -text {1}"
process_buffer
l:(:CALLBACK "we" 0)&amp;lt;=
buffer size 27
bt ".wc.wd configure -text {0}"
process_buffer
Closing wish stream: #&amp;lt;TWO-WAY-STREAM
                       :INPUT-STREAM #&amp;lt;SB-SYS:FD-STREAM for "descriptor 9"
                                       {C11D111}&amp;gt;
                       :OUTPUT-STREAM #&amp;lt;SB-SYS:FD-STREAM
                                        for "descriptor 8" {C11D4C9}&amp;gt;&amp;gt;

&lt;/pre&gt;</description>
    <dc:creator>Josef Wolf</dc:creator>
    <dc:date>2012-11-19T16:29:16</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.lisp.ltk.user/498">
    <title>Updating the canvas</title>
    <link>http://permalink.gmane.org/gmane.lisp.ltk.user/498</link>
    <description>&lt;pre&gt;Hi everyone,

I'm trying to update the canvas at regular intervals as currently it only does so once my program has finished.  I know there's a Tk 'update' command have been unable to find an example of its use in LTk.  I'd be very grateful if someone could tell me if it is possible to use this command in LTk and if so, how to do it.

Many thanks,

David

---
David Peebles PhD
Reader in Cognitive Science,
Department of Behavioural and Social Sciences,
University of Huddersfield
Queensgate, Huddersfield, HD1 3DH


---
This transmission is confidential and may be legally privileged. If you receive it in error, please notify us immediately by e-mail and remove it from your system. If the content of this e-mail does not relate to the business of the University of Huddersfield, then we do not endorse it and will accept no liability.

&lt;/pre&gt;</description>
    <dc:creator>David Peebles</dc:creator>
    <dc:date>2012-11-10T17:33:12</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.lisp.ltk.user/497">
    <title>Re: run-time error =&gt; Invalid initialization argument: :FONT</title>
    <link>http://permalink.gmane.org/gmane.lisp.ltk.user/497</link>
    <description>&lt;pre&gt;Hi, ltk-users,

Sorry, I forgot to tell you the version of ltk that I use.
It is ltk-0.98.

--
haruichi yabuki &amp;lt;hyabuki&amp;lt; at &amp;gt;zb.ztv.ne.jp&amp;gt;


&lt;/pre&gt;</description>
    <dc:creator>haruichi yabuki</dc:creator>
    <dc:date>2012-11-09T02:28:48</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.lisp.ltk.user/496">
    <title>run-time error =&gt; Invalid initialization argument: :FONT</title>
    <link>http://permalink.gmane.org/gmane.lisp.ltk.user/496</link>
    <description>&lt;pre&gt;Hi, ltk-users,

I am very much troubled by the following situation.
Can someone help me?

The program below gives the error message at run-time:


The program is as follos:
-------------------------------------------------------------
(asdf:operate 'asdf:load-op :ltk :verbose nil)
(defpackage :ltk-user
  (:use :common-lisp :cl-user :ltk))
(in-package :ltk-user)
(with-ltk ()
  (wm-title *tk* "an example of button")
  (bind *tk* "&amp;lt;Alt-q&amp;gt;" (lambda (event) (setf *exit-mainloop* t)))
  (let ((btn (make-instance 'button
                            :master nil
                            :text "BUTTON"
                            :font "verdana 20"
                            :command (lambda ()
                                       (format t "the button is pushed.~%")
                                       (setf *exit-mainloop* t)))))
;    (configure btn :font "verdana 20")
    (pack btn)))
;; end
-----------------------------------------------------------------
(without the line
    :font "verdana 20"
 the program works fine.)

 
My environement is as follows:
OS:   Ubuntu 12.04
$ sbcl --version
SBCL 1.0.55.0.debian
$ wish
% puts $tcl_version
8.5


It seems to me that many options of tk give this kind of error messages
everywhere in my 'wrong' programming environement! 
The above is one of the simple examples.
I would like to know how to fix the problem.
Thank you in advance.
--
haruichi yabuki &amp;lt;hyabuki&amp;lt; at &amp;gt;zb.ztv.ne.jp&amp;gt;

&lt;/pre&gt;</description>
    <dc:creator>haruichi yabuki</dc:creator>
    <dc:date>2012-11-09T01:33:11</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.lisp.ltk.user/495">
    <title>Re: listbox api</title>
    <link>http://permalink.gmane.org/gmane.lisp.ltk.user/495</link>
    <description>&lt;pre&gt;Hello,

thanks, I'm doing the same, didn't know that listbox stores them as
strings though. Never used Tk actually ))

2012/11/2 Peter Herth &amp;lt;herth&amp;lt; at &amp;gt;peter-herth.de&amp;gt;:



&lt;/pre&gt;</description>
    <dc:creator>Nikita B. Zuev</dc:creator>
    <dc:date>2012-11-03T10:14:48</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.lisp.ltk.user/494">
    <title>Re: listbox api</title>
    <link>http://permalink.gmane.org/gmane.lisp.ltk.user/494</link>
    <description>&lt;pre&gt;Hi,

I keep a list of the items I inserted into the list box on the Lisp
side and use the result of listbox-get-selection to look up the items
in the list. As the objects in that list usually carry more
information than the pure strings displayed in the list box, that is
usually more useful anyway.

Peter

On Thu, Nov 1, 2012 at 4:46 PM, Nikita B. Zuev &amp;lt;nikitazu&amp;lt; at &amp;gt;gmail.com&amp;gt; wrote:

&lt;/pre&gt;</description>
    <dc:creator>Peter Herth</dc:creator>
    <dc:date>2012-11-02T09:43:44</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.lisp.ltk.user/493">
    <title>listbox api</title>
    <link>http://permalink.gmane.org/gmane.lisp.ltk.user/493</link>
    <description>&lt;pre&gt;Hello,

I'm having a little trouble with usage of a listbox in LTK library,
and would appreciate some assistance.

Documentation states that there is a LISTBOX class
http://www.peter-herth.de/ltk/ltkdoc/node25.html
but nothing about how to manipulate its contents.

Google have helped me to find LISTBOX-APPEND to add items and
LISTBOX-GET-SELECTION to
retrieve selection. Thing here is LISTBOX-GET-SELECTION returns list
of indices, not actual items,
and nothing in google says about where to apply index to get actual
selected item.
That is easy to workaround by using a separate variable to store list
of items and pushing to it
after adding item to LISTBOX instance, then getting selection from
LISTBOX and getting selected
item from this variable by index, but I have a feeling that I'm doing
it wrong, and overcomplicating
things.

Also docs say
http://www.peter-herth.de/ltk/ltkdoc/node15.html
:COMMAND initarg can be used to handle LISTBOX's selection change event, but
(MAKE-INSTANCE 'LISTBOX :command (lambda () ... )) fails saying it has
no such initarg,
well BIND works, so its ok probably.

Main question is, can someone please provide me with a little example
of LISTBOX's proper usage?

LTK library is from the quicklisp repository.

Thanks.

&lt;/pre&gt;</description>
    <dc:creator>Nikita B. Zuev</dc:creator>
    <dc:date>2012-11-01T15:46:39</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.lisp.ltk.user/492">
    <title>Re: two beginner questions (iterate over children /X_cursor)</title>
    <link>http://permalink.gmane.org/gmane.lisp.ltk.user/492</link>
    <description>&lt;pre&gt;Hi,

sorry for the late reply, it somehow fell through my inbox. See for
the answers below,

Peter

On Sun, Sep 30, 2012 at 11:12 PM,  &amp;lt;harven&amp;lt; at &amp;gt;free.fr&amp;gt; wrote:

No, there is no such function. But I don't think I ever needed it, as
I have the references to all widgets I created on the Lisp side
anyway. Just use (list label-1 label-2 ...) in your loop instead of
the call to children.


Ah, probably the only cursor which starts with a capital lettter, I
need to fix this. Thanks for pointing that out.


&lt;/pre&gt;</description>
    <dc:creator>Peter Herth</dc:creator>
    <dc:date>2012-10-26T15:35:23</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.lisp.ltk.user/491">
    <title>two beginner questions (iterate over children / X_cursor)</title>
    <link>http://permalink.gmane.org/gmane.lisp.ltk.user/491</link>
    <description>&lt;pre&gt;Hi, 

I am working through the tk tutorial using ltk
http://www.tkdocs.com/tutorial/firstexample.html
One of the first examples is a feet-to-meter converter.

At some point, the padding of the widgets is set by looping through
the children of the mainframe.

  foreach w [winfo children .c] {grid configure $w -padx 5 -pady 5}

Q1: How can I do this with ltk ? Is there a function that returns the list 
of the children of a widget ?

Q2: The *cursor* variable lists "X_cursor" as its first element, but tk 
reports an error. 

  (with-ltk nil 
     (pack (make-instance 'button
                       :text "some" :cursor "X_cursor" :width 15)))

 =&amp;gt; Tcl/Tk error: bad cursor spec "x_cursor"

This is the sole cursor in *cursor* that produces an error.
I am using gnu/linux on debian squeeze stable and tk 8.5.


Finally, here is my attempt at building the converter. It seems to work, I welcome
any comments or advices. 


(defun calculate (arg)
  (let* ((*read-eval* nil)
         (num (read-from-string arg)))
    (if (numberp num) (format nil "~,4f" (* 0.3048 num)) "" )))

(defun converter-ltk ()
  (with-ltk ()
    (let* ((mainframe (make-instance 'frame :padding "\"3 3 12 12\""))
           (feet-entry (make-instance 'entry :width 7 :master mainframe))
           (label-1 (make-instance 'label :master mainframe))
           (label-2 (make-instance 'label  :text "feet" :master mainframe))
           (label-3 (make-instance 'label  :text "is equivalent to"
                                   :master mainframe))
           (label-4 (make-instance 'label  :text "meters" :master mainframe))
           (calc    (make-instance 'button :text "Calculate" :master mainframe
                                   :command 
                                   (lambda () 
                                     (setf (text label-1)
                                           (calculate (text feet-entry)))))))
      (bind feet-entry "&amp;lt;Return&amp;gt;" (lambda (evt) 
                                    (declare (ignore evt))
                                    (setf (text label-1)
                                          (calculate (text feet-entry)))))
      (wm-title *tk* "Feet to Meters")
      (grid mainframe 0 0 :sticky "nesw")
      (grid-columnconfigure mainframe 0 :weight 1)
      (grid-rowconfigure    mainframe 0 :weight 1)
      (grid feet-entry 1 2 :sticky "we")
      (grid label-1    2 2 :sticky "we")
      (grid label-2    1 3 :sticky "w")
      (grid label-3    2 1 :sticky "e")
      (grid label-4    2 3 :sticky "w")
      (grid calc       3 3 :sticky "w")
;      (loop for child in (children mainframe "winfo") ;; ??
;            do (configure child :padx 5 :pady 5))     ;; ??
      (focus feet-entry))))

&lt;/pre&gt;</description>
    <dc:creator>harven&lt; at &gt;free.fr</dc:creator>
    <dc:date>2012-09-30T21:12:27</dc:date>
  </item>
  <textinput rdf:about="http://search.gmane.org/?group=$group=gmane.lisp.ltk.user">
    <title>Search Engine</title>
    <description>Search the mailing list at Gmane</description>
    <name>query</name>
    <link>http://search.gmane.org/?group=$group=gmane.lisp.ltk.user</link>
  </textinput>
</rdf:RDF>
