Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]10798[/thread]

Tk Drag&Drop aus Webbrowser

Leser: 1


<< >> 4 Einträge, 1 Seite
Strat
 2007-11-15 00:33
#102427 #102427
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
Hallo Leute,

wenn ich folgendes Script verwende, kann ich auf die Listbox lokale Dateien ziehen, und es funktioniert:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#!/usr/local/bin/perl
use strict;
use warnings;

use Tk;
use Tk::DropSite;
use strict;
use vars qw($top $drop);

$top = new MainWindow;
$top->Label(-text => "The drop area:")->pack;
$drop = $top->Scrolled('Listbox',
                       -scrollbars => "osoe",
                       )->pack;
# Tell Tk that $drop should accept drops.
# The allowed drag and drop types on Unix systems are "KDE", "XDND" and "SUN"
# and on Windows systems the "Win32" dnd type.
# When dropping occurs, execute the accept_drop callback.
$drop->DropSite
    (-dropcommand => [\&accept_drop, $drop],
     -droptypes => ($^O eq 'MSWin32' ? 'Win32' : ['KDE', 'XDND', 'Sun'])
     );
MainLoop;

sub accept_drop {
    my($widget, $selection) = @_;

    my $filename;
    eval {
        if ($^O eq 'MSWin32') {
            $filename = $widget->SelectionGet(-selection => $selection,
                                              'STRING');
        } else {
            $filename = $widget->SelectionGet(-selection => $selection,
                                              'FILE_NAME');
        }
    };
    if (defined $filename) {
        $widget->insert(0, $filename);
    }
}


Ich brauche jedoch ein Drag&Drop, das auch von Webbrowsern aus funktioniert (egal ob IE oder FireFox). Hat wer Ahnung, wie das geht?
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
Spieler
 2007-11-15 15:28
#102438 #102438
User since
2007-09-24
70 Artikel
BenutzerIn
[default_avatar]
Hallo,

das ist jetzt wahrscheinlich keine befriedigende Antwort. So würde wenigstens ein paste (Ctrl-v) funktionieren (nicht auf unerwünschte Nebenwirkungen getestet):

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
use strict;
use warnings;
package Tk::MyLB;
require Tk::Listbox;
our @ISA = qw /Tk::Listbox Tk::Clipboard/;
Tk::Widget->Construct('MyLB');
sub ClassInit{
my ($class,$mw) = @_;
$class->SUPER::ClassInit($mw);
$mw->bind($class,'<Control-v>','insert_from_cb');
}
sub insert_from_cb{
my $self = shift;
$self->insert('end',$self->clipboardGet());
}
package main;
use Tk;
use strict;
use vars qw($top $drop);

$top = new MainWindow;
$top->Label(-text => "The drop area:")->pack;
$drop = $top->Scrolled('MyLB',
-scrollbars => "osoe",
-takefocus => 1,
)->pack;

MainLoop;


PS: kann man die Anzeige der Zeilennummern für [perl] ge'tag'ten code irgendwie unterbinden? Ich mache jetzt z.B.
Code: (dl )
perl -pi'*.ori' -e"s/^\d+://" test.pl
damit, aber ich finde das lästig.

Christoph
pq
 2007-11-15 15:37
#102439 #102439
User since
2003-08-04
12209 Artikel
Admin1
[Homepage]
user image
Spieler+2007-11-15 14:28:57--
PS: kann man die Anzeige der Zeilennummern für [perl] ge'tag'ten code irgendwie unterbinden? Ich mache jetzt z.B.
Code: (dl )
perl -pi'*.ori' -e"s/^\d+://" test.pl
damit, aber ich finde das lästig.

das ist schon laenger auf der todo-liste. bisher hatte wohl noch keiner zeit dafuer.
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
ptk
 2007-11-15 21:57
#102462 #102462
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Auf X11-Systemen kann man sich sogar den HTML-Quellcode des selektierten Bereichs mit dem "text/html"-Typ über SelectionGet holen. Allerdings braucht man dafür ein frisch gebautes Tk aus dem Subversion-Repository (https://svn.perl.org/modules/Tk/trunk). Dort einfach mal das Skript "selection" in DragDrop-Verzeichnis ausprobieren.
<< >> 4 Einträge, 1 Seite



View all threads created 2007-11-15 00:33.