26.02.2014 Aufrufe

ADMIN Magazin Gestapelt - Schneller und sicherer mit RAID (Vorschau)

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!