Leser: 1
|< 1 2 3 >| | 22 Einträge, 3 Seiten |
-bg => 'white',
$t->tagConfigure('title', -bg => 'white', -fg => 'black');
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
my $t = $page1->Scrolled(TableMatrix=> -cols => 8, -rows => 2, -colstretchmode => 'last', -rowstretchmode => 'last', -selectmode => 'extended', -titlerows => 1, -variable => $arrayVar, -resizeborders => none, -height => 7 , -width => 8, -maxwidth => 900, -scrollbars => 'oe', )->grid();
pack(-expand => 1, -fill => 'both');
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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
#!/usr/bin/perl
use strict;
use warnings;
use Tk;
use Tk::HList;
use Tk::ItemStyle;
my $mw = MainWindow->new();
my $hlist = $mw->Scrolled("HList",
-header => 1,
-columns => 4,
-scrollbars => 'osoe',
-width => 70,
-selectbackground => 'SeaGreen3',
-background => 'white',
)
->pack();
my $headerstyle = $hlist->ItemStyle('window',
-padx => 0,
-pady => 0,
);
my $btn_from = $hlist->Button(-text => 'From', -relief => 'flat', -command => [ \&MyTk::HList::order, 0, 0 ]);
my $btn_subj = $hlist->Button(-text => 'Subject', -relief => 'flat', -command => [ \&MyTk::HList::order, 1, 0 ]);
my $btn_date = $hlist->Button(-text => 'Date', -relief => 'flat', -command => [ \&MyTk::HList::order, 2, 0 ]);
my $btn_size = $hlist->Button(-text => 'Size', -relief => 'flat', -command => [ \&MyTk::HList::order, 3, 1 ]);
$hlist->header('create', 0, -itemtype => 'window', -widget => $btn_from, -style => $headerstyle);
$hlist->header('create', 1, -itemtype => 'window', -widget => $btn_subj, -style => $headerstyle);
$hlist->header('create', 2, -itemtype => 'window', -widget => $btn_date, -style => $headerstyle);
$hlist->header('create', 3, -itemtype => 'window', -widget => $btn_size, -style => $headerstyle);
my @x_coords = (2);
my @mails = (['test@email.de', 'Re:HList?', '1999-11-20', '1432'],
["dummy\@foo.com", "Re: HList?", "1999-11-21", "2335"],
['abc@foo.com', 'Re: Re: HList xxx?', '2004-10-12', '965'],
);
for my $index (0..$#mails) {
$hlist->add($index);
for my $textin (0..scalar(@{$mails[$index]}-1)) {
$hlist->itemCreate($index, $textin,
-text => $mails[$index]->[$textin],
);
}
}
my $x = 2;
for(0..3){
$x += $hlist->columnWidth(0);
push(@x_coords,$x);
}
print $_,"\n" for(@x_coords);
my $entry;
$hlist->bind('<Double-1>',[\&MyTk::HList::edit,Ev('x'),Ev('y')]);
$hlist->bind('<Button-1>',sub{if(defined $entry){$entry->destroy();$entry = undef}});
MainLoop();
# -----------------------------------------------------------------------------
package MyTk::HList;
my $last_btn;
my $switch;
BEGIN {
$last_btn = -1;
$switch = 0;
}
sub order {
my ($which, $numorder) = @_;
$hlist->delete('all');
my @sorted_mails = $numorder
? sort{$a->[$which] <=> $b->[$which]} @mails
: sort{$a->[$which] cmp $b->[$which]} @mails;
if ($which == $last_btn) {
$switch = 1 if $switch == 0;
$switch = -$switch;
@sorted_mails = reverse @sorted_mails if $switch == -1;
}
else {
$last_btn = $which;
$switch = 0;
}
for my $index(0..$#sorted_mails) {
$hlist->add($index);
for my $textin(0..scalar(@{$sorted_mails[$index]}-1)) {
$hlist->itemCreate($index, $textin,
-text => $sorted_mails[$index]->[$textin],
);
}
}
}
sub edit{
my ($hlist,$x,$y,$entryref) = @_;
my ($col,$width);
my $entryPath = $hlist->nearest($y);
if($hlist->info('exists',$entryPath)){
($col) = grep{$x > $x_coords[$_] && $x <= $x_coords[$_+1]}0..scalar(@x_coords)-1;
$width = $x_coords[$col+1] - $x_coords[$col];
print "X: $x .. Col: ",$col," -> ",$x_coords[$col],"/",$x_coords[$col+1]," .. Width: ",$width,"\n";
}
$entry = $mw->Entry()->place('-x' => $x_coords[$col], '-y' => $y);
}
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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
#!/usr/bin/perl
use strict;
use warnings;
use Tk;
use Tk::HList;
use Tk::ItemStyle;
my $mw = MainWindow->new();
my $hlist = $mw->Scrolled("HList",
-header => 1,
-columns => 4,
-scrollbars => 'osoe',
-width => 70,
-selectbackground => 'SeaGreen3',
-background => 'white',
)
->pack();
my $headerstyle = $hlist->ItemStyle('window',
-padx => 0,
-pady => 0,
);
my $btn_from = $hlist->Button(-text => 'From', -relief => 'flat', -command => [ \&MyTk::HList::order, 0, 0 ]);
my $btn_subj = $hlist->Button(-text => 'Subject', -relief => 'flat', -command => [ \&MyTk::HList::order, 1, 0 ]);
my $btn_date = $hlist->Button(-text => 'Date', -relief => 'flat', -command => [ \&MyTk::HList::order, 2, 0 ]);
my $btn_size = $hlist->Button(-text => 'Size', -relief => 'flat', -command => [ \&MyTk::HList::order, 3, 1 ]);
$hlist->header('create', 0, -itemtype => 'window', -widget => $btn_from, -style => $headerstyle);
$hlist->header('create', 1, -itemtype => 'window', -widget => $btn_subj, -style => $headerstyle);
$hlist->header('create', 2, -itemtype => 'window', -widget => $btn_date, -style => $headerstyle);
$hlist->header('create', 3, -itemtype => 'window', -widget => $btn_size, -style => $headerstyle);
my @x_coords = ($hlist->cget(-borderwidth) + $hlist->cget(-highlightthickness));
my @mails = (['test@email.de', 'Re:HList?', '1999-11-20', '1432'],
["dummy\@foo.com", "Re: HList?", "1999-11-21", "2335"],
['abc@foo.com', 'Re: Re: HList xxx?', '2004-10-12', '965'],
);
for my $index (0..$#mails) {
$hlist->add($index);
for my $textin (0..scalar(@{$mails[$index]}-1)) {
$hlist->itemCreate($index, $textin,
-text => $mails[$index]->[$textin],
);
}
}
my $x = $x_coords[0];
for(0..3){
$x += $hlist->columnWidth($_);
push(@x_coords,$x);
}
print $_,"\n" for(@x_coords);
my $entry;
$hlist->bind('<Double-1>',[\&MyTk::HList::edit,Ev('x'),Ev('y')]);
$hlist->bind('<Button-1>',sub{if(defined $entry){$entry->destroy();$entry = undef}});
MainLoop();
# -----------------------------------------------------------------------------
package MyTk::HList;
my $last_btn;
my $switch;
BEGIN {
$last_btn = -1;
$switch = 0;
}
sub order {
my ($which, $numorder) = @_;
$hlist->delete('all');
my @sorted_mails = $numorder
? sort{$a->[$which] <=> $b->[$which]} @mails
: sort{$a->[$which] cmp $b->[$which]} @mails;
if ($which == $last_btn) {
$switch = 1 if $switch == 0;
$switch = -$switch;
@sorted_mails = reverse @sorted_mails if $switch == -1;
}
else {
$last_btn = $which;
$switch = 0;
}
for my $index(0..$#sorted_mails) {
$hlist->add($index);
for my $textin(0..scalar(@{$sorted_mails[$index]}-1)) {
$hlist->itemCreate($index, $textin,
-text => $sorted_mails[$index]->[$textin],
);
}
}
}
sub edit{
my ($hlist,$x,$y,$entryref) = @_;
my ($col,$width);
my $entryPath = $hlist->nearest($y);
if($hlist->info('exists',$entryPath)){
($col) = grep{$x > $x_coords[$_] && $x <= $x_coords[$_+1]}0..scalar(@x_coords)-1;
$width = $x_coords[$col+1] - $x_coords[$col];
print "X: $x .. Col: ",$col," -> ",$x_coords[$col],"/",$x_coords[$col+1]," .. Width: ",$width,"\n";
}
$y = ($hlist->infoBbox($entryPath))[1];
my $y2 = ($hlist->infoBbox($entryPath))[3];
my $height = $y2-$y;
my $e = $hlist->itemCget($entryPath, $col, -text);
$entry = $hlist->Entry(-textvariable => \$e, -borderwidth => 0, -bg => $hlist->cget(-bg))->place('-x' => $x_coords[$col], '-y' => $y + $btn_from->height + $hlist->cget(-highlightthickness) + $hlist->cget(-borderwidth), -width => $width, -height => $height);
# XXX an die richtige Stelle positionieren: $entry->index(...);
}
1 2 3 4 5 6 7 8
my $rnd_window = sub { my $yn = int(rand(10)); if ($yn == 3) { ('Button', 'Entry')[rand(2)]; } else { undef; } };
|< 1 2 3 >| | 22 Einträge, 3 Seiten |