Thread Zeichen auf Skala verschieben: hin und zurück - will nicht (5 answers)
Opened by pktm at 2005-02-25 17:09

pktm
 2005-02-25 18:46
#52147 #52147
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Der COde funktioniert, nur noch nicht perfekt :-D
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
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
#!/Perl/bin/perl

use strict;
use warnings;
use Data::Dumper;
use Tk;
use Tk::ToolBar;
use Tk::ROText;

my $VERSION = 0.1;

my $mw = Tk::MainWindow->new(-width=>640,-height=>480);
$mw->packPropagate(0);
$mw->update();

# User-Interface:
# Eine große Box die den zu untersuchenden Text enthält
# Buttons für das das Verschieben der Zeichen auf der Skala
# Entry für die Anzahl der Verschiebungen
# Checkbox für whitespaces
# reset-button für Text (Text in variable zwischenspeichern)
# ----
# Optional:
# event. merken welche verschiebung durchgeführt wurde um die rücksicherung nicht
# durch eine Variable erledigen zu lassen
# die häufigsten Zeichen des Textes und Kombinationen
# ----
# Textfeld auslesen: get('1.0', 'end')
# Textfeld löschen: delete('1.0','end');

# -- [ GUI ] -- #

my %window = (); # Kontainer für alle Fenster-Elemente (anstatt Variablen)

$window{text} = $mw->Scrolled('Text',-scrollbars=>'se',);
$window{debugCaption} = $mw->Label(-text=>'Debug:',-justify=>'left',);
$window{debug} = $mw->Scrolled(
'ROText',
-scrollbars=>'se',
-height=>6,
-bg => 'black',
-fg => 'orange',
-wrap => 'word',
);

$window{text}->pack(-side=>'top',-fill=>'x',-anchor=>'w',);
#$window{debugCaption}->pack(-side=>'top',-fill=>'x',-anchor=>'w',);
#$window{debug}->pack(-side=>'top',-fill=>'x',-anchor=>'w',);

$window{ToolBar} = $mw->ToolBar(-movable => 1, -side => 'bottom');

$window{ToolBarLeft} = $window{ToolBar}->ToolButton(
-image => 'navback22',
-tip => 'back',
-command => sub{
forward(
$window{text},
$window{ToolBarEntry}->get(),
-1,
), # /&forward
}, # /sub, -command
);

$window{ToolBarEntry} = $window{ToolBar}->ToolLabEntry(
-label => '',
-labelPack => [-side => "left",
-anchor => "w"],
);
$window{ToolBarEntry}->insert('0.0', 1); # verscheibung vordefinieren

$window{ToolBarRight} = $window{ToolBar}->ToolButton(
-image => 'navforward22',
-tip => 'forward',
-command => sub{
forward(
$window{text},
$window{ToolBarEntry}->get(),
1,
), # /&forward
}, # /sub, -command
);
MainLoop;

sub forward {
my $textfeld = shift;
my $verschiebung = shift;
my $ignWhitespaces = shift;

my $altText = $textfeld->get('0.0','end');
my $neuText = undef; # neuer Text komm thier rein

foreach my $z ( split("", $altText) ) {
# sollen whitespaces ignoriert werden? (und ist das aktuelle zeichen eins?)
if ( $ignWhitespaces and $z =~ m/\s/ ){
$neuText .= $z;
}else{
$neuText .= chr((ord($z)+$verschiebung));
}
} # /foreach @text
chop $neuText; # letztes Leerzeichen wegmachen, da die Textarea beim insert immer eines dran hängt

# textfeld löschen
$textfeld->delete('0.0', 'end');

# neuen, codierten Text einfügen
$textfeld->insert('0.0', $neuText);

} # /forward

sub back {
my $textfeld = shift;
my $verschiebung = shift;
my $ignWhitespaces = shift;

$verschiebung *= -1;

forward($textfeld, $verschiebung, $ignWhitespaces);

} # /back
http://www.intergastro-service.de (mein erstes CMS :) )

View full thread Zeichen auf Skala verschieben: hin und zurück - will nicht