Hey Mike,

Solution one (the solution you are working on), activate image::jpeg which is already in your tkkit.dll
Just require the package directly:

package require vfs::mk4

Also there is a package missing from Jeff's script, add the line:
package ifneeded img::base 1.3 [list load $dir/tkimg13.dll]

to the script.

I had to move tkkit.dll to a writable directory and then it worked. It generates a tkkit.dll slightly bigger than the original one.

Solution 2, with Activetcl installed, use its libraries by adding the teapot lib directories to ::auto_path. This gives you access to a lot more than just the Img libraries.
You can find out where your Activetcl is mapped by:
"puts [join $::auto_path \n]" in the tcl shell

In my case this is accomplished by adding these 2 lines to my script:

Tkx::lappend('::auto_path', 'C:/Tcl/lib/teapot/package/win32-ix86/lib');
Tkx::lappend('::auto_path', 'C:/Tcl/lib/teapot/package/tcl/lib');

Hope this helps, Jeff guided me along, I am just giving you what I learned from him.

Sylvain


----- Original Message ----- From: "Mike" <[EMAIL PROTECTED]> To: "'Jeff Hobbs'" <[EMAIL PROTECTED]>; "'Sylvain Thibault'" <[EMAIL PROTECTED]>
Cc: <tcltk@perl.org>
Sent: Tuesday, November 18, 2008 8:15 PM
Subject: RE: using packages with Tkx


I am also using Tkx on perl 5.10 & Tcl 8.5.5.0 on Windows XP...I'm also
interested (and a bit frustrated) in trying to use the img::jpeg
package.

When I execute the following line from the script below:

vfs::mk4::Mount $tkkit tkkit;

I get an error stating that the
c:/tcl/lib/teapot/package/win32-ix86/lib/vfs1.3/mk4vfs.tcl file does not
exist ... which is correct.

Is it possible to just edit an instance of "pkgIndex.tcl" ?  If so,
which one?

Any help is appreciated.

Thanks,
Mike

-----Original Message-----
From: Jeff Hobbs [mailto:[EMAIL PROTECTED]
Sent: Monday, November 17, 2008 11:48 PM
To: Sylvain Thibault
Cc: tcltk@perl.org
Subject: Re: using packages with Tkx


The lines below needed one more package id that I forgot.  Add the
following line in the list of packages:

package ifneeded img::base 1.3 [list load $dir/tkimg13.dll]

Jeff

Jeff Hobbs wrote:
OK, you are right and the issue is that things became a bit more
complex
with the ActiveTcl 8.5 release.  We moved to a teapot-based install
that
obfuscates the exact location.  You can see the full set of locations
with "puts [join $::auto_path \n]" in a tclsh85 shell.

In any case, as I look at the latest tkkits, I see that for some silly
reason it has all the necessary binaries embedded, it just simply
lacks
the registering of those packages via pkgIndex.tcl.  Here is a simple
script that will add img::jpeg (and other formats) to the tkkit.  Run
with tclsh85.  There should be no line breaks in the code.  The same
could run on any platform, but you'd have to point to the right tkkit
and use the .so instead of .dll library names.

Jeff

##################################
package require vfs
set tkkit "C:/Perl10/lib/auto/Tcl/tkkit.dll" ; # set to correct path
file attributes $tkkit -readonly 0 ; # needs to be writable
vfs::mk4::Mount $tkkit tkkit ; # mounts file as dir 'tkkit' set pkg
tkkit/lib/Img1.3/pkgIndex.tcl set fid [open $pkg w]
puts $fid {# Img package bits
package ifneeded pngtcl 1.2.24 [list load $dir/pngtcl1224.dll]
package ifneeded zlibtcl 1.2.3 [list load $dir/zlibtcl123.dll]
package ifneeded tifftcl 3.8.2 [list load $dir/tifftcl382.dll]
package ifneeded jpegtcl 1.0 [list load $dir/jpegtcl10.dll]
package ifneeded img::bmp 1.3 [list load $dir/tkimgbmp13.dll]
package ifneeded img::gif 1.3 [list load $dir/tkimggif13.dll]
package ifneeded img::ico 1.3 [list load $dir/tkimgico13.dll]
package ifneeded img::jpeg 1.3 [list load $dir/tkimgjpeg13.dll]
package ifneeded img::pcx 1.3 [list load $dir/tkimgpcx13.dll]
package ifneeded img::pixmap 1.3 [list load $dir/tkimgpixmap13.dll]
package ifneeded img::png 1.3 [list load $dir/tkimgpng13.dll]
package ifneeded img::ppm 1.3 [list load $dir/tkimgppm13.dll]
package ifneeded img::ps 1.3 [list load $dir/tkimgps13.dll]
package ifneeded img::sgi 1.3 [list load $dir/tkimgsgi13.dll]
package ifneeded img::sun 1.3 [list load $dir/tkimgsun13.dll]
package ifneeded img::tga 1.3 [list load $dir/tkimgtga13.dll]
package ifneeded img::tiff 1.3 [list load $dir/tkimgtiff13.dll]
package ifneeded img::window 1.3 [list load $dir/tkimgwindow13.dll]
package ifneeded img::xbm 1.3 [list load $dir/tkimgxbm13.dll]
package ifneeded img::xpm 1.3 [list load $dir/tkimgxpm13.dll]
package ifneeded img::base 1.3 [list load $dir/tkimg13.dll]
}
close $fid
vfs::unmount tkkit
exit
###################################


Reply via email to