Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
Tclkit<br />
Name<br />
twapi<br />
tablelist<br />
BWidget<br />
cwind<br />
winico<br />
snack<br />
expect<br />
Tabelle 1: Hilfreiche Packages<br />
Funktion<br />
Zugriffsfunktionen für Windows-API<br />
Mehrspaltiges Tabellen-Widget <strong>mit</strong> vielfältigen Sonderfunktionen<br />
Kombinierte Widgets<br />
Simulation von Tastatur <strong>und</strong> Mauseingaben unter Windows<br />
Anzeige von Icons in der Windows-Taskbar<br />
So<strong>und</strong>-Funktionen<br />
Automatisierung von komplexeren Komandozeilen-Programmen, zum Beispiel<br />
Zugänge <strong>mit</strong> Einmalpassworten<br />
Abbildung 1:<br />
Die Ausgabe des<br />
Skripts »Hello.tcl«.<br />
meiden, werden das Programm »tclkit.<br />
exe« <strong>und</strong> die Datei »sdx.kit« in das gleiche<br />
Verzeichnis wie das Skript »hello.tcl«<br />
kopiert. Der Aufruf<br />
tclkitsh sdx.kit qwrap hello.tcl U<br />
‐runtime tclkit.exe<br />
Nachdem das Skript erfolgreich getestet<br />
ist, kann nun ein eigenständiges Programm<br />
daraus erstellt werden. Dazu ist<br />
wieder die Shell bezieungsweise Eingabeaufforderung<br />
notwendig. Der Aufruf ist<br />
unter Windows <strong>und</strong> Linux gr<strong>und</strong>sätzlich<br />
gleich. Unter Windows ist allerdings »tclkitsh«<br />
zu verwenden. Im folgenden sollen<br />
die Programmaufrufe unter Windows als<br />
Beispiele dienen, weil der Programmierer<br />
hier zwischen Text- <strong>und</strong> GUI-Modus unterscheiden<br />
muss. Verwendet er dagegen<br />
Linux, heißt es immer nur »tclkit«. Um<br />
die Eingabe langer Pfadnamen zu vertcl«<br />
ein Fenster <strong>mit</strong> dem Button „Hello<br />
World“ an, das nach dem Klick auf den<br />
Button beendet wird (Abbildung 1). Unter<br />
Windows lässt sich diese Datei <strong>mit</strong><br />
einem Doppelklick starten.<br />
GUIs <strong>mit</strong> Tk<br />
Die ersten drei Zeilen des Programmcodes<br />
werden nur unter Linux benötigt,<br />
da<strong>mit</strong> die Datei direkt ausgeführt werden<br />
kann. Die Zeile<br />
package require Tk<br />
lädt die grafische Komponente Tk. Dies<br />
ist beim Starten des Skripts <strong>mit</strong> der Tcl-<br />
Laufzeitumgebung nicht nötig, wird allerdings<br />
für die korrekte Ausführung <strong>mit</strong><br />
dem tclkit benötigt. Die Zeile 6 erzeugt<br />
den „Hello World“-Button, die Zeile 7<br />
zeigt den Button am Bildschirm an.<br />
Das Skript »hello.tcl« lässt sich auch direkt<br />
<strong>mit</strong> dem tclkit ausführen. Dazu gibt<br />
man in einer Shell (oder im Cmd-Fenster)<br />
im Verzeichnis des Skripts<br />
tclkit hello.tcl<br />
ein. Es öffnet sich wieder ein Fenster <strong>mit</strong><br />
dem Button „Hello World“.<br />
Das erste Starpack<br />
erzeugt die Datei »hello«, die nach dem<br />
Umbenennen in »hello.exe« startbar ist.<br />
Um jetzt unter Windows ein Programm<br />
für Linux zu erzeugen, muss nur das Tclkit<br />
für Linux (»tclkit‐8.5.9‐linux‐ix86«) in<br />
das gleiche Verzeichnis kopiert werden.<br />
Durch den Aufruf von<br />
tclkitsh sdx.kit qwrap hello.tcl U<br />
‐runtime tclkit‐8.5.9‐linux‐ix86<br />
entsteht die Datei »hello«, die jetzt ein<br />
ausführbares Programm für Linux ist.<br />
Analog ist dies auch unter Linux für Windows<br />
möglich. So lassen sich Programme<br />
für verschiedene Rechner Plattformen<br />
aus einem Quelltext erzeugen, da nur das<br />
entsprechende Tclkit der Ziel-Plattform<br />
<strong>mit</strong> dem Parameter »‐runtime« bei der<br />
Erzeugung anzugeben ist. Es gilt aber zu<br />
beachten, dass es die Verwendung plattformspezifischer<br />
Packages ( zum Beispiel<br />
»twapi« oder »registry« für Windows) unmöglich<br />
machen kann, das Programm zu<br />
portieren.<br />
E<br />
Listing 1: Ein Editor<br />
01 #!/bin/sh<br />
02 ##\<br />
03 exec wish "$0" "$@"<br />
04 <br />
05 package require BWidget<br />
06 package require Tk<br />
07 <br />
08 proc openfile {} {<br />
09 global hw<br />
10 set filename [tk_getOpenFile]<br />
11 # Abbruch liefert einen leeren String zurück<br />
12 if {[string bytelength $filename] != 0} {<br />
13 set fp [open $filename r]<br />
14 $hw.sw.t delete 1.0 end<br />
15 $hw.sw.t insert end [read $fp]<br />
16 close $fp<br />
17 }<br />
18 }<br />
19 <br />
20 proc savefile {} {<br />
21 global hw<br />
22 set filename [tk_getSaveFile]<br />
23 # Abbruch liefert einen leeren String zurück<br />
24 if {[string bytelength $filename] != 0} {<br />
25 set fp [open $filename w]<br />
26 puts $fp [$hw.sw.t get 1.0 end]<br />
27 close $fp<br />
28 }<br />
29 }<br />
30 <br />
31 # Erzeuge Haupt Frame<br />
32 MainFrame .mf<br />
33 pack .mf ‐fill both ‐expand yes<br />
34 <br />
35 # Erzeuge Toolbar<br />
36 set tb [.mf addtoolbar]<br />
37 set bbox [ButtonBox $tb.bbox ‐spacing 0 ‐padx<br />
1 ‐pady 1]<br />
38 $bbox add ‐command openfile \<br />
39 ‐highlightthickness 0 ‐image [Bitmap::get<br />
openfold] ‐takefocus 0 ‐relief link \<br />
40 ‐borderwidth 1 ‐padx 1 ‐pady 1 \<br />
41 ‐helptext "Öffnen"<br />
42 $bbox add ‐command savefile \<br />
43 ‐highlightthickness 0 ‐image [Bitmap::get<br />
save] ‐takefocus 0 ‐relief link \<br />
44 ‐borderwidth 1 ‐padx 1 ‐pady 1 \<br />
45 ‐helptext "Speichern"<br />
46 <br />
47 # Anzeigen der Toolbar<br />
48 pack $bbox ‐side left ‐anchor w<br />
49 <br />
50 # Fensterbereich er<strong>mit</strong>teln<br />
51 set hw [.mf getframe]<br />
52 <br />
53 # Textbereich <strong>mit</strong> Scrollbars<br />
54 ScrolledWindow $hw.sw<br />
55 text $hw.sw.t<br />
56 $hw.sw setwidget $hw.sw.t<br />
57 <br />
58 # Textbereich anzeigen<br />
59 pack $hw.sw ‐fill both ‐expand yes<br />
60 <br />
61 # Ctrl‐o <strong>und</strong> Ctrl‐s den Funktionen Öffnen <strong>und</strong><br />
Schließen zuordnen<br />
62 bind . openfile<br />
63 bind . savefile<br />
www.admin-magazin.de<br />
Admin<br />
Ausgabe 06-2012<br />
119