--- "the.noonings" <[EMAIL PROTECTED]> wrote:
> Joshua Garrett wrote:
>
> >Hi,
> >
> >I've created a PAR PP executable for OS X and
> Windows, and notice a
> >substantial difference. On Windows, the executable
> supports drag and drop,
> >with any dropped files/directories passed to ARGV.
> On the Mac, the
> >executable does not support drag and drop.
> >
> >Is there a way to make drag and drop work on an OS
> X PAR executable, without
> >resorting to Dropscript or Platypus?
> >
> >I need a standalone executable with drag and drop.
> >
> >Thanks,
> >
> >joshua
> >
> This is not a shot in the dark. It may be a shot in
> the shadows.
>
> I was believing the same thing for Linux. D&D
> worked fine on Windows,
> and D&D worked on Linux with the old Perl/Tk.
> However, with the newest
> version of Perl/Tk, Tk-804.027 11 Apr 2004 - Nick
> Ing-Simmons, D&D
> only worked on Windows. I had faithfully followed
> the examples, and did
> not change anything in my code. I did not really
> care so I did not
> report it. Then one day my eye caught something in
> the "sub
> accept_drop" from some drag and drop web examples
> where I originally got
> the code..
>
> See "FILE_NAME" below? I changed it to "STRING" as
> you see because that
> is what the Windows section of sub accept_drop had.
> ------------- paste
> $string_dropped =
> $widget->SelectionGet(-selection => $selection,
> # 'FILE_NAME');
> 'STRING');
> ------------- end paste
> From the on, Drag and Drop worked fine for the new
> Tk, too.
>
> To save some others some work, I am pasting a file
> called
> "test_drag_and_drop.pl that works on Windows and
> Linux. First though,
> let me state that I know this may not have anything
> to do with why it
> does not work on a Mac, except perhaps if you used
> the same original
> example code I did. In any case, please let us know
> if this works on
> your Mac machine.
>
> Thanks
> -------------------------- paste
> test_drag_and_drop.pl
> #!/usr/bin/perl -w
> # file: test_drag_and_drop.pl
> #################
> use Tk;
> use Tk::DropSite;
>
> #################
> use strict;
> #################
> use vars qw($mw $textbox);
> #################
>
> #################
> sub accept_drop {
> my($widget, $selection) = @_;
>
> my $string_dropped;
> eval {
> if ($^O eq 'MSWin32') {
> $string_dropped =
> $widget->SelectionGet(-selection => $selection,
> 'STRING');
> } else {
> $string_dropped =
> $widget->SelectionGet(-selection => $selection,
> # 'FILE_NAME');
> 'STRING');
> }
> };
> if (defined $string_dropped) {
> $widget->insert('end', $string_dropped . "\n");
> }
> }
>
> #################
> sub print_string_and_exit {
> my ($mw, $textbox, ) = @_;
>
> my $string;
> $string = $textbox->get("0.0", "end");
>
> print STDOUT "You dragged and dropped
> ::\n$string\n";
>
> $mw->destroy;
>
> }
>
> #################
>
> $mw = new MainWindow;
> $mw->title("Try to Drag and Drop");
>
> $textbox =
> $mw->Scrolled('Text', -scrollbars => "osoe",
> -height => 10,
> -width => 72,
> )->pack;
>
>
> $textbox->DropSite
> (-dropcommand => [\&accept_drop, $textbox],
> -droptypes => ($^O eq 'MSWin32' ? 'Win32' :
> ['XDND', 'Sun'])
> );
>
>
> my $okay_button =
> $mw->Button( -text => "Okay",
> -command => [
> \&print_string_and_exit,
> $mw,
> $textbox,
> ]
> )->pack(
> -side => 'left',
> -anchor => 'n',
> -ipadx => 10,
> -expand => 1,
> );
>
>
#.....................................................................
>
> #########
> MainLoop;
> #########
>
>
Thanks for the thoughtful reply.
The script I wrote does not use Tk! On Windows, PAR
makes it drag-and-droppable all by itself, putting
dragged items in ARGV. On Mac, it does not...
For now I am using Applescript/Platypus shells, but I
am wondering if there is a better way just with PAR.
Thanks again.
Joshua
__________________________________
Do you Yahoo!?
Jazz up your holiday email with celebrity designs. Learn more.
http://celebrity.mail.yahoo.com