From: Peter Herth
Subject: [ANN] Ltk - The Lisp Toolkit
Date: 
Message-ID: <caa7rg$pde$1@newsreader2.netcologne.de>
Hi,

I am proud to announce Ltk version 0.8. Ltk is a Lisp binding
to the Tk toolkit, offering a portable GUI for Common Lisp. It
is portable not only between different operation systems as well
as Lisp implementations. In contrary to other Tk bindings so far,
Ltk is a complete lispy wrapper - that is, no Tcl/Tk knowledge
is required. While not completely finished, (thus the 0.8 version
number) it is quite stable and usable.

You can find the package, its documentation and of course,
some screenshots here:

http://www.peter-herth.de/ltk/

Peter

-- 
Peter Herth
pet project: http://dawn.netcologne.de
homepage:    http://www.peter-herth.de
lisp stuff:  http://www.peter-herth.de/lisp.html

From: Peter Seibel
Subject: Re: [ANN] Ltk - The Lisp Toolkit
Date: 
Message-ID: <m3wu2fqmzk.fsf@javamonkey.com>
Peter Herth <·····@netcologne.de> writes:

> Hi,
>
> I am proud to announce Ltk version 0.8. Ltk is a Lisp binding
> to the Tk toolkit, offering a portable GUI for Common Lisp. It
> is portable not only between different operation systems as well
> as Lisp implementations. In contrary to other Tk bindings so far,
> Ltk is a complete lispy wrapper - that is, no Tcl/Tk knowledge
> is required. While not completely finished, (thus the 0.8 version
> number) it is quite stable and usable.
>
> You can find the package, its documentation and of course,
> some screenshots here:
>
> http://www.peter-herth.de/ltk/

Cool. I see in the "Under the hood" section of your docs that Lisp
communicates to Tk via as stream. Just out of curiosity, is this how
other language's bindings to Tk (such as Perl's and Python's) work?

-Peter

-- 
Peter Seibel                                      ·····@javamonkey.com

         Lisp is the red pill. -- John Fraser, comp.lang.lisp
From: Raymond Toy
Subject: Re: [ANN] Ltk - The Lisp Toolkit
Date: 
Message-ID: <sxd3c531581.fsf@edgedsp4.rtp.ericsson.se>
>>>>> "Peter" == Peter Seibel <·····@javamonkey.com> writes:

    Peter> Cool. I see in the "Under the hood" section of your docs that Lisp
    Peter> communicates to Tk via as stream. Just out of curiosity, is this how
    Peter> other language's bindings to Tk (such as Perl's and Python's) work?

STk, a scheme interface to Tk, builds directly on Tk, and integrates
pretty closely.  I think it's more than just "using" Tk as a library.

Haven't used this in a long time, though.  But the Tk widgets were all
very nicely integrated into scheme, including callbacks.

Ray
From: Peter Herth
Subject: Re: [ANN] Ltk - The Lisp Toolkit
Date: 
Message-ID: <caaa6c$pe$1@newsreader2.netcologne.de>
Peter Seibel wrote:

> Cool. I see in the "Under the hood" section of your docs that Lisp
> communicates to Tk via as stream. Just out of curiosity, is this how
> other language's bindings to Tk (such as Perl's and Python's) work?

I am not too familiar with their implementations, but I think
Python started its Tk support in a similiar way and only later
directly linked to the Tk libraries.

Peter

-- 
Peter Herth
pet project: http://dawn.netcologne.de
homepage:    http://www.peter-herth.de
lisp stuff:  http://www.peter-herth.de/lisp.html
From: Pascal Costanza
Subject: Re: [ANN] Ltk - The Lisp Toolkit
Date: 
Message-ID: <caaame$1ui$1@newsreader2.netcologne.de>
Peter Herth wrote:

> Peter Seibel wrote:
> 
>>Cool. I see in the "Under the hood" section of your docs that Lisp
>>communicates to Tk via as stream. Just out of curiosity, is this how
>>other language's bindings to Tk (such as Perl's and Python's) work?
> 
> I am not too familiar with their implementations, but I think
> Python started its Tk support in a similiar way and only later
> directly linked to the Tk libraries.

...and this is probably also an option for LTK in the long run, right?


By the way, I have seen Peter's demo of a pre-release version at the 
last cl-lc meeting, and it was quite impressive, with lots of very 
Lispish little features (debugging on the fly, etc.)


Pascal

-- 
1st European Lisp and Scheme Workshop
June 13 - Oslo, Norway - co-located with ECOOP 2004
http://www.cs.uni-bonn.de/~costanza/lisp-ecoop/
From: Peter Herth
Subject: Re: [ANN] Ltk - The Lisp Toolkit
Date: 
Message-ID: <caab2u$1fu$2@newsreader2.netcologne.de>
Pascal Costanza wrote:

> ...and this is probably also an option for LTK in the long run, right?

Hehe, yes, I have considered that also. The main advantage of this
would be some speed gain, especially if you wanted to do pixel
manipulations of bitmaps displayed (for most other uses, the stream-based
version should be fast enough). If we do not want to sacrifice portability,
an UFFI-based version might be neat. As soon one adds call-back support
to UFFI I might give it a try...
 
> By the way, I have seen Peter's demo of a pre-release version at the
> last cl-lc meeting, and it was quite impressive, with lots of very
> Lispish little features (debugging on the fly, etc.)

Thank you :)

Peter

-- 
Peter Herth
pet project: http://dawn.netcologne.de
homepage:    http://www.peter-herth.de
lisp stuff:  http://www.peter-herth.de/lisp.html
From: Marco Antoniotti
Subject: Re: [ANN] Ltk - The Lisp Toolkit
Date: 
Message-ID: <lI6yc.12$2i5.6643@typhoon.nyu.edu>
Peter Herth wrote:
> Hi,
> 
> I am proud to announce Ltk version 0.8. Ltk is a Lisp binding
> to the Tk toolkit, offering a portable GUI for Common Lisp.

Does it run under LispWorks?

Cheers
--
Marco
From: Pascal Costanza
Subject: Re: [ANN] Ltk - The Lisp Toolkit
Date: 
Message-ID: <caboc6$reh$1@newsreader2.netcologne.de>
Marco Antoniotti wrote:

> Peter Herth wrote:
> 
>> Hi,
>>
>> I am proud to announce Ltk version 0.8. Ltk is a Lisp binding
>> to the Tk toolkit, offering a portable GUI for Common Lisp.
> 
> Does it run under LispWorks?

Yes. The presentation Peter gave was under LispWorks for Macintosh.


Pascal

-- 
1st European Lisp and Scheme Workshop
June 13 - Oslo, Norway - co-located with ECOOP 2004
http://www.cs.uni-bonn.de/~costanza/lisp-ecoop/
From: Peter Herth
Subject: Re: [ANN] Ltk - The Lisp Toolkit
Date: 
Message-ID: <caboo8$sfg$1@newsreader2.netcologne.de>
Marco Antoniotti wrote:

> Does it run under LispWorks?

Yes. Ltk currently runs under Allegro (thanks to Martin Elster for the
patch), CMUCL, LispWorks, and SBCL. I tested it under Linux and Mac OS X,
but in principle there are no reasons to prevent it running under other
operating systems. There is only a single non-portable function in Ltk,
it is do-excecute where the subprocess for Tk is started. So if your
Lisp is missing in the list above, please add it and send me the patch :).

Peter

-- 
Peter Herth
pet project: http://dawn.netcologne.de
homepage:    http://www.peter-herth.de
lisp stuff:  http://www.peter-herth.de/lisp.html
From: Marco Antoniotti
Subject: Re: [ANN] Ltk - The Lisp Toolkit
Date: 
Message-ID: <ETjyc.13$2i5.5807@typhoon.nyu.edu>
Peter Herth wrote:
> Marco Antoniotti wrote:
> 
> 
>>Does it run under LispWorks?
> 
> 
> Yes. Ltk currently runs under Allegro (thanks to Martin Elster for the
> patch), CMUCL, LispWorks, and SBCL. I tested it under Linux and Mac OS X,
> but in principle there are no reasons to prevent it running under other
> operating systems. There is only a single non-portable function in Ltk,
> it is do-excecute where the subprocess for Tk is started. So if your
> Lisp is missing in the list above, please add it and send me the patch :).
> 

That is good news.  Do you use UFFI?

Cheers
--
Marco
From: Peter Herth
Subject: Re: [ANN] Ltk - The Lisp Toolkit
Date: 
Message-ID: <cacsb1$dbl$1@newsreader2.netcologne.de>
Marco Antoniotti wrote:

> That is good news.  Do you use UFFI?

No. Which makes Tk suitiable for an easy and portable solution, is, that
it comes with the program wish. This is the shell which executes tcl/tk
programs, but if no script is given, it reads tcl commands via 
stdin and responds to stdout. So a subprocess is started running wish
(this is the single function that needs ported to different Lisps) and
the stdin/stdout of this subprocess is turned into a Lisp stream. From
there on we can do all communication with format/read. 
(there is some comprehensive documentation on my Ltk page:
http://www.peter-herth.de/ltk/ )

Peter

-- 
Peter Herthhttp://www.peter-herth.de/ltk/
pet project: http://dawn.netcologne.de
homepage:    http://www.peter-herth.de
lisp stuff:  http://www.peter-herth.de/lisp.html
From: Peter Herth
Subject: Ltk-remote
Date: 
Message-ID: <caaajf$1fu$1@newsreader2.netcologne.de>
Besides the Ltk package for creating GUI applications, the tarball
of Ltk additionally contains ltk-remote. Ltk-remote is a package
to create networked gui applications. That is, your application is
run as a server process, and any number of clients can connect to
it and run the GUI application using a client software (remote.tcl).
As Ltk uses streams to talk to the GUI, it was easy to make it
networkable. As it requires some more nonportable stuff (sockets,
threads), ltk-remote is a little bit less portable, but support
for CMUCL, SBCL and Lispworks is there.

Peter

-- 
Peter Herth
pet project: http://dawn.netcologne.de
homepage:    http://www.peter-herth.de
lisp stuff:  http://www.peter-herth.de/lisp.html
From: Kenny Tilton
Subject: Re: [ANN] Ltk - The Lisp Toolkit
Date: 
Message-ID: <YD4yc.173244$WA4.141493@twister.nyc.rr.com>
Peter Herth wrote:

> Hi,
> 
> I am proud to announce Ltk version 0.8. Ltk is a Lisp binding
> to the Tk toolkit, offering a portable GUI for Common Lisp. It
> is portable not only between different operation systems as well
> as Lisp implementations. In contrary to other Tk bindings so far,
> Ltk is a complete lispy wrapper - that is, no Tcl/Tk knowledge
> is required. While not completely finished, (thus the 0.8 version
> number) it is quite stable and usable.
> 
> You can find the package, its documentation and of course,
> some screenshots here:
> 
> http://www.peter-herth.de/ltk/

Cells/Tk! I'll try give it a go.

btw, the Cello code has some callback extensions to fill in the UFFI 
gap, but not much: just AllegroCL and Lispworks. But it's a start if the 
community wants to start an UFFI Callbacks mini-project. Now that 
CMUCL/SBCL handle those, maybe KR would go for adding callbacls to UFFI.

kt

-- 
Home? http://tilton-technology.com
Cells? http://www.common-lisp.net/project/cells/
Cello? http://www.common-lisp.net/project/cello/
Why Lisp? http://alu.cliki.net/RtL%20Highlight%20Film
Your Project Here! http://alu.cliki.net/Industry%20Application
From: OCID
Subject: Re: [ANN] Ltk - The Lisp Toolkit
Date: 
Message-ID: <4414486f.0406102255.7a4e1073@posting.google.com>
I tried it and it works quite well with Clisp and SBCL on Mac OS X. I
had to do a minor modification to the call to run-program. Just made
that ext:run-program and I think a couple of functions were getting
commented out by #| |#. I uncommented those. It would be a cinch to
add openmcl to this.

Its really nice to use Tk in a Lispy way.

Thanks for creating it.
From: Peter Herth
Subject: Re: [ANN] Ltk - The Lisp Toolkit
Date: 
Message-ID: <cabp7q$t61$1@newsreader2.netcologne.de>
OCID wrote:

> I tried it and it works quite well with Clisp and SBCL on Mac OS X. I
> had to do a minor modification to the call to run-program. Just made
> that ext:run-program and I think a couple of functions were getting
> commented out by #| |#. I uncommented those. It would be a cinch to
> add openmcl to this.

You mean the run-program entry for CLisp ? I changed it to ext:run-program.
The commented code are functions that are in building but not yet used, but
in the next mayor release they will be used.

So the list of supported Lisps now is: Allegro, CLisp, CMUCL, LispWorks, 
and SBCL.

Peter

-- 
Peter Herth
pet project: http://dawn.netcologne.de
homepage:    http://www.peter-herth.de
lisp stuff:  http://www.peter-herth.de/lisp.html
From: Rob Warnock
Subject: Re: [ANN] Ltk - The Lisp Toolkit
Date: 
Message-ID: <vtudndoq2NSF_1TdRVn-tA@speakeasy.net>
Peter Herth  <·····@netcologne.de> wrote:
+---------------
| I am proud to announce Ltk version 0.8. Ltk is a Lisp binding
| to the Tk toolkit, offering a portable GUI for Common Lisp...
...
| http://www.peter-herth.de/ltk/
+---------------

Looks neat! But also see:

     <URL:http://www.cliki.net/Lisp-Tk>
     <URL:http://www.cliki.net/lisp2wish>
     <URL:http://www.cliki.net/cl-gtk>
     <URL:http://www.cliki.net/clg>
     <URL:http://www.cliki.net/lgtk>

Some of these have BSD/MIT-style licenses, if the GPL of "Ltk"
doesn't work for you...


-Rob

-----
Rob Warnock			<····@rpw3.org>
627 26th Avenue			<URL:http://rpw3.org/>
San Mateo, CA 94403		(650)572-2607
From: Peter Herth
Subject: Re: [ANN] Ltk - The Lisp Toolkit
Date: 
Message-ID: <cabq3d$1ju$1@newsreader2.netcologne.de>
Rob Warnock wrote:

> Looks neat! But also see:
> 
>      <URL:http://www.cliki.net/Lisp-Tk>
>      <URL:http://www.cliki.net/lisp2wish>
>      <URL:http://www.cliki.net/cl-gtk>
>      <URL:http://www.cliki.net/clg>
>      <URL:http://www.cliki.net/lgtk>

Yes I am aware of all of these, having tried out all of them before
I started to write Ltk. The first two gave me the idea how easy it
is, to use Tk from Lisp. But they just contain code to communicate
with Tk, but they do not wrap the library itself. So you have to
write Tk code to create your GUIs and not Lisp code. That was the
reason for Ltk so you can do the GUI in Lisp and not only from Lisp...
The latter three are bindings to Gtk, wich is a very nice toolkit.
From those I think, Mario's lgtk is the most promising. As they
directly link to Lisp, they should be somewhat faster than Ltk,
but this linking limits portability.

> Some of these have BSD/MIT-style licenses, if the GPL of "Ltk"
> doesn't work for you...

I have to stress that Ltk is LGPL *not* GPL. That means you are 
free to use it even in commercial/closed source programs. The
only restriction is, that if you change the Ltk code itself, you
may not distribute it without publishing the source of your changes,
but all application code using Ltk can be as closed source as 
you want :). 
By choosing the LGPL as license for the Ltk code I do not want
to limit the use of Ltk in any way, but only ensure, that every
change to Ltk itself gets back to the Lisp community. 
If there are any problems with the Ltk license, please point
them out. I do not want license problems to prevent its usage.

Peter

-- 
Peter Herth
pet project: http://dawn.netcologne.de
homepage:    http://www.peter-herth.de
lisp stuff:  http://www.peter-herth.de/lisp.html
From: Rob Warnock
Subject: Re: [ANN] Ltk - The Lisp Toolkit
Date: 
Message-ID: <vfGdnSsdWLphDFTdRVn-vA@speakeasy.net>
Peter Herth  <·····@netcologne.de> wrote:
+---------------
| Rob Warnock wrote:
| > Some of these have BSD/MIT-style licenses, if the GPL of "Ltk"
| > doesn't work for you...
| 
| I have to stress that Ltk is LGPL *not* GPL.
+---------------

Oops! Correction noted.

+---------------
| That means you are free to use it even in commercial/closed source
| programs. The only restriction is, that if you change the Ltk code
| itself, you may not distribute it without publishing the source of
| your changes, but all application code using Ltk can be as closed
| source as you want :). 
| By choosing the LGPL as license for the Ltk code I do not want
| to limit the use of Ltk in any way, but only ensure, that every
| change to Ltk itself gets back to the Lisp community. 
| If there are any problems with the Ltk license, please point
| them out. I do not want license problems to prevent its usage.
+---------------

Apologies. I didn't mean to be critical. Your package looks like
a very nice contribution to the state of the art, and is appreciated.
But it's not clear that the LGPL "does the right thing" when applied
to Lisp code, which is why Franz invented the LLGPL:

    <URL:http://opensource.franz.com/preamble.html>

It's not even 100% certain (IMHO) that the LLGPL doesn't violate the
LGPL, since provision #10 of the LGPL says:

    ... You may not impose any further restrictions on the recipients'
    exercise of the rights granted herein. ...

which the LLGPL "preamble" perhaps violates by making its "certain
clarifications" of the LGPL (specifically, those affecting #5 & #6).

Still, the LLGPL is probably better than the LGPL for Lisp code, and
a number of packages now use it, so if you could see your way clear
to using it instead of the LGPL, some of us would probably feel more
comfortable.

Thanks again for the nice library...


-Rob

-----
Rob Warnock			<····@rpw3.org>
627 26th Avenue			<URL:http://rpw3.org/>
San Mateo, CA 94403		(650)572-2607
From: Peter Herth
Subject: Re: [ANN] Ltk - The Lisp Toolkit
Date: 
Message-ID: <cac6re$sjf$1@newsreader2.netcologne.de>
Rob Warnock wrote:

> Apologies. I didn't mean to be critical. Your package looks like
No need to apologize. I answered a little bit in length to prevent
either a possible misunderstandig and to make sure *I* haven't
messed something up with the license. :)

> a very nice contribution to the state of the art, and is appreciated.
> But it's not clear that the LGPL "does the right thing" when applied
> to Lisp code, which is why Franz invented the LLGPL:
> 
>     <URL:http://opensource.franz.com/preamble.html>
> 
> It's not even 100% certain (IMHO) that the LLGPL doesn't violate the
> LGPL, since provision #10 of the LGPL says:
> 
>     ... You may not impose any further restrictions on the recipients'
>     exercise of the rights granted herein. ...
> 
> which the LLGPL "preamble" perhaps violates by making its "certain
> clarifications" of the LGPL (specifically, those affecting #5 & #6).

Hmm, IANAL but while you may not impose those restrictions on software
under the LGPL, what the preamble does is create an entirely new license
which shares some common text parts with the LGPL. So unless that
creates copyright problems with the authors of the LGPL, this should
not concern users of this license. However I think it would be more
clean and simple, if Franz would write a single new license file
based on their preamble and the LGPL (though they have probably
good reasons to do it the way they do now :).
 
> Still, the LLGPL is probably better than the LGPL for Lisp code, and
> a number of packages now use it, so if you could see your way clear
> to using it instead of the LGPL, some of us would probably feel more
> comfortable.

I just uploaded a new version of Ltk with the LLGPL license.

Peter

-- 
Peter Herth
pet project: http://dawn.netcologne.de
homepage:    http://www.peter-herth.de
lisp stuff:  http://www.peter-herth.de/lisp.html
From: Rob Warnock
Subject: Re: [ANN] Ltk - The Lisp Toolkit
Date: 
Message-ID: <MYKdnVbY8YDXw1fdRVn-jg@speakeasy.net>
Peter Herth  <·····@netcologne.de> wrote:
+---------------
| Rob Warnock wrote:
| > which the LLGPL "preamble" perhaps violates by making its "certain
| > clarifications" of the LGPL (specifically, those affecting #5 & #6).
| 
| Hmm, IANAL but while you may not impose those restrictions on software
| under the LGPL, what the preamble does is create an entirely new license...
+---------------

Hmmm... Good point. (Note: IANAL, either.)

+---------------
| I just uploaded a new version of Ltk with the LLGPL license.
+---------------

Thanks!


-Rob

-----
Rob Warnock			<····@rpw3.org>
627 26th Avenue			<URL:http://rpw3.org/>
San Mateo, CA 94403		(650)572-2607
From: Peter Lewerin
Subject: Re: [ANN] Ltk - The Lisp Toolkit
Date: 
Message-ID: <b72f3640.0406111419.3d83f522@posting.google.com>
Peter Herth <·····@netcologne.de> wrote 

> I am proud to announce Ltk version 0.8. Ltk is a Lisp binding

I just tried it and encountered a problem: running (test), Lispworks
complained that

    Error: The class #<STANDARD-CLASS MENUBUTTON 21515764> cannot 
    be finalized because the following superclass is not defined: 
    #<FORWARD-REFERENCED-CLASS VARIABLE 215157C4>.

I'll try to take a look at it in the morning; I posted it here in case
it's a well-known bug.

(It's Lispworks Personal Edition 4.3.6 and Tcl 8.4.6.0 running under
Windows XP, btw.)
From: Sergey Kataev
Subject: Re: [ANN] Ltk - The Lisp Toolkit
Date: 
Message-ID: <G9syc.702$KL6.605@newsfe5-win>
Peter Lewerin wrote:
> I just tried it and encountered a problem: running (test), Lispworks
> complained that
> 
>     Error: The class #<STANDARD-CLASS MENUBUTTON 21515764> cannot 
>     be finalized because the following superclass is not defined: 
>     #<FORWARD-REFERENCED-CLASS VARIABLE 215157C4>.
> 
> I'll try to take a look at it in the morning; I posted it here in case
> it's a well-known bug.
> 
> (It's Lispworks Personal Edition 4.3.6 and Tcl 8.4.6.0 running under
> Windows XP, btw.)

My CLISP started to swear on menubutton's VARIABLE too, and I have just 
removed the bloody VARIABLE from the class definition. Worked alright.

line 559:
(defclass menubutton(widget)
   ((text :accessor text :initarg :text)
    (command :accessor command :initarg :command :initform nil)))

Hope it wasnt too rude,
   Sergey
From: Peter Herth
Subject: Re: [ANN] Ltk - The Lisp Toolkit
Date: 
Message-ID: <cadfm1$kp0$1@newsreader2.netcologne.de>
Peter Lewerin wrote:

> I just tried it and encountered a problem: running (test), Lispworks
> complained that
> 
>     Error: The class #<STANDARD-CLASS MENUBUTTON 21515764> cannot
>     be finalized because the following superclass is not defined:
>     #<FORWARD-REFERENCED-CLASS VARIABLE 215157C4>.
> 
> I'll try to take a look at it in the morning; I posted it here in case
> it's a well-known bug.

Sorry, that was me. I have of course not stopped working at the code, but
at the wrong point choose to upload an untested version. I think I have
fixed that bug and uploaded the bugfix. Thank you for pointing to it.

Peter

-- 
Peter Herth
pet project: http://dawn.netcologne.de
homepage:    http://www.peter-herth.de
lisp stuff:  http://www.peter-herth.de/lisp.html
From: Peter Lewerin
Subject: Re: [ANN] Ltk - The Lisp Toolkit
Date: 
Message-ID: <b72f3640.0406121127.62d10966@posting.google.com>
> Sorry, that was me. I have of course not stopped working at the code,

Naughty :-)

Works like a charm now.  I'm going to dig deeper into this as time allows.

(BTW: I'm currently working on a limited implementation of Lisp in Tcl.)
From: Rob Warnock
Subject: Re: [ANN] Ltk - The Lisp Toolkit
Date: 
Message-ID: <L6OdnfAsvqHkLFbdRVn-hQ@speakeasy.net>
Peter Lewerin <·············@swipnet.se> wrote:
+---------------
| (BTW: I'm currently working on a limited implementation of Lisp in Tcl.)
+---------------

You might have an easier time of it working in the other direction...  ;-}


-Rob

-----
Rob Warnock			<····@rpw3.org>
627 26th Avenue			<URL:http://rpw3.org/>
San Mateo, CA 94403		(650)572-2607
From: Peter Lewerin
Subject: Re: [ANN] Ltk - The Lisp Toolkit
Date: 
Message-ID: <b72f3640.0406130128.76c2aa3b@posting.google.com>
····@rpw3.org (Rob Warnock) wrote 
> Peter Lewerin <·············@swipnet.se> wrote:

> | (BTW: I'm currently working on a limited implementation of Lisp in Tcl.)

> You might have an easier time of it working in the other direction...  ;-}

That's most likely true, but it isn't what I want to do.

Actually, it's not that hard to implement basic Lisp functionality in
Tcl.  Doing it in C would be a lot harder.
From: Kenny Tilton
Subject: Re: [ANN] Ltk - The Lisp Toolkit
Date: 
Message-ID: <vFpyc.177374$WA4.115492@twister.nyc.rr.com>
Peter Herth wrote:

> Hi,
> 
> I am proud to announce Ltk version 0.8. Ltk is a Lisp binding
> to the Tk toolkit, offering a portable GUI for Common Lisp. It
> is portable not only between different operation systems as well
> as Lisp implementations. In contrary to other Tk bindings so far,
> Ltk is a complete lispy wrapper - that is, no Tcl/Tk knowledge
> is required. While not completely finished, (thus the 0.8 version
> number) it is quite stable and usable.
> 
> You can find the package, its documentation and of course,
> some screenshots here:
> 
> http://www.peter-herth.de/ltk/

(1) Will this be moving to common-lisp.net?

(2) I got it to work a little on WinXP under Allegro 6.2, adding in 
do-execute:

     #+allegro (excl:run-shell-command fullstring
                 :input :stream
                 :output :stream
                 :wait nil)

Anyone see a problem with that? When I run hello-1 the window appears, 
but (all but one time) is completely unresponsive. One time I clicked 
away happily a few times, the messages appeared in the console, but then 
it stopped working after a sequence of bouncing to the Lisp console and 
back. Not sure of the exact sequence and have not been able to recreate. 
Closing the window leads to windows telling me the program is 
unresponsive and I have to whack it.

Anyone have better luck on win32 with allegrocl?

kenny


-- 
Home? http://tilton-technology.com
Cells? http://www.common-lisp.net/project/cells/
Cello? http://www.common-lisp.net/project/cello/
Why Lisp? http://alu.cliki.net/RtL%20Highlight%20Film
Your Project Here! http://alu.cliki.net/Industry%20Application
From: Peter Herth
Subject: Re: [ANN] Ltk - The Lisp Toolkit
Date: 
Message-ID: <cadf5o$jq0$1@newsreader2.netcologne.de>
Kenny Tilton wrote:

> (1) Will this be moving to common-lisp.net?

Yes, why not :). 
 
> (2) I got it to work a little on WinXP under Allegro 6.2, adding in
> do-execute:
> 
>      #+allegro (excl:run-shell-command fullstring
>                  :input :stream
>                  :output :stream
>                  :wait nil)

Another Ltk user sent me the following entry for do-execute:
#+:allegro (let ((proc (excl:run-shell-command
                         (apply #'vector program program args)
                         :input :stream :output :stream :wait wt)))
                (unless proc
                  (error "Cannot create process."))   
                proc
                )
I don't know whether it makes a difference to yours...

> Anyone see a problem with that? When I run hello-1 the window appears,
> but (all but one time) is completely unresponsive. One time I clicked
> away happily a few times, the messages appeared in the console, but then
> it stopped working after a sequence of bouncing to the Lisp console and
> back. Not sure of the exact sequence and have not been able to recreate.
> Closing the window leads to windows telling me the program is
> unresponsive and I have to whack it.
> 
> Anyone have better luck on win32 with allegrocl?

Sorry I can provide not much help here, having neither Win nor Allegro.
I hope other Ltk users can help out here. The only thing that might 
give information may be the debug output of Ltk on the Lisp console.
Everything sent to Tk and read from it is echoed there. When a button
is pressed, a list containing he button name is sent back to Lisp and 
should be read. Besides some technical issues of Windows itself it could
be that read belches somehow on the strings sent by Tk.

Peter

-- 
Peter Herth
pet project: http://dawn.netcologne.de
homepage:    http://www.peter-herth.de
lisp stuff:  http://www.peter-herth.de/lisp.html
From: Kenny Tilton
Subject: Re: [ANN] Ltk - The Lisp Toolkit
Date: 
Message-ID: <b0uyc.177846$WA4.22228@twister.nyc.rr.com>
Peter Herth wrote:
> Kenny Tilton wrote:
> 
> 
>>(1) Will this be moving to common-lisp.net?
> 
> 
> Yes, why not :). 
>  
> 
>>(2) I got it to work a little on WinXP under Allegro 6.2, adding in
>>do-execute:
>>
>>     #+allegro (excl:run-shell-command fullstring
>>                 :input :stream
>>                 :output :stream
>>                 :wait nil)
> 
> 
> Another Ltk user sent me the following entry for do-execute:
> #+:allegro (let ((proc (excl:run-shell-command
>                          (apply #'vector program program args)
>                          :input :stream :output :stream :wait wt)))
>                 (unless proc
>                   (error "Cannot create process."))   
>                 proc
>                 )
> I don't know whether it makes a difference to yours...

Interesting error from that: "On Windows a string is required...."

Anyway, I did get a few more successful runs, but not reliably. But i 
found a workaround which probably points at a fix. I happen to use the 
ACL project manager, and execute code via the project manager "run 
project" command which I set up to execute hello-1. This works 
differently than running the same function from the listener command 
line. For one thing, when using "run project", output gets directed to 
the ACL console window instead of the listener window. IIUC, the Lisp 
console is a separate process. Anyway, running hello-1 from the listener 
  works, so I probably just have to set things up (in ways not yet 
known) so the run project command will work.

kenny

-- 
Home? http://tilton-technology.com
Cells? http://www.common-lisp.net/project/cells/
Cello? http://www.common-lisp.net/project/cello/
Why Lisp? http://alu.cliki.net/RtL%20Highlight%20Film
Your Project Here! http://alu.cliki.net/Industry%20Application
From: Peter Herth
Subject: Re: [ANN] Ltk - The Lisp Toolkit
Date: 
Message-ID: <caegcs$lj1$1@newsreader2.netcologne.de>
Kenny Tilton wrote:

> Anyway, I did get a few more successful runs, but not reliably. But i
> found a workaround which probably points at a fix. I happen to use the
> ACL project manager, and execute code via the project manager "run
> project" command which I set up to execute hello-1. This works
> differently than running the same function from the listener command
> line. For one thing, when using "run project", output gets directed to
> the ACL console window instead of the listener window. IIUC, the Lisp
> console is a separate process. Anyway, running hello-1 from the listener
>   works, so I probably just have to set things up (in ways not yet
> known) so the run project command will work.

I am glad to hear that there is a way to make it run for you. As
Ltk starts a subprocess to run Tk and communicates with a pipe
with this process, it may be influcenced by how Allegro handles
these processes. For example, ltk-remote doesn't run well under
CMUCL when started from SLIME, starting it in a separate CMUCL
session works fine, while SBCL has no problems even in co-existance
with SLIME.

Peter

-- 
Peter Herth
pet project: http://dawn.netcologne.de
homepage:    http://www.peter-herth.de
lisp stuff:  http://www.peter-herth.de/lisp.html
From: Juan Jose Garcia Ripoll
Subject: Patches for Ltk under (unstable) ECL
Date: 
Message-ID: <2j2majFsc010U1@uni-berlin.de>
If somebody wants to experiment with Ltk under the latest version of ECL 
(retrieved from CVS):

--- ltk.lisp    2004-06-13 10:59:10.000000000 +0200
+++ ltk.lisp    2004-06-13 10:59:17.000000000 +0200
@@ -271,6 +271,7 @@
           (error "Cannot create process."))          proc
         )
+    #+:ecl(ext:run-program program args :input :stream :output :stream 
:error :output)
     ))

Regards

Juanjo
From: jblazi
Subject: Re: [ANN] Ltk - The Lisp Toolkit
Date: 
Message-ID: <pan.2004.06.12.11.21.15.671000@hotmail.com>
On Thu, 10 Jun 2004 20:04:30 +0200, Peter Herth wrote:

> You can find the package, its documentation and of course,
> some screenshots here:
> 
> http://www.peter-herth.de/ltk/

Well, this seems to be a breakthrough! But I still cannot run it under XP
and CLisp:


[1]> (compile-file "ltk")

*** - OPEN: file #P"C:\\Lisp-programs\\ltk.lisp" does not exist
Break 1 [2]> (compile-file "ltk")

Compiling file C:\Lisp-programs\ltk.lisp ...
WARNING in DO-EXECUTE in lines 231..274 :
variable WT is not used.
Misspelled or missing IGNORE declaration?

Wrote file C:\Lisp-programs\ltk.fas
0 errors, 1 warning
#P"C:\\Lisp-programs\\ltk.fas" ;
1 ;
NIL
Break 1 [2]> (load "ltk")

*** - Win32 error 5 (ERROR_ACCESS_DENIED): Access is denied.
Break 2 [3]>

jb


----== Posted via Newsfeed.Com - Unlimited-Uncensored-Secure Usenet News==----
http://www.newsfeed.com The #1 Newsgroup Service in the World! >100,000 Newsgroups
---= 19 East/West-Coast Specialized Servers - Total Privacy via Encryption =---
From: Peter Herth
Subject: Re: [ANN] Ltk - The Lisp Toolkit
Date: 
Message-ID: <caeqv6$edc$1@newsreader2.netcologne.de>
jblazi wrote:

> [1]> (compile-file "ltk")
> 
> *** - OPEN: file #P"C:\\Lisp-programs\\ltk.lisp" does not exist
> Break 1 [2]> (compile-file "ltk")
> 
> Compiling file C:\Lisp-programs\ltk.lisp ...
> WARNING in DO-EXECUTE in lines 231..274 :
> variable WT is not used.
> Misspelled or missing IGNORE declaration?

The clisp entry did not use the wt parameter, I corrected that

> 
> Wrote file C:\Lisp-programs\ltk.fas
> 0 errors, 1 warning
> #P"C:\\Lisp-programs\\ltk.fas" ;
> 1 ;
> NIL
> Break 1 [2]> (load "ltk")
> 
> *** - Win32 error 5 (ERROR_ACCESS_DENIED): Access is denied.
> Break 2 [3]>
> 

It looks as if CLisp under Windows has some problem with the paths.
Did you try (compile-file "c:\Lisp-programs\ltk.lisp") and 
(load-file "c:\Lisp-programs\ltk") respectively ? (you may need 
to use double backslashes.

Peter

-- 
Peter Herth
pet project: http://dawn.netcologne.de
homepage:    http://www.peter-herth.de
lisp stuff:  http://www.peter-herth.de/lisp.html
From: jblazi
Subject: Re: [ANN] Ltk - The Lisp Toolkit
Date: 
Message-ID: <pan.2004.06.12.12.05.35.0@hotmail.com>
> It looks as if CLisp under Windows has some problem with the paths.
> Did you try (compile-file "c:\Lisp-programs\ltk.lisp") and 
> (load-file "c:\Lisp-programs\ltk") respectively ? (you may need 
> to use double backslashes.

Actually, first I did not extract the tgz file ("idiots are geniusses").
Then I did and I get the files

11.06.2004  13:39            26.430 lgpl.txt
11.06.2004  13:38               343 license.txt
05.06.2004  17:38               400 ltk-remote.asd
11.06.2004  13:55             7.503 ltk-remote.lisp
05.06.2004  17:38               329 ltk.asd
12.06.2004  01:31            52.995 ltk.lisp
11.06.2004  10:29           147.064 ltkdoc.pdf
11.06.2004  13:57             1.330 remote.tcl
               8 Datei(en)        236.394 Bytes
               2 Verzeichnis(se), 64.122.167.296 Bytes frei

Then I could compile the file (the .fas file was generated). Using full
path names with "load" does not help:


Break 2 [3]> (load-file "ltk")

** - Continuable Error
EVAL: undefined function LOAD-FILE
If you continue (by typing 'continue'): Retry
The following restarts are also available:
STORE-VALUE    :R1      You may input a new value for (FDEFINITION 'LOAD-FILE).
USE-VALUE      :R2      You may input a value to be used instead of (FDEFINITION
 'LOAD-FILE).

Break 3 [4]> (load "c:\\Lisp-programs\\ltk")

** - Continuable Error
Win32 error 5 (ERROR_ACCESS_DENIED): Access is denied.
If you continue (by typing 'continue'): Retry
The following restarts are also available:
STORE-VALUE    :R1      You may input a new value for (FDEFINITION 'LOAD-FILE).
USE-VALUE      :R2      You may input a value to be used instead of (FDEFINITION
 'LOAD-FILE).

Break 4 [5]>

TIA,

jb


----== Posted via Newsfeed.Com - Unlimited-Uncensored-Secure Usenet News==----
http://www.newsfeed.com The #1 Newsgroup Service in the World! >100,000 Newsgroups
---= 19 East/West-Coast Specialized Servers - Total Privacy via Encryption =---
From: Peter Herth
Subject: Re: [ANN] Ltk - The Lisp Toolkit
Date: 
Message-ID: <caeump$m7c$1@newsreader2.netcologne.de>
jblazi wrote:


> Break 2 [3]> (load-file "ltk")

Ah sorry, that was my error, it should just be (load "ltk") of course...
Besides, you do not need to compile it before usage, so a (load "ltk")
should be ok any way.

Peter

-- 
Peter Herth
pet project: http://dawn.netcologne.de
homepage:    http://www.peter-herth.de
lisp stuff:  http://www.peter-herth.de/lisp.html
From: jblazi
Subject: Re: [ANN] Ltk - The Lisp Toolkit
Date: 
Message-ID: <pan.2004.06.12.19.17.39.171000@hotmail.com>
> Ah sorry, that was my error, it should just be (load "ltk") of course...
> Besides, you do not need to compile it before usage, so a (load "ltk")
> should be ok any way.

But as you could see, I could not load it:


[1]> (load "ltk")

*** - Win32 error 5 (ERROR_ACCESS_DENIED): Access is denied.
Break 1 [2]>

What do I load? ltk.lisp?

When I load ltk.lisp, it maybe works and the file is loaded. I am not
sure. Then I get the next error message using (use-package 'ltk) stating
that there is some name conflict, etc.

Well, it seems I would have to understand the internals of Lisp and
Clisp to some depth to use your package (if the description does not fit
exactly, I am lost).

Thank you anyway.

jb


----== Posted via Newsfeed.Com - Unlimited-Uncensored-Secure Usenet News==----
http://www.newsfeed.com The #1 Newsgroup Service in the World! >100,000 Newsgroups
---= 19 East/West-Coast Specialized Servers - Total Privacy via Encryption =---
From: Peter Herth
Subject: Re: [ANN] Ltk - The Lisp Toolkit
Date: 
Message-ID: <caflig$85f$1@newsreader2.netcologne.de>
jblazi wrote:

> What do I load? ltk.lisp?

Yes, ltk.lisp. You may need to give the full name as: (load "ltk.lisp")
of, if that does not work, the full pathname.

> 
> When I load ltk.lisp, it maybe works and the file is loaded. I am not
> sure. Then I get the next error message using (use-package 'ltk) stating
> that there is some name conflict, etc.

if the load succeeds, try:
(use-package :ltk)
(test)

Then the test window should come up. If not, please mail me the 
error message created by CLisp.

Peter

-- 
Peter Herth
pet project: http://dawn.netcologne.de
homepage:    http://www.peter-herth.de
lisp stuff:  http://www.peter-herth.de/lisp.html
From: jblazi
Subject: Re: [ANN] Ltk - The Lisp Toolkit
Date: 
Message-ID: <pan.2004.06.12.19.58.54.437000@hotmail.com>
On Sat, 12 Jun 2004 21:29:20 +0200, Peter Herth wrote:

> jblazi wrote:
> 
>> What do I load? ltk.lisp?
> 
> Yes, ltk.lisp. You may need to give the full name as: (load "ltk.lisp")
> of, if that does not work, the full pathname.
> 
>> 
>> When I load ltk.lisp, it maybe works and the file is loaded. I am not
>> sure. Then I get the next error message using (use-package 'ltk) stating
>> that there is some name conflict, etc.
> 
> if the load succeeds, try:
> (use-package :ltk)
> (test)

Here is the error message (it is the same as with 'ltk):

Break 5 [6]> (use-package :ltk)

** - Continuable Error
1 name conflicts while executing USE-PACKAGE of (#<PACKAGE LTK>) into package #<
PACKAGE COMMON-LISP-USER>.
If you continue (by typing 'continue'): You may choose for every conflict in fav
our of which symbol to resolve it.
The following restarts are also available:
CONTINUE       :R1      Retry
STORE-VALUE    :R2      You may input a new value for (FDEFINITION 'TEST).
USE-VALUE      :R3      You may input a value to be used instead of (FDEFINITION
 'TEST).
CONTINUE       :R4      Retry
STORE-VALUE    :R5      You may input a new value for (FDEFINITION 'TEST).
USE-VALUE      :R6      You may input a value to be used instead of (FDEFINITION
 'TEST).

Break 6 [7]> (test)

Actually, (test) does not work either (undefined function).

jb


----== Posted via Newsfeed.Com - Unlimited-Uncensored-Secure Usenet News==----
http://www.newsfeed.com The #1 Newsgroup Service in the World! >100,000 Newsgroups
---= 19 East/West-Coast Specialized Servers - Total Privacy via Encryption =---
From: Peter Herth
Subject: Re: [ANN] Ltk - The Lisp Toolkit
Date: 
Message-ID: <cafos5$eob$1@newsreader2.netcologne.de>
jblazi wrote:
> Here is the error message (it is the same as with 'ltk):
> 
> Break 5 [6]> (use-package :ltk)
> 
> ** - Continuable Error
> 1 name conflicts while executing USE-PACKAGE of (#<PACKAGE LTK>) into
> package #< PACKAGE COMMON-LISP-USER>.
> If you continue (by typing 'continue'): You may choose for every conflict
> in fav our of which symbol to resolve it.
> The following restarts are also available:
> CONTINUE       :R1      Retry
> STORE-VALUE    :R2      You may input a new value for (FDEFINITION 'TEST).
> USE-VALUE      :R3      You may input a value to be used instead of
> (FDEFINITION
>  'TEST).
> CONTINUE       :R4      Retry
> STORE-VALUE    :R5      You may input a new value for (FDEFINITION 'TEST).
> USE-VALUE      :R6      You may input a value to be used instead of
> (FDEFINITION
>  'TEST).
> 
> Break 6 [7]> (test)

It looks as if the name of the function "test" conflicts with a symbol 
in the common-lisp-user package. That is a bit strange, but test is 
perhaps a not so good choice for the name. I will rename it in the
next release of Ltk. Until then, try to skip the (use-package :ltk)
step and type (ltk:test). If you do not "use" the package, its symbols
are note inserted in the common-lisp-user package but you can access
all of them by prefixing them with ltk: to designate the ltk package.

Peter


-- 
Peter Herth
pet project: http://dawn.netcologne.de
homepage:    http://www.peter-herth.de
lisp stuff:  http://www.peter-herth.de/lisp.html
From: jblazi
Subject: Re: [ANN] Ltk - The Lisp Toolkit
Date: 
Message-ID: <pan.2004.06.12.20.32.20.515000@hotmail.com>
On Sat, 12 Jun 2004 22:25:40 +0200, Peter Herth wrote:

> It looks as if the name of the function "test" conflicts with a symbol 
> in the common-lisp-user package. That is a bit strange, but test is 
> perhaps a not so good choice for the name. I will rename it in the
> next release of Ltk. Until then, try to skip the (use-package :ltk)
> step and type (ltk:test). If you do not "use" the package, its symbols
> are note inserted in the common-lisp-user package but you can access
> all of them by prefixing them with ltk: to designate the ltk package.
> 
> Peter

Hahaha! This is what happens (I am sending the whoe message, sorry).


[1]> (load "ltk.lisp")
;; Loading file ltk.lisp ...
WARNING:
The generic function #<GENERIC-FUNCTION CREATE> is being modified, but has alrea
dy been called.
;; Loaded file ltk.lisp
T
[2]> (ltk:test)
frame .w2
frame .w2.w3
label .w2.w3.w4 -text {Rotation:}
button .w2.w3.w5 -text {Start} -command {puts -nonewline {("w5")};flush stdout}
.w2.w3.w5 configure -textvariable w5
button .w2.w3.w6 -text {Stop} -command {puts -nonewline {("w6")};flush stdout}
.w2.w3.w6 configure -textvariable w6
button .w2.w7 -text {Hallo} -command {puts -nonewline {("w7")};flush stdout}
.w2.w7 configure -textvariable w7
button .w2.w8 -text {Welt!} -command {puts -nonewline {("w8")};flush stdout}
.w2.w8 configure -textvariable w8
frame .w2.w9
label .w2.w9.w10 -text {Test:}
button .w2.w9.w11 -text {Ok.} -command {puts -nonewline {("w11")};flush stdout}
.w2.w9.w11 configure -textvariable w11
entry .w2.w12 -textvariable w12
button .w2.w13 -text {get!} -command {puts -nonewline {("w13")};flush stdout}
.w2.w13 configure -textvariable w13
button .w2.w14 -text {set!} -command {puts -nonewline {("w14")};flush stdout}
.w2.w14 configure -textvariable w14
frame .w15
scrollbar .w15.w16 -orient horizontal
scrollbar .w15.w17 -orient vertical
canvas .w15.w18
grid .w15.w18 -row 0 -column 0  -sticky news
grid .w15.w16 -row 1 -column 0  -sticky we
grid .w15.w17 -row 0 -column 1  -sticky ns
grid columnconfigure .w15 0 -weight {1}
grid columnconfigure .w15 1 -weight {0}
grid rowconfigure .w15 0 -weight {1}
grid rowconfigure .w15 1 -weight {0}
.w15.w16 configure -command {.w15.w18 xview}
.w15.w17 configure -command {.w15.w18 yview}
.w15.w18 configure -xscrollcommand {.w15.w16 set}
.w15.w18 configure -yscrollcommand {.w15.w17 set}
menu .menubar -tearoff 0 -type menubar
. configure -menu .menubar
menu .menubar.w19 -tearoff 0
.menubar add cascade -label {File} -menu .menubar.w19
.menubar.w19 add command -label {Load} -command {puts -nonewline {("w20")};flush
 stdout}
.menubar.w19.w20 configure -variable w20
.menubar.w19 add command -label {Save} -command {puts -nonewline {("w21")};flush
 stdout}
.menubar.w19.w21 configure -variable w21
.menubar.w19 add separator
menu .menubar.w19.w22 -tearoff 0
.menubar.w19 add cascade -label {Export...} -menu .menubar.w19.w22
.menubar.w19 add separator
.menubar.w19 add command -label {Print} -command {puts -nonewline {("w23")};flus
h stdout}
.menubar.w19.w23 configure -variable w23
.menubar.w19 add separator
.menubar.w19.w22 add command -label {jpeg} -command {puts -nonewline {("w24")};f
lush stdout}
.menubar.w19.w22.w24 configure -variable w24
.menubar.w19.w22 add command -label {png} -command {puts -nonewline {("w25")};fl
ush stdout}
.menubar.w19.w22.w25 configure -variable w25
.menubar.w19 add command -label {Exit} -command {puts -nonewline {("w26")};flush
 stdout}
.menubar.w19.w26 configure -variable w26
.w15.w18 configure -borderwidth {2}
.w15.w18 configure -relief {sunken}
pack .w15 -side {top} -fill both -expand 1
pack .w2 -side {bottom}
.w15.w18 configure -scrollregion {0 0 500 400}
pack .w2.w3 -side {left}
pack .w2.w3.w4 -side {left}
.w2.w3 configure -borderwidth {2}
.w2.w3 configure -relief {sunken}
pack .w2.w3.w5 -side {left}
pack .w2.w3.w6 -side {left}
pack .w2.w7 -side {left}
pack .w2.w8 -side {left}
.w2.w9 configure -borderwidth {2}
.w2.w9 configure -relief {sunken}
pack .w2.w9 -side {left} -fill x
pack .w2.w9.w10 -side {left}
pack .w2.w9.w11 -side {left}
pack .w2.w12 -side {left}
pack .w2.w13 -side {left}
pack .w2.w14 -side {left}
puts [.w15.w18 create line  352.21796 309.77927 116.91867 130.79478 398.57285 22
0.64236 103.09306 230.30432 378.27356 122.24469 155.1721 316.2225 300.43134 58.7
31873 249.79372 349.99988 199.96172 58.59218 344.50433 316.48575 121.94194 121.8
90236 396.82208 230.71272 101.370316 220.22913 383.27222 131.1631 147.47714 309.
49457 309.93506 62.4944 239.57645 349.6374 209.71042 55.512115 336.35187 322.651
37 127.55879 113.35042 394.38898 240.64268 100.33772 210.05998 387.65082 140.399
19 140.25667 302.25653 319.16046 66.89542 229.40985 348.5801 219.64406 53.103714
 327.79843 328.24744 133.74419 105.21295 391.28583 250.38168 100.00008 199.84415
 391.391 149.91418 133.54745 294.54526 328.06476 71.914505 219.33664 346.8324 22
9.71866 51.377426 318.88373 333.248 140.47098 97.51395 387.52667 259.88672 100.3
5895 189.62903 394.47372 159.65965 127.379 286.39496 336.60843 77.52966 209.4080
7 344.40326 239.88742 50.341263 309.6471 337.63077 147.7049 90.29262 383.12888 2
69.1137 101.412994 179.45981 396.88562 169.59244 121.77991 277.8435 344.74796 83
.712326 199.66797 341.30353 250.10313 50.00003 300.1355 341.37338 155.41382 83.5
80696 378.1123 278.02072 103.156815 169.38823 398.6156 179.66756 116.77568 268.9
2953 352.44757 90.43495 190.16055 337.54724 260.31952 50.355392 290.3911 344.459
53 163.5629 77.40871 372.50076 286.56537 105.582504 159.45882 399.65524 189.8359
7 112.39021 259.69543 359.67145 97.66634 180.93207 333.15262 270.48798 51.405777
 280.45807 346.87512 172.11243 71.80669 366.32098 294.7071 108.67917 149.71655 4
00.0 200.05157 108.64426 250.18518 366.38678 105.3738 172.02382 328.13943 280.56
073 53.14618 270.38467 348.60843 181.02466 66.79939 359.60065 302.40945 112.4317
5 140.2089 399.64813 210.26808 105.55452 240.44133 372.56125 113.52028 163.47768
 322.5312 290.49127 55.568497 260.21606 349.6517 190.25645 62.411087 352.37134 3
09.63623 116.8235 130.97812 398.60135 220.43619 103.135544 230.50952 378.16644 1
22.068245 155.33328 316.35382 300.23407 58.66162 250 350.0]
puts [.w15.w18 create text 10 10 -anchor nw -text {Ltk Demonstration}]
l:NAME<=

*** - FIRST: NAME is not a LIST
Break 1 [3]>



----== Posted via Newsfeed.Com - Unlimited-Uncensored-Secure Usenet News==----
http://www.newsfeed.com The #1 Newsgroup Service in the World! >100,000 Newsgroups
---= 19 East/West-Coast Specialized Servers - Total Privacy via Encryption =---
From: Peter Herth
Subject: Re: [ANN] Ltk - The Lisp Toolkit
Date: 
Message-ID: <cafpmc$g2m$1@newsreader2.netcologne.de>
We are getting there :). The test function runs, but you have got the bugged
Ltk version. Please download it again, as I fixed problem with the testing
function, then it should work.

Peter

-- 
Peter Herth
pet project: http://dawn.netcologne.de
homepage:    http://www.peter-herth.de
lisp stuff:  http://www.peter-herth.de/lisp.html
From: jblazi
Subject: Re: [ANN] Ltk - The Lisp Toolkit
Date: 
Message-ID: <pan.2004.06.12.21.00.33.125000@hotmail.com>
On Sat, 12 Jun 2004 22:39:40 +0200, Peter Herth wrote:

> 
> We are getting there :). The test function runs, but you have got the bugged
> Ltk version. Please download it again, as I fixed problem with the testing
> function, then it should work.

Very nice, thx. Now it works! After 30 or more years 
of Lisp I can write "Hullo world" on the screen! But seriously: This is a
real Lisp revolution as your port is easy to use and as everybody knows
Tk, so Lisp becomes a bit less exotic and much, much more usable.

A final question: Why did you take Tk instead of wxWidgets? Was it easier
to do the port?

jb


----== Posted via Newsfeed.Com - Unlimited-Uncensored-Secure Usenet News==----
http://www.newsfeed.com The #1 Newsgroup Service in the World! >100,000 Newsgroups
---= 19 East/West-Coast Specialized Servers - Total Privacy via Encryption =---
From: Peter Herth
Subject: Re: [ANN] Ltk - The Lisp Toolkit
Date: 
Message-ID: <cafrfv$js7$1@newsreader2.netcologne.de>
jblazi wrote:

> Very nice, thx. Now it works! After 30 or more years
> of Lisp I can write "Hullo world" on the screen! But seriously: This is a
> real Lisp revolution as your port is easy to use and as everybody knows
> Tk, so Lisp becomes a bit less exotic and much, much more usable.

Glad to hear that :). I had the same feeling about "Hello world" before
I started writing Ltk.

> A final question: Why did you take Tk instead of wxWidgets? Was it easier
> to do the port?

Yes, the mayor reason for selecting Tk was, that I do not have to do
a binary link to a library. That way, it would be quite non-portable.
What I do is to start Tk as a subprocess to Lisp and send Tk commands
as text via a stream. You can see the commands sent and the responses
of Tk on the Lisp console. So the only nonportable function is opening
the subprocess, but fortunately all Lisps have similiar functions for it.
Once I have the stream to talk to the subprocess, I can use the standard
Lisp IO functions from there on and thus the whole rest of the code is
absolutely portable.
An additional helping point is, that on many operating systems, Tk is
preinstalled, so the Ltk user just needs to load ltk.lisp to start 
using it, no complex installation required.

Peter

-- 
Peter Herth
pet project: http://dawn.netcologne.de
homepage:    http://www.peter-herth.de
lisp stuff:  http://www.peter-herth.de/lisp.html
From: [Invalid-From-Line]
Subject: Re: [ANN] Ltk - The Lisp Toolkit
Date: 
Message-ID: <eGDyc.11776$sj4.10200@news-server.bigpond.net.au>
Thank for making this available!

I'm having a little trouble with (test) under Mac OSX 10.3.4, SBCL 0.8.11
(same problem with 0.8.8) and Tcl/Tk 8.4

Chris Wright


here's the output:
(the window is created, with the buttons and the canvas drawing)

<23:24>~ $: sbcl
This is SBCL 0.8.11, an implementation of ANSI Common Lisp.
More information about SBCL is available at <http://www.sbcl.org/>.

SBCL is free software, provided as is, with absolutely no warranty.
It is mostly in the public domain; some portions are provided under
BSD-style licenses.  See the CREDITS and COPYING files in the
distribution for more information.
* (require 'asdf)

("ASDF")
* (require 'ltk)

NIL
* (use-package 'ltk)

T
* (test)
frame .w2
frame .w2.w3
label .w2.w3.w4 -text {Rotation:}
button .w2.w3.w5 -text {Start} -command {puts -nonewline {("w5")};flush
stdout}
.w2.w3.w5 configure -textvariable w5
button .w2.w3.w6 -text {Stop} -command {puts -nonewline {("w6")};flush
stdout}
.w2.w3.w6 configure -textvariable w6
button .w2.w7 -text {Hallo} -command {puts -nonewline {("w7")};flush stdout}
.w2.w7 configure -textvariable w7
button .w2.w8 -text {Welt!} -command {puts -nonewline {("w8")};flush stdout}
.w2.w8 configure -textvariable w8
frame .w2.w9
label .w2.w9.w10 -text {Test:}
button .w2.w9.w11 -text {Ok.} -command {puts -nonewline {("w11")};flush
stdout}
.w2.w9.w11 configure -textvariable w11
entry .w2.w12 -textvariable w12
button .w2.w13 -text {get!} -command {puts -nonewline {("w13")};flush
stdout}
.w2.w13 configure -textvariable w13
button .w2.w14 -text {set!} -command {puts -nonewline {("w14")};flush
stdout}
.w2.w14 configure -textvariable w14
frame .w15
scrollbar .w15.w16 -orient horizontal
scrollbar .w15.w17 -orient vertical
canvas .w15.w18
grid .w15.w18 -row 0 -column 0  -sticky news
grid .w15.w16 -row 1 -column 0  -sticky we
grid .w15.w17 -row 0 -column 1  -sticky ns
grid columnconfigure .w15 0 -weight {1}
grid columnconfigure .w15 1 -weight {0}
grid rowconfigure .w15 0 -weight {1}
grid rowconfigure .w15 1 -weight {0}
.w15.w16 configure -command {.w15.w18 xview}
.w15.w17 configure -command {.w15.w18 yview}
.w15.w18 configure -xscrollcommand {.w15.w16 set}
.w15.w18 configure -yscrollcommand {.w15.w17 set}
menu .menubar -tearoff 0 -type menubar
. configure -menu .menubar
menu .menubar.w19 -tearoff 0
.menubar add cascade -label {File} -menu .menubar.w19
.menubar.w19 add command -label {Load} -command {puts -nonewline
{("w20")};flush stdout}
.menubar.w19.w20 configure -variable w20
.menubar.w19 add command -label {Save} -command {puts -nonewline
{("w21")};flush stdout}
.menubar.w19.w21 configure -variable w21
.menubar.w19 add separator
menu .menubar.w19.w22 -tearoff 0
.menubar.w19 add cascade -label {Export...} -menu .menubar.w19.w22
.menubar.w19 add separator
.menubar.w19 add command -label {Print} -command {puts -nonewline
{("w23")};flush stdout}
.menubar.w19.w23 configure -variable w23
.menubar.w19 add separator
.menubar.w19.w22 add command -label {jpeg} -command {puts -nonewline
{("w24")};flush stdout}
.menubar.w19.w22.w24 configure -variable w24
.menubar.w19.w22 add command -label {png} -command {puts -nonewline
{("w25")};flush stdout}
.menubar.w19.w22.w25 configure -variable w25
.menubar.w19 add command -label {Exit} -command {puts -nonewline
{("w26")};flush stdout}
.menubar.w19.w26 configure -variable w26
.w15.w18 configure -borderwidth {2}
.w15.w18 configure -relief {sunken}
pack .w15 -side {top} -fill both -expand 1
pack .w2 -side {bottom}
.w15.w18 configure -scrollregion {0 0 500 400}
pack .w2.w3 -side {left}
pack .w2.w3.w4 -side {left}
.w2.w3 configure -borderwidth {2}
.w2.w3 configure -relief {sunken}
pack .w2.w3.w5 -side {left}
pack .w2.w3.w6 -side {left}
pack .w2.w7 -side {left}
pack .w2.w8 -side {left}
.w2.w9 configure -borderwidth {2}
.w2.w9 configure -relief {sunken}
pack .w2.w9 -side {left} -fill x
pack .w2.w9.w10 -side {left}
pack .w2.w9.w11 -side {left}
pack .w2.w12 -side {left}
pack .w2.w13 -side {left}
pack .w2.w14 -side {left}
puts [.w15.w18 create line  352.21796 309.77927 116.91867 130.79478
398.57285 220.64236 103.09306 230.30432 378.27356 122.24469 155.1721
316.2225 300.43134 58.731873 249.79372 349.99988 199.96172 58.59218
344.50433 316.48575 121.94194 121.890236 396.82208 230.71272 101.370316
220.22913 383.27222 131.1631 147.47714 309.49457 309.93506 62.4944 239.57645
349.6374 209.71042 55.512115 336.35187 322.65137 127.55879 113.35042
394.38898 240.64268 100.33772 210.05998 387.65082 140.39919 140.25667
302.25653 319.16046 66.89542 229.40985 348.5801 219.64406 53.103714
327.79843 328.24744 133.74419 105.21295 391.28583 250.38168 100.00008
199.84415 391.391 149.91418 133.54745 294.54526 328.06476 71.914505
219.33664 346.8324 229.71866 51.377426 318.88373 333.248 140.47098 97.51395
387.52667 259.88672 100.35895 189.62903 394.47372 159.65965 127.379
286.39496 336.60843 77.52966 209.40807 344.40326 239.88742 50.341263
309.6471 337.63077 147.7049 90.29262 383.12888 269.1137 101.412994 179.45981
396.88562 169.59244 121.77991 277.8435 344.74796 83.712326 199.66797
341.30353 250.10313 50.00003 300.1355 341.37338 155.41382 83.580696 378.1123
278.02072 103.156815 169.38823 398.6156 179.66756 116.77568 268.92953
352.44757 90.43495 190.16055 337.54724 260.31952 50.355392 290.3911
344.45953 163.5629 77.40871 372.50076 286.56537 105.582504 159.45882
399.65524 189.83597 112.39021 259.69543 359.67145 97.66634 180.93207
333.15262 270.48798 51.405777 280.45807 346.87512 172.11243 71.80669
366.32098 294.7071 108.67917 149.71655 400.0 200.05157 108.64426 250.18518
366.38678 105.3738 172.02382 328.13943 280.56073 53.14618 270.38467
348.60843 181.02466 66.79939 359.60065 302.40945 112.43175 140.2089
399.64813 210.26808 105.55452 240.44133 372.56125 113.52028 163.47768
322.5312 290.49127 55.568497 260.21606 349.6517 190.25645 62.411087
352.37134 309.63623 116.8235 130.97812 398.60135 220.43619 103.135544
230.50952 378.16644 122.068245 155.33328 316.35382 300.23407 58.66162 250.0
350.0]
puts [.w15.w18 create text 10 10 -anchor nw -text {Ltk Demonstration}]
l:NAME<=

debugger invoked on a TYPE-ERROR in thread 1968:
  The value NAME is not of type LIST.

You can type HELP for debugger help, or (SB-EXT:QUIT) to exit from SBCL.

restarts (invokable by number or by possibly-abbreviated name):
  0: [ABORT   ] Reduce debugger level (leaving debugger, returning to
toplevel).
  1: [TOPLEVEL] Restart at toplevel READ/EVAL/PRINT loop.
(MAINLOOP)
0] :ab
*
From: Peter Herth
Subject: Re: [ANN] Ltk - The Lisp Toolkit
Date: 
Message-ID: <caf2pj$ia$1@newsreader2.netcologne.de>
··········@ozemail.com.au wrote:

> debugger invoked on a TYPE-ERROR in thread 1968:
>   The value NAME is not of type LIST.
> 

A bug in Ltk. I just uploaded a fixed version. 
Thanks for reporting it.

Peter


-- 
Peter Herth
pet project: http://dawn.netcologne.de
homepage:    http://www.peter-herth.de
lisp stuff:  http://www.peter-herth.de/lisp.html
From: Philippe Brochard
Subject: Re: [ANN] Ltk - The Lisp Toolkit
Date: 
Message-ID: <87isdw26lr.fsf@grigri.localhost>
Peter Herth hat geschrieben:

> ··········@ozemail.com.au wrote:
> 
> > debugger invoked on a TYPE-ERROR in thread 1968:
> >   The value NAME is not of type LIST.
> > 
> 
> A bug in Ltk. I just uploaded a fixed version. 
> Thanks for reporting it.
> 
That works nice with cmucl and with clisp with a t instead of wt
in line 254.

Thanks a lot for your work!

Philippe

-- 
Philippe Brochard    <·····@free.fr>
                      http://hocwp.free.fr

-=-= http://www.gnu.org/home.fr.html =-=-
From: Rob Warnock
Subject: Re: [ANN] Ltk - The Lisp Toolkit
Date: 
Message-ID: <YNqdnSwiJJSBMlbd4p2dnA@speakeasy.net>
Peter Herth  <·····@netcologne.de> wrote:
+---------------
| ··········@ozemail.com.au wrote:
| > debugger invoked on a TYPE-ERROR in thread 1968:
| >   The value NAME is not of type LIST.
| 
| A bug in Ltk. I just uploaded a fixed version. 
| Thanks for reporting it.
+---------------

Aha! I was having the same problem under CMUCL/FreeBSD, now also fixed.
Thanks!

A few small suggestions:

- The interaction between DO-EXECUTE, START-W, *W*, the callers of
  START-W, and the users of *W* seems a bit awkward. Since you already
  have DO-EXECUTE heavily conditionalized for various operating systems,
  it might be better to simply eliminate START-W altogether, pull the
  pathname for "wish" out into a global constant to make it easier to
  conditionalize for local variations [see next item], and just have
  the two former callers of START-W call DO-EXECUTE directly. And perhaps
  the same for the args to the "wish" process (in case somebody wants to
  start "wish" with a different colormap or something). The result might
  look something like this:

	(defconstant +wish-pathname+
	  #+freebsd			"wish8.3"	; or 8.4, whatever
	  #+(and sbcl (not freebsd))	"/usr/bin/wish"
	  #-(or sbcl freebsd)		"wish")

	(defconstant +wish-args+ '("-name" "LTK"))

	...

	(defmacro with-ltk (&rest body)
	  `(progn
	     (setf *w* (do-execute +wish-pathname+ +wish-args+))
	     ,@body
	     (mainloop)))

- Your doc file suggests:

	Note: on FreeBSD wish resides in /usr/local/bin/wish8.4 for
	Tcl/Tk version 8.4. You either have to modify the path to wish
	in ltk.lisp or create a link called wish to the executable
	(like: cd /usr/local/bin;ln -s /usr/local/bin/wish8.4 wish).

  Actually, on FreeBSD there is *already* a program named "wish", which
  when run, says this:

	% wish
	In FreeBSD, wish is named with a version number.  This is
	because different versions of wish are not compatible with
	each other and they can not all be called "wish"!  You may
	need multiple versions installed because a given port may
	depend on a specific version.

	On your system, wish is installed under at least the following
	names:

	wish8.3
	% 

  So you probably don't want to overwrite that program.  ;-}

- On Common Lisps which provide threads (CMUCL, SBCL, others), it would
  be nice if LTK:MAINLOOP ran in a separate thread, so that one still
  had access to the main REPL, at least while debugging. [Time permitting,
  I'll try to hack something up to work under CMUCL as a base case...]


-Rob

-----
Rob Warnock			<····@rpw3.org>
627 26th Avenue			<URL:http://rpw3.org/>
San Mateo, CA 94403		(650)572-2607
From: Peter Herth
Subject: Re: [ANN] Ltk - The Lisp Toolkit
Date: 
Message-ID: <cah4v0$73u$1@newsreader2.netcologne.de>
Rob Warnock wrote:

> A few small suggestions:
> 
> - The interaction between DO-EXECUTE, START-W, *W*, the callers of
>   START-W, and the users of *W* seems a bit awkward. Since you already
>   have DO-EXECUTE heavily conditionalized for various operating systems,
>   it might be better to simply eliminate START-W altogether, pull the
>   pathname for "wish" out into a global constant to make it easier to
>   conditionalize for local variations [see next item], and just have
>   the two former callers of START-W call DO-EXECUTE directly. And perhaps
>   the same for the args to the "wish" process (in case somebody wants to
>   start "wish" with a different colormap or something). The result might
>   look something like this:
> 
> (defconstant +wish-pathname+
> #+freebsd                     "wish8.3"       ; or 8.4, whatever
> #+(and sbcl (not freebsd))    "/usr/bin/wish"
> #-(or sbcl freebsd)           "wish")
> 
> (defconstant +wish-args+ '("-name" "LTK"))

Yes that was a little bit cluttered. I have cleaned it up following
your suggestions. Yet I think it may be useful to declare wish-pathname
and wish-args as special variables, so that it can be overridden
for special purposes without changing the Ltk source.

> ...
> 
> (defmacro with-ltk (&rest body)
> `(progn
> (setf *w* (do-execute +wish-pathname+ +wish-args+))
> ,@body
> (mainloop)))

I have retained (though cleaned up) start-w, so that especially
for playing with Ltk from the REPL you can initialize it without
exposing details to the user.
 
> - Your doc file suggests:
> 
> Note: on FreeBSD wish resides in /usr/local/bin/wish8.4 for
> Tcl/Tk version 8.4. You either have to modify the path to wish
> in ltk.lisp or create a link called wish to the executable
> (like: cd /usr/local/bin;ln -s /usr/local/bin/wish8.4 wish).
> 
>   Actually, on FreeBSD there is *already* a program named "wish", which
>   when run, says this:
> 
> % wish
> In FreeBSD, wish is named with a version number.  This is
> because different versions of wish are not compatible with
> each other and they can not all be called "wish"!  You may
> need multiple versions installed because a given port may
> depend on a specific version.
> 
> On your system, wish is installed under at least the following
> names:
> 
> wish8.3
> %
> 
>   So you probably don't want to overwrite that program.  ;-}

Indeed :). It was only a shot in the dark after I received a mail
from a FreeBSD user, as I have no FreeBSD experience of myself.

> - On Common Lisps which provide threads (CMUCL, SBCL, others), it would
>   be nice if LTK:MAINLOOP ran in a separate thread, so that one still
>   had access to the main REPL, at least while debugging. [Time permitting,
>   I'll try to hack something up to work under CMUCL as a base case...]

Yes that might be useful. You can find some thread stuff in ltk-remote,
which creates a seperate thread for each new connection. With CMUCL I 
made the experience that the threads do not mix well with SLIME,
but that probably is a mistake a I made.

I just uploaded the newest version of Ltk to my website, incoorperating
your changes. Due to the experience with the last version I released,
I have labled it seperately as ltk-latest.tgz and will only move it
to the stable version after a few days of use...

Thanks for your contributions.

Peter

-- 
Peter Herth
pet project: http://dawn.netcologne.de
homepage:    http://www.peter-herth.de
lisp stuff:  http://www.peter-herth.de/lisp.html
From: Rob Warnock
Subject: Re: [ANN] Ltk - The Lisp Toolkit
Date: 
Message-ID: <2-qdnSAQfvOegFHdRVn-vw@speakeasy.net>
Peter Herth  <·····@netcologne.de> wrote:
+---------------
| Rob Warnock wrote:
| > A few small suggestions:
| > - The interaction between DO-EXECUTE, START-W, *W*, the callers of
| >   START-W, and the users of *W* seems a bit awkward. ...
| 
| Yes that was a little bit cluttered. I have cleaned it up following
| your suggestions. Yet I think it may be useful to declare wish-pathname
| and wish-args as special variables, so that it can be overridden
| for special purposes without changing the Ltk source.
+---------------

Sounds fine [though in that case they should be named *WISH-PATHNAME*
and *WISH-ARGS*, of course].

+---------------
| > (defmacro with-ltk (&rest body)
| > `(progn
| > (setf *w* (do-execute +wish-pathname+ +wish-args+))
| > ,@body
| > (mainloop)))
| 
| I have retained (though cleaned up) start-w, so that especially
| for playing with Ltk from the REPL you can initialize it without
| exposing details to the user.
+---------------

Well, o.k., but the issue I had with START-W was precisely that
it did a "hidden" SETF of *W*, a single global, rather than (say)
being dynamically bound by WITH-LTK. If it's dynamically bound,
then different parts of the program [OR DIFFERENT THREADS!] can
use different copies of a "wish" child process, and you still
get the simplicity of an implied global. That's why I suggested
removing START-W entirely... though perhaps I should have been
a little more proactive in proposing an alternative to the SETF
in WITH-LTK, perhaps something like this:

    (defmacro with-ltk (&rest body)
      `(let ((*w* (do-execute *wish-pathname* *wish-args*)))
        ,@body
        (mainloop)))

Just make sure that in a threaded version of WITH-LTK the new binding
is made in the new thread...


-Rob

-----
Rob Warnock			<····@rpw3.org>
627 26th Avenue			<URL:http://rpw3.org/>
San Mateo, CA 94403		(650)572-2607
From: Peter Herth
Subject: Re: [ANN] Ltk - The Lisp Toolkit
Date: 
Message-ID: <cah7la$c8e$1@newsreader2.netcologne.de>
Rob Warnock wrote:

> Well, o.k., but the issue I had with START-W was precisely that
> it did a "hidden" SETF of *W*, a single global, rather than (say)
> being dynamically bound by WITH-LTK. If it's dynamically bound,
> then different parts of the program [OR DIFFERENT THREADS!] can
> use different copies of a "wish" child process, and you still
> get the simplicity of an implied global. That's why I suggested
> removing START-W entirely... though perhaps I should have been
> a little more proactive in proposing an alternative to the SETF
> in WITH-LTK, perhaps something like this:
> 
>     (defmacro with-ltk (&rest body)
>       `(let ((*w* (do-execute *wish-pathname* *wish-args*)))
>         ,@body
>         (mainloop)))
> 
> Just make sure that in a threaded version of WITH-LTK the new binding
> is made in the new thread...

Yes, for multi-threading, we need to bind *w* dynamically 
(see ltk-remote :p) and also we should dynamically bind *callbacks* and 
for aesthetical reasons the variable issuing the counters. Then we
even can have any number of separate GUIs running at the same time.

The only thing I am still pondering is which interface to give
to the multithreaded version. I do not think the macro with-ltk
should force multithreading. So there are two alternatives: either
add a new macro for that purposes or, just make with-ltk thread-safe
by rebinding the special variables and add a (portable) convenience
function to wrap around with-ltk. I am open for suggestions, what 
is the most convenient and clean way. 

Peter


-- 
Peter Herth
pet project: http://dawn.netcologne.de
homepage:    http://www.peter-herth.de
lisp stuff:  http://www.peter-herth.de/lisp.html
From: Stefan Scholl
Subject: Re: [ANN] Ltk - The Lisp Toolkit
Date: 
Message-ID: <15psu437h35hu.dlg@parsec.no-spoon.de>
On 2004-06-13 10:58:06, Peter Herth wrote:

> I just uploaded the newest version of Ltk to my website, incoorperating
> your changes. Due to the experience with the last version I released,
> I have labled it seperately as ltk-latest.tgz and will only move it
> to the stable version after a few days of use...

How about using a release number?