Thread Autovervollständigung bei Pfadeingaben: (wie in der Shell von Linux [bash,...]) (2 answers)
Opened by Crian at 2003-08-09 01:41

Crian
 2003-08-20 12:52
#46296 #46296
User since
2003-08-04
5866 Artikel
ModeratorIn
[Homepage]
user image
Ich hab das Problem behoben, jetzt kann man einfach weitertippen nach der Autovervollständigung:

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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#!/usr/bin/perl
use diagnostics;
use strict;
use warnings;

use Tk;

my $mw = new MainWindow;
$mw->title('Button mit geteiltem Text?');


my $e = $mw->Entry(-text    => '',
                   -width   => 80,
                  )
            ->pack(
                   -expand  => 1,
                   -fill    => 'x',
                  );

$mw->bind ('<Tab>', \&vervollstaendige );


$e->focus();
MainLoop();

sub vervollstaendige {
    my $text = $e->get();
    print $text, "\n";
    my @treffer;

    my ($pfad, $trenner, $anf) = $text =~ m~^(.*)([/\\])([^/\\]*)$~;
    print "pfad='$pfad', Anfang='$anf'\n";

    if (! -d $pfad) {
        print "'$pfad' ist kein Verzeichnis, Abbruch\n";
    }
    else {
        opendir PFAD, "$pfad/"
            or die "Kann Verzeichnis '$pfad' nicht öffnen: $!";
        my @verzeichnisse = grep -d "$pfad/$_", readdir PFAD;
        closedir PFAD;

        for my $v (@verzeichnisse) {
            print "Verzeichnis '$v'\n";
            if ($v =~ /^\Q$anf/i) { # bei Linux/Unix das i entfernen!
                print "Anfang '$anf' passt auf '$v'\n";
                push @treffer, $v;
            }
        }
    }

    $e->delete(0, 'end');

    if (scalar(@treffer) == 1) {
        $e->insert('end', "$pfad$trenner$treffer[0]");
    }
    else {
        $e->insert('end', "$pfad$trenner$anf");
    }

    $e->selectionClear();
    $e->icursor('end');

    $e->configure(state => 'disable');
    $e->configure(state => 'enable');
    $e->focus();
} # sub vervollstaendige
\n\n

<!--EDIT|Crian|1061369714-->
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite

View full thread Autovervollständigung bei Pfadeingaben: (wie in der Shell von Linux [bash,...])