Zurück |
Übersicht |
Weiter
Kapitel 2 : Vorbereitung
Installation
Mit "perl -MWx -e;" kann man leicht prüfen ob wxPerl bereits vorhanden ist, denn falls nicht, wird Perl melden das es in den definierten @INC Pfaden kein Module namens Wx zu finden war. Fehlt Wx, kann man es leicht mit der CPAN-Shell nachinstallieren. Dazu ruft man den Perl-Interpreter auf mit folgenden Parametern: >perl -MCPAN -e 'install Wx'. Der Rest (das laden, testen und installieren) geht nun automatisch. Dies erfordert jedoch einen installierten C-Compiler.
Besitzt man dies nicht, oder möchte man der nativen Paketverwaltung ins Handwerk pfuschen, ist man auf vorkompilierte Pakete angewiesen. Diese gibt es unter Linux im rpm und im deb Format. Unter Suse-Linux bitte darauf achten, das das wxPerl-rpm-Paket, von einem wxWidgets-rpm-Packet abhängig ist und das das installierte wxPerl auch wirklich die installierte wxWidgets-Versionsnummer benötigt. Debian scheint da weniger anfällig, hat aber erst seit kurzen ein extra Wxperl-Paket.
Unter Windows empfiehlt es sich
Strawberry Perl zu verwenden, da es bereits Wx enthält und auch Wx problemlos kompilieren kann. Mit ActivePerl, oder anderen Distros, wo man schon eher Probleme mit Compilern haben kann oder diese auch weniger häufig installiert sind, ist es oft am einfachsten auf der
englischen wxPerl-Entwicklerseite sich das passende ppm-Paket zu laden und es mit >ppm install paketname.ppm zu installieren, oder gleich online zu installieren. Dazu fügt man mit
>
rep add wxUTF http://www.wxperl.co.uk/repository/
die angegebene Adresse als zusätzliches repository hinzu. Das anschliessende "install Wx" innerhalb der ppm die man in der Kommandozeile mit ppm ruft tut die Installation automatisch. Ab version 4 gibt es auch eine graphische ppm Version. Hier kamm man das gleiche mit einem Dialog erreichen den ihr unter dem Menüpunkt Edit > Preferenzes, dann Reiter Repositories (oder Ctrl+P, Alt+R) findet.
Seit ca. Version 0.57 beinhaltet das binäre Perlmodul Wx wirklich nur noch das Binding zu einer WxWidgets-Installation. Da die oft nicht vorhanden ist (besonders unter Windows), pflegt Mattia auch das Paket Alien::wxWidgets, welches ein WxWidgets auf ihrem System kompilieren wird. Und wenn dies (aus welchen Gründen auch immer) gerade nicht geht, hilft die Notbremse in Form des ppm-Paketes Alien::wxWidgets das ebenfalls im darüber genanntem Repository zu finden ist.
verfügbare Dokumentation
Auf der
WxPerl-Doku-Seite ist alles zusammengetragen, was es an Schriften über WxPerl gibt, auch die
offizielle WxPerl-Wiki. Auf Deutsch kenn ich derzeit keine aktiven Ressourcen, außer diesem Tutorium.
Wie schon erwähnt, kann man sich auf
WxWidgets.org die vollständige Wx-Dokumentation herunterladen, oder auch die
Online-Version auf der WxPerl-Seite benutzen.
Diese Doku emfehle ich auch parallel zu diesem Tutorial zu benutzen, weil sie alphabetisch und thematisch sortiert ist, viele weitere Hilfen beinhaltet und zu jeder Klasse alle Methoden, Konstanten, Ereignisse und Vererbung kennt. Noch besser sortiert ist
die Doku, die immer aktuell aus den Quellen kompiliert wird und daher dem aktuellen Stand des Entwicklerzeiges entspricht. Bitte nicht daran stören das sie für C++ - Programmierer geschrieben wurde, man kann alles aus ihr übernehmen und die wenigen Abweichungen zu WxPerl sind auch von Mattia selbst dort eingetragen.
Wer lieber tüftelt und probiert, lade sich von der
wxPerl-Downloadseite die "Examples". Sie enthalten auch ein Demo-Programm an dem man viele Fähigkeiten von Wx ausprobieren und sich bei gefallen nur den beiliegendem Quellcode herauskopieren braucht. Zusammen mit der Doku dürfte das vielen Programmierern reichen um einen selbsgewählten Einstieg in Wx zu schaffen.
Kurzeinweisung in den generellen Aufbau
Praktiker bitte weiterblättern aber wer etwas von der Systematik verstehen will, nach der Wx aufgebaut ist, sollte sich das hier vorher noch durchlesen und sich später viel Sucherei nach leicht vermeidbaren Irrtümern ersparen.
- Erste Regel in Wx ist: Alles ist ein Objekt. Es gibt einige Ausnahmen von klassenlosen Funktionen (Popupboxen z.B.), aber jedes Fenster, Knopf, Graphik, Menüitem, Verwaltungseinheiten, alles sind Objekte. Das bedeutet, daß man die meisten Dinge mit einer $obj->new() Methode erstellt und man bei vielen Funktionalitäten die richtige Klasse beerben muss um dann die entscheidenden Methoden zu überschreiben. (normale OOP halt).
- Diese Hierarchien von Objekten haben manchmal den Nachteil, daß dir Wx anstatt eines Ergebnisarrays ein Objekt liefert (z.B. Koordinatenobjekt aus dem man Einzelwerte mit $obj->GetX und $obj->GetY rauspopeln muss) . Aber an solchen Stellen hat Mattia auch zusätzliche perlspezifische Methoden eingefügt die dir direkt einen Array liefern oder auch Daten in Arrayform annehmen wie z.B. bei den Auswahlmöglichkeiten einer List oder Combobox.
- Ansonst unsichtbare wie Graphikparser müssen vor Gebrauch initialisiert werden.
- Das Verhalten einiger Objekte hängt entscheidend von den Rückgabewerten ab die die von dir überschriebenen Methoden liefern. Die berüchtigsten Kandidaten sind hier ->OnInit, ->Show u.w. Also hier explizite Rückgabewerte angeben damit sie nicht zufällig gesetzt werden.
- Alle Methoden werden mit positionalen Parametern gefüttert, deren Schema (soweit möglich) überall gleich ist. Sie sind auch von wichtig bis unwichtig angeordnet, sodaß unwichtige weggelassen werden können.
- Oft kann man statt Werte einzutragen mit einer -1 oder der Konstante wxDEFAULT (evtl. wxDefaultPosition, wxDefaultSize) die Eigenschaften auf Standard stellen. Weggelassene Parameter haben immer Defaultwerte.
- Eigenschaften werden immer über Kontanten festgelegt die mit or (|) verknüpft werden. Diese Konstanten stehen für einen Zahlenwert der auch direkt eingegeben werden kann, was aber eher unsauber ist und nur in Sonderfällen Sinn macht.
- Sei mutig bei Bugreports. Wx ist sehr reif, aber die Perlseite ist in manchem noch nicht ausreichend getestet. Der Bug muss nicht immer an dir liegen. Unterstützt Mattia.
Zurück |
Übersicht |
Weiter
--
HerbertBreunung - 07 Jul 2005