Re: Drag-n-Drop in Perl/Tkx

[email protected] (Laurence Anthony)
Newsgroups perl.tcltk
Message-ID <[email protected]>
Dear Jeff,

More steps forward and a few steps back.

I reinstalled the latest ActiveTcl and the tclsh85 script worked as you
described. tkkit went from 3081KB to 3135KB. However, one line that seems
critical is the following:
package require vfs::mk4  #this is necessary for the vfs::mk4::Mount command

Here is the complete script (that seemed to work):
package require vfs #installed in latest versions of ActivePerl
package require vfs::mk4  #this is necessary for the vfs::mk4::Mount command
set tkkit C:/Perl/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 tcllib C:/Tcl/lib # where you installed Tcl and most lib files
set tkkitlib tkkit/lib # this is one of the built-in $::auto_path search
areas
set tkdnd $tcllib/tkdnd2.0 # path to tkdnd lib files, complete with
pkgIndex.tcl
file copy -force $tkdnd $tkkitlib
vfs::unmount tkkit
exit

I next rewrote my Perl script removing the "lappend" hack and things worked
on my computer. But, when I tried to compile with PerlApp everything went
smoothly (with one warning) until I tried to test the executable, which
produced an error:

Can't create
'C:\DOCUME~1\Anthony\LOCALS~1\Temp\pdk-Anthony/auto/Tcl/Tcl.dll': Permission
denied at perlapp line 894.
BEGIN failed--compilation aborted at
/<Z:\all_files_20090303\software_development\dnd_testing\dnd_test_ver3_embedding_dnd_in_tkkit.exe>Tkx.pm
line 206.
BEGIN failed--compilation aborted at
dnd_test_ver3_embedding_dnd_in_tkkit.plline 2.

Below is the script (with comments for everyone) and below that the verbose
report from PerlApp.

Any help would be greatly appreciated.
Laurence.

SCRIPT
########################################################################################
use strict;
use Tkx;

Tkx::package_require('tkdnd');
my $e;
my $mw = Tkx::widget->new(".");
my $w_edit = $mw->new_entry(-name=>".current_dir",-textvariable=>\$e);
$w_edit->g_pack(qw '-fill both -expand true');

Tkx::tkdnd__drop___target_register($w_edit,'*');
Tkx::bind ($w_edit, '<<Drop:DND_Files>>', [ sub {
      $e = shift;
      print "I have '$e'\n";
}, Tkx::Ev("%D")]);

Tkx::MainLoop;

#COMMENTS
#Get tkdnd from http://sourceforge.net/projects/tkdnd/files/ (I used the
Windows binary)
#Put tkdnd2.0 into C:\Tcl\lib (or equivalent area)
#Note 1 on where to put tkdnd:
http://www.mail-archive.com/[email protected]/msg00448.html
########################################################################################


PerlAPP output
########################################################################################
PerlApp 8.0.1 build 289861 (perl 5.10.0)
Copyright (C) 1998-2009 ActiveState Software Inc. All rights reserved.
Standard license SCACD62284 for Laurence Anthony <
[email protected]>

Using Perl 5.10.0 located at:
*** C:\Perl\bin\perl.exe
Including modules:
+++ C:\Perl\lib\AutoLoader.pm
+++ C:\Perl\lib\Carp.pm
+++ C:\Perl\lib\Carp\Heavy.pm
+++ C:\Perl\lib\Config.pm
+++ C:\Perl\lib\Config_heavy.pl
+++ DynaLoader.pm (internal)
+++ C:\Perl\lib\Errno.pm
+++ C:\Perl\lib\Exporter.pm
+++ C:\Perl\lib\Exporter\Heavy.pm
+++ C:\Perl\lib\File\Glob.pm
+++ C:\Perl\lib\List\Util.pm
+++ C:\Perl\lib\PerlIO.pm
+++ C:\Perl\lib\PerlIO\scalar.pm
+++ C:\Perl\lib\Scalar\Util.pm
+++ C:\Perl\lib\Tcl.pm
Tclaux.pm:
    warn: Can't locate Tclaux.pm
    refby: C:\Perl\lib\Tcl.pm line 409
+++ C:\Perl\lib\Text\ParseWords.pm
+++ C:\Perl\lib\Tie\Hash\NamedCapture.pm
+++ C:\Perl\lib\Time\HiRes.pm
+++ C:\Perl\lib\Tkx.pm
+++ XSLoader.pm (internal)
+++ C:\Perl\lib\attributes.pm
+++ C:\Perl\lib\auto\File\Glob\Glob.dll
+++ C:\Perl\lib\auto\List\Util\Util.dll
+++ C:\Perl\lib\auto\PerlIO\scalar\scalar.dll
+++ C:\Perl\lib\auto\Tcl\Tcl.dll
+++ C:\Perl\lib\auto\Tcl\tkkit.dll
+++ C:\Perl\lib\auto\Tcl\copy_of_tkkit.dll
+++ C:\Perl\lib\auto\Time\HiRes\HiRes.dll
+++ C:\Perl\lib\overload.pm
+++ C:\Perl\lib\strict.pm
+++ C:\Perl\lib\vars.pm
+++ C:\Perl\lib\warnings.pm
+++ C:\Perl\lib\warnings\register.pm
+++ perl510.dll (C:\Perl\bin\perl510.dll)

Summary: 0 errors and 1 warning

Note that all dependencies marked with a "warn" message are usually
optional; they are only needed at runtime if the application makes
use of this optional functionality.

Please run `perlapp --help DIAGNOSTICS` for more information
about the generated error and warning messages.

Created 'dnd_test_ver3_embedding_dnd_in_tkkit.exe' [Test it]
Executable size: 6.69 MB same as last time

[DONE]

{.\dnd_test_ver3_embedding_dnd_in_tkkit.exe}
Can't create
'C:\DOCUME~1\Anthony\LOCALS~1\Temp\pdk-Anthony/auto/Tcl/Tcl.dll': Permission
denied at perlapp line 894.
BEGIN failed--compilation aborted at
/<Z:\all_files_20090303\software_development\dnd_testing\dnd_test_ver3_embedding_dnd_in_tkkit.exe>Tkx.pm
line 206.
BEGIN failed--compilation aborted at
dnd_test_ver3_embedding_dnd_in_tkkit.plline 2.

[DONE]
########################################################################################
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.