Weaverslave 4

Benutzen, Konfigurieren, Erweitern

Thomas Weinert


Inhaltsverzeichnis

Vorwort
1. Weaverslave?
2. Die Webseite
3. Über dieses Dokument
1. Installation
1.1. Konfiguration
1.2. Bibliothek
2. Programmoberfläche
2.1. Hauptfenster
2.2. Hauptmenü
3. Dokumentenfenster
3.1. Textdateien
3.2. Bilder
4. Toolfenster
4.1. Farben
4.2. Suchen
5. Dateiprofile
5.1. Codebrowser
5.2. HTML und XSLT
5.3. PHP
6. Tags/Snippets
6.1. Verwendung
6.2. Konfiguration
7. Suchen und Ersetzen
8. Debuggerintegration
8.1. Xdebug
8.2. Aktivierung
8.3. Breakpoints
8.4. Debugsessions
9. Scripting
9.1. Objekt "application"
9.2. Objekt "document"
9.3. Objekt "search"
10. Plugins
10.1. Installation
10.2. Programmierung
A. Tastenkürzel
Glossar

Abbildungsverzeichnis

2.1. Der Weaverslave beim ersten Start.
3.1. Dokumenten-Taskbar
3.2. Umschaltung zwischen Dokumenten
3.3. Bearbeiten-Menü für Textdateien
3.4. Kontextmenü für Textdateien
3.5. Browserkonfiguration
3.6. Bearbeiten-Menü für Bilder
5.1. Auswahl des Dateiprofiles über Tastaturshortcuts
5.2. Codebrowser im PHP-Modus
5.3. HTML-Helper
5.4. PHP-Funktionsliste
5.5. PHP-Helper
6.1. TagButtons und TagListe als einzelne Toolfenster
6.2. Baumansicht der Tags/Snippets
6.3. Dialog zum Ändern eines Snippets
7.1. Suchfenster mit Ergebnissen
7.2. Suchdialog mit Dateierweiterungen
7.3. Kontextmenü der Treffer
8.1. Zend-Engine mit Xdebug
8.2. Aktivierte Debuggerintegration
8.3. Backtrace
9.1. Macro: MessageDialog - Hallo Welt
10.1. Optionsdialog für Plugins

Tabellenverzeichnis

8.1. Debuggersteuerung
8.2. Icons und Variablentypen
9.1. Dialogtypen von application.messageDlg
9.2. Rückgaben von application.messageDlg
9.3. Mögliche Werte von application.windowState
9.4. Scripting: Mögliche Sucheorte
A.1. Liste der fest definierten Tastenkürzel

Beispiele

9.1. Macro: Anzahl der geöffneten Dateien anzeigen
9.2. Macro: Abfragen der geöffneten Dateien
9.3. Macro: Abfragen der Datei-History
9.4. Macro: Abfragen der geänderten Dateien
9.5. Macro: Abfragen der Dateiprofile
9.6. Macro: String in aktuellen Verzeichnis suchen
9.7. Macro: Abfrage der externen Programme
9.8. Macro: Eingabedialog
9.9. Macro: MessageDialog
9.10. Macro: Hallo Welt!
9.11. Macro: Anzeige der Programmdatei

Vorwort

1. Weaverslave?

Der Weaverslave ist ein flexibler Editor für diverse Formate. Der Schwerpunkt liegt jedoch auf DHTML und PHP.

Die erste Version des Editors entstand im Oktober 1997 unter dem Namen HTMLPad. Es war ein einfacher Editor mit Funktionen zum Umwandeln von Umlauten.

Mit der Version 4 wurde das Programm umbenannt, da es 6 verschiedene Programme mit dem Namen HTMLPad gab. Es gab immer wieder Verwechslungen. Anscheinend ist dieser Name doch etwas zu naheliegend. Beim Weaverslave gibt es diese Probleme nicht - das Wort gibt es im Englischen nicht.

Weaverslave ist die wortwörtliche Übersetzung von Weberknecht.

2. Die Webseite

Die aktuelle Version des Programmes sowie weitere Informationen, Plugins und Scripte finden Sie auf http://www.weaverslave.ws. Auch ein Forum und eine FAQ sind dort zu finden.

3. Über dieses Dokument

Dieses Handbuch ist die offizielle Hilfe zum Weaverslave. Es wendet sich sowohl an Neugierige, Einsteiger als auch alteingesessende Anwender. Sie können die einzelnen Punkte direkt im Programm nachvollziehen oder einfach darin schmökern.

Es gibt das Handbuch in verschiedenen Formaten. Als eine große HTML-Datei, mehrere HTML-Dateien, als Windows-HTML-Hilfe und als PDF. Die verschiedenen Formate können von der Webseite heruntergeladen werden.

Kapitel 1. Installation

Inhaltsverzeichnis

1.1. Konfiguration
1.2. Bibliothek

Es gibt zwei Distributionen des Weaverslave. Zum einen als einfaches Zip-Archiv, zum andern ein ausführbares Setup. Beide enthalten die gleichen Dateien und bieten somit das gleiche Programm.

Das Zip-Archiv muss mit einer passenden Anwendung entpackt werden. Dabei sollten Sie unbedingt darauf achten das mit Pfadangaben entpackt wird. Nur so findet der Weaverslave danach seine Konfigurationsdateien. Im Fehlerfall wird der WS danach durchaus starten und funktionieren - nur sind die viele Funktionen nicht verfügbar, da die zugehörigen Daten fehlen.

Komfortabler ist die Installation über das Setup. Nach dem Start erscheint ein typischer Installationsassistent. Während des Setups können Sie direkt die Sprache auswählen. Hierbei ist auch eine Deinstallation verfügbar, welche neben dem Programm auch Einträge aus dem Startmenü entfernt.

1.1. Konfiguration

Am Ende der Installation wird nachgefragt, wie Sie die Konfigurationsdaten speichern möchten. Dabei werden zwei der drei Möglichkeiten zur Auswahl angeboten. Die Auswahl wird in der baseconf.ini im Installationsverzeichnis gespeichert und kann später manuell geändert werden.

Die Ini-Datei enthält nur zwei Optionen, von denen eine noch optional ist.

[Configuration]
mode=0
path=d:\weaverslave\configs\{user}\

Im Modus 0 speichert der Weaverslave die Konfiguration im Unterverzeichnis conf\. Damit bleibt der WS komplett in seinem Installationsverzeichnis. Sie können das Verzeichnis kopieren oder auf eine CD brennen. Durch den Schreibschutz auf einer CD ist es jedoch nicht mehr möglich die Konfiguration zu ändern.

Der Modus 1 bietet sich an, wenn mehrere Personen an dem Computer arbeiten. Die Konfigurationsdaten werden dann im Benutzerprofil gespeichert. Beachten Sie das bei der Deinstallation diese Daten nicht gelöscht werden.

Der Modus 2 ist für Netzwerke gedacht. Die Konfigurationsdaten werden im angegebenen (Netzwerk-)Pfad gespeichert. Der Platzhalter {user} wird durch den Loginnamen des angemeldeten Windows-Benutzers ersetzt. Dieser Modus kann nicht während der Installation ausgewählt werden, da zusätzlich der Pfad angegeben werden muss.

1.2. Bibliothek

Der Weaverslave bringt eine umfangreiche Bibliothek mit. Sie bestimmen das Verhalten des Programmes und können teilweise über Dialoge verändert werden.

~/lib/

mitgelieferte Konfigurationsdateien

color/

Windows-Farbpaletten für den Farbassistenten

html/

Daten für den TagInspektor und den HTML-Helper

lang/

Sprachdateien für das Benutzerinterface

php/

PHP-Funktionsbibliothek für PHP-Helper, Funktionsliste und Syntaxhighlighting

snippet/

Tags/Snippets, Vorlagen und Sonderzeichen

syntax/

Dateiprofile und Syntaxhiglightings

Kapitel 2. Programmoberfläche

Inhaltsverzeichnis

2.1. Hauptfenster
2.2. Hauptmenü

Die Oberfläche des Weaverslave ist im Vergleich zu anderen Programmen recht einfach gehalten. Viele Funktionen werden erst sichtbar, wenn man sie einsetzt. Dieses Kapitel soll den Grundaufbau des Programmes beschreiben. Die Details werden in nachfolgenden Kapiteln beschrieben.

2.1. Hauptfenster

Das Hauptfenster des Weaverslave besteht aus wenigen Elementen. Im oberen Bereich finden Sie das übliche Menü und die Toolbars. Eine kleine Werkzeugleisten mit wenigen Standard-Textbausteinen ist links. Eine Taskbar zum Umschalten zwischen Dokumenten ist am untern Ende des Arbeitsbereiches angedockt. Sie wird jedoch erst sichtbar, wenn man ein Dokument öffnet oder erzeugt.

Auf der rechten Seite sind die Toolfenster angedockt. Dies sind verschiedene nichtmodale Dialoge, wie sie auch aus anderen Programmen bekannt sind. Sie können die einzelnen Tabs auf das Hauptfenster ziehen um die einzelnen Tab-Seiten zu trennen. Wenn Sie einen Tab auf einen anderen ziehen, wird er dem Toolfenster hinzugefügt.

Der Weaverslave beim ersten Start.

Abbildung 2.1. Der Weaverslave beim ersten Start.

Den unteren Bereich des Hauptfensters nimmt das Browserpanel ein. Es ist nicht dockfähig, läßt sich jedoch über das Tastenkürzel STRGB ein- und ausblenden. Hier befindet sich der interne Dateibrowser, ein Bildbrowser, die kontextsensitive Quelltext-Hilfe für HTML und PHP, die CVS-Integration und der PHP-Debugger. Die Tabs für CVS und den Debugger sind nur sichtbar, wenn Sie die entsprechenden Funktionen in den Optionen aktivieren.

Die Statusleiste zeigt ganz links einen Fortschrittsbalken. Daneben befinden sich Symbole für den Status (Editierbar, Geändert). Die beiden Zahlen stehen für Zeile und Spalte des Textcursors im aktuellen Dokument. Der nächste Bereich zeigt den aktuellen Inhalt der Zwischenablage an, während ganz rechts die Quickinfo zu dem Element unter dem Mauscursor angezeigt wird.

2.2. Hauptmenü

2.2.1. Datei-Menü
2.2.2. Bearbeiten-Menü
2.2.3. Tags/Snippets
2.2.4. Extras
2.2.5. Fenster
2.2.6. Hilfe

Die Benutzeroberfläche des Weaverslave kennt acht Hauptmenüpunkte: Datei, Bearbeiten, Tags/Snippets, Extras, Plugins, Optionen, Fenster und Hilfe. Einige Befehle aud diesen Menüpunkten sind auch als Buttons in den Toolbars verfügbar.

2.2.1. Datei-Menü

Über das Menü Datei können Sie neue Dokumente erstellen, vorhandene Dateien öffnen und schließen, sowie Dokumente oder Kopien davon speichern. Je nach aktuellen Dateiprofil wird beim Speichern eine andere Endung voreingestellt. Bei geöffneten JPEGs können Sie nur eine Kopie speichern, da dies auf Grund der Technik immer einen Datenverlust beinhaltet. Bei einem geänderten Dokument können Sie über den Menüpunkt Neu Laden auf die letzte gespeicherte Version zurückgehen. Auch die Optionen zum Drucken finden sich in diesem Menü.

2.2.2. Bearbeiten-Menü

2.2.2.1. Textmodus
2.2.2.2. Bildmodus

Je nachdem, ob das aktuelle Dokument eine Textdatei oder ein Bild ist, enthält das Menü Bearbeiten andere Funktionen.

2.2.2.1. Textmodus

Im Textmodus finden sich im Bearbeiten-Menü die üblichen Funktionen zum Kopieren, Ausschneiden und Einfügen. Dazu kommen Menüpunkte zum Ein- und Ausrücken von markierten Textblöcken. Auch die DIFF-Funktion läßt sich hier aufrufen. Sie vergleicht die aktuelle Version des Dokumentes mit der gespeicherten. Sie können die aktuelle Version dann auch mit anderen geöffnenten Dokumenten oder ihren gespeicherten Versionen vergleichen. Je nach Art der Änderung werden die betreffenden Textblöcke unterschiedlich eingefärbt.

Bei Textdateien können mehrere Änderungen rückgängig gemacht und wiederhergestellt werden.

2.2.2.2. Bildmodus

Der Weaverslave öffnet Bilder parallel zu den Textdateien. Sie können mehrere Bilder und Textdateien gleichzeitig öffnen. Das Bearbeiten-Menü bieted bei Bildern Funktionen zum Ändern der Größe und der Ausrichtung. Sie können das Bild spiegeln oder mit einer kleinen Auswahl an Filtern bearbeiten.

Bei Bilddateien können Sie nur die letzte Aktion zurücknehmen.

2.2.3. Tags/Snippets

Dieses Menü wird dynamisch beim Start des Programmes erzeugt. Es enthält in mehreren Gruppen verschiedene Textbausteine und Scripte. Der Inhalt ist außerdem in den TagButtons, der TagListe und im Kontextmenü des Editierbereiches verfügbar. Sie können dieses Menü komplett an Ihre Bedürfnisse anpassen.

2.2.4. Extras

Das Menü Extras bietet ihnen den Zugriff auf verschiedene Tools des Programmes. Mit dem Codebrowser können Sie sehr schnell in den Quellcodes navigieren. Er ist dabei vom aktuellen Dateiprofil abhängig, welches Sie über dieses Menü auch auswählen können. Die Änderungen sind verschiedene vorprogrammierte Bearbeitungsaktionen. Dazu gehört beispielsweise die Umwandlung von Umlauten und das Escapen von Anführungzeichen.

Die Includes sind spezielle Anweisungen, welche als HTML-Kommentare in der Datei abgelegt werden. Sie können damit einige Funktionen dynamischer Webseiten im Editor simulieren.

2.2.5. Fenster

Das Menü Fenster ist für das Ein- und Ausblenden der verschiedenen Teile der Oberfläche zuständig. Da der Weaverslave eine MDI-Anwendung ist finden sich auch Einträge zum Anordnen der Dokumentenfenster.

2.2.6. Hilfe

Im Menü Hilfe, finden Sie Unterpunkte zum Aufruf dieser Dokumentation im HTML-Format und der Anzeige des Info-Dialoges. Weitere Punkte bieten Zugriff auf einstellbare HTML- und PHP-Dokumentationen. Die Info-Dialoge der Plugins können Sie über ein Untermenü aufrufen.

Etwas spezieller ist der Punkt Tags/Snippets. Er erzeugt eine Referenz der benutzerdefinierten Tasten- und Textkürzel für Textbausteine und Scripts als HTML-Dokument. Dieses können Sie speichern und/oder Ausdrucken.

Kapitel 3. Dokumentenfenster

Inhaltsverzeichnis

3.1. Textdateien
3.2. Bilder

Der Weaverslave ist eine MDI-Anwendung. Somit können mehrere Dokumente gleichzeitig geöffnet werden. Sie können markierte Texte per Drag and Drop von einem Dokument in ein anderes verschieben.

Alle geöffneten Dokumente werden in einer Toolbar angezeigt, welche automatisch ausgeblendet wird, wenn keine Dokumente geöffnet sind. Zur besseren Übersicht zeigt sie das Icon des Dateiprofiles an. Wie alle anderen Toolbars kann man sie an den verschiedenen Seiten des Hauptfensters andocken. Im Gegensatz zu den anderen werden die Buttons auf dieser Toolbar immer horizontal ausgerichtet.

Dokumenten-Taskbar

Abbildung 3.1. Dokumenten-Taskbar

Über die Tastenkürzel STRG-K oder STRG-L kann man sehr schnell zwischen Dokumenten wechseln. Dies funktioniert ähnlich der Programmunschaltung von Windows mit ALT-TAB. DAs Fenster bleibt geöffnet, so lange Sie STRG gedrückt halten.

Umschaltung zwischen Dokumenten

Abbildung 3.2. Umschaltung zwischen Dokumenten

3.1. Textdateien

Bei Dateien in Textformaten, öffnet der Weaverslave ein Dokumentenfenster mit einer Editorkomponente. Je nach Dateiendung wird ein Dateiprofil zugewiesen, welches das Syntaxhighlighting bestimmt. Am linken Rand werden die Zeilennummern in einem Gutter angezeigt, dessen Breite sich der Länge der Zeilenummern anpaßt. Ist der virtuelle Zeilenumbruch aktiv, werden überlange Zeilen automatisch umgebrochen. Solche automatischen Zeilenumbruche werden durch ein Icon statt der Zeilennummer dargestellt.

Bearbeiten-Menü für Textdateien

Abbildung 3.3. Bearbeiten-Menü für Textdateien

Das Menü Bearbeiten bietet die üblichen Funktionen für Textdokumente. Sie können Änderungen rückgängig machen oder wiederherstellen auch wenn Sie das Dokument bereits gespeichert haben. Es gibt Menüpunkte zum Ausschneiden, Kopieren und Einfügen von Textstücken. Das Ein- und Ausrücken funktioniert sowohl mit einer einzelne Zeile als auch mit mehreren, markierten Zeilen.

Da das Suchen und Ersetzen in einem Dialog kombiniert ist, gibt es dafür keinen seperaten Menüpunkt. Mit Suchen erreichen Sie das Toolfenster mit der Ergebnisliste und der Fokus wird auf das Eingabefeld für die einfache Textsuche gesetzt. Im Suchdialog finden Sie die erweiterten Optionen.

Über den Menüpunkt Diff anzeigen können Sie die aktuelle Version des Dokumentes im Editor mit der gespeicherten Version auf dem Datenträger vergleichen.

3.1.1. Kontextmenü

Wichtigen Funktione zum Editieren können Sie über ein Kontextmenü erreichen. Neben Auschneiden, Kopieren und Einfügen, haben Sie Zugriff auf die Snippets, können das Dateiprofil umstellen und die Vorschau anzeigen lassen. Über das Eingabefeld im Kontextmenü können Sie direkt zu einer bestimmten Zeile im Quellcode springen. Auch Menüpunkte um die letzte Aktion rückgängig zu machen oder wiederherzustellen fehlen nicht.

Kontextmenü für Textdateien

Abbildung 3.4. Kontextmenü für Textdateien

3.1.2. Interne Vorschau

Der Weaverslave kann den Microsoft Internet Explorer, aber auch die Gecko-Engine (Mozilla, Firefox, ...) für eine interne Vorschau einbetten. In der Konfiguration können Sie einstellen, welches der Controls genutzt werden soll - auch beide gleichzeitig sind möglich. Die Einstellung wirkt sich nur auf danach geöffnete Dokumentenfenster aus. Gecko registriert sich nicht autmatisch im System. Daher gibt es zwei Buttons neben der Checkbox um dies nachzuholen. Mit dem linken Button wird die Datei mozctlx.dll veranlaßt, sich im System anzumelden. Der zweite Button meldet das Control wieder ab.

Browserkonfiguration

Abbildung 3.5. Browserkonfiguration

Um Scripte in der Vorschau anzuzeigen, welche vom Webserver ausgeführt werden müssen, besitzt der Weaverslave die Möglichkeit Dateipfade in URLs zu konvertieren. Legen Sie dazu zuerst mit dem Button Hinzufügen ein neues Element an. Die Eingabefelder ändern immer die Werte zum ausgewählten Element.

Das Lokale Verzeichnis ist der Dateipfad, wie ihn der Weaverslave sieht, die URL die Adresse dieses Dateipfades im Webbrowser. Die anderen beiden Angaben spielen nur beim Debuggen eine Rolle, wenn der Webserver auf einem anderen Rechner ist.

3.2. Bilder

Eine Besonderheit des Weaverslave, ist die Möglichkeit Bildateien direkt zu öffnen. Die meisten Funktionen des Programmes sind natürlich für Textdaten, da jedoch Webseiten auch Bilder enthalten, wurden dafür einige Funktionen integriert. Wenn Sie Pixel im geöffneten Bild mit der linken M

austaste anklicken, werden die Farbe und die Koordinaten in Listen am rechten Rand des Dokumentenfensters eingefügt. Die rechte Maustaste kopiert die Farbe des Pixels direkt in die Zwischenablage. Wenn Sie dabei STRG gedrückt halten, werden die Koordinaten kopiert.

Bearbeiten-Menü für Bilder

Abbildung 3.6. Bearbeiten-Menü für Bilder

Bei JPEG und PNG-Dateien bietet der WS auch einige Funktionen im Menü Bearbeiten. Sie können das Bild skalieren, rotieren, spiegeln und einige Filter anwenden. Sie können das Bild als JPEG speichern. Da bei diesem Format jedoch bei jedem Speichern Daten verloren gehen, bietet der Weaverslave nur die Option Speichern unter.

Kapitel 4. Toolfenster

Inhaltsverzeichnis

4.1. Farben
4.2. Suchen

Die Toolfenster bieten ständigen Zugriff auf verschiedene Werkzeuge. Dazu gehören neben den Tags/Snippets auch Farben, Suchergebnisse, Sonderzeichen und anderes. Die Tabluatoren mit den einzelnen Tools lassen sich beliebig gruppieren. Ziehen Sie einen Tab auf das Hauptfenster, wird ein neues Toolfenster erzeugt. Wenn Sie einen Tab auf einen anderen Tab ziehen, wird er diesem Toolfenster hinzugefügt.

Sie können nur ganze Toolfenster mit allen Tabs ausblenden. Um einen einzelnen Tab auszublenden, müssen Sie ihn also zuerst auf das Hauptfenster ziehen um ihn in ein eigenes Toolfenster umzuwandeln.

4.1. Farben

Auf mehreren zusammenklappbaren Panels bietet dieses Toolfenster viele Optionen zum ermitteln von Faben. Am unteren Rand wird dabei immer die aktuelle Farbe angezeigt. Sie können in dem Editcontrol aber auch HTML-Codes für Farben und auch Farbnamen eingeben.

Im ersten Panel finden sie Editcontrols für die direkte Eingabe der Farbanteile. Über die Option "Nur sichere Farben" können Sie die Farben auf die 255 web-sicheren Farben einschränken (RGB-Anteile jeweils durch 51 teilbar). Das zweite Panel bietet Slider für das RGB Farbsystem, während Sie im dritten Panel die Slider für das HSL-Farbsystem finden. Dabei zeigen die Slider immer an, wie sich die Farbe verändern wird, wenn Sie den Slider bewegen. Der Farbkreis auf dem vierten Panel funktioniert ebendso. Im fünften Panel können Sie Windows-Farbpalletten (*.pal) laden.

4.2. Suchen

Im Toolfenster Suchen werden die Treffer einer Suche nach Dateien gruppiert angezeigt. Der Weaverslave paßt die Trefferliste automatisch den Textänderungen an. Sie können Sie jedoch auch selbst verändern, in dem Sie Treffer entfernen oder ersetzen. Genauer Informationen über das Suchen und Ersetzen finden Sie in einem seperaten Kapitel.

Kapitel 5. Dateiprofile

Inhaltsverzeichnis

5.1. Codebrowser
5.2. HTML und XSLT
5.3. PHP

Über die Dateiprofile werden verschiedenen dateiformatabhängige Funktionen im Weaverslave konfiguriert. Der offensichtlichste Bestandteil sind die Syntaxhighlightings. Sie enthalten jedoch auch andere Daten, wie z.B. die Speichern-Maske, Reguläre Ausdrücke für den Codebrowser und diverse Optionen.

Die Dateiprofile bringen auch Icons mit, welche sowohl im Weaverslave, als auch im System genutzt werden. So zeigt die Dokumentenleiste vor dem eigentlichen Dateinamen ein kleines Icon an. Die etwas größeren Versionen der Icons werden für die Umschaltung zwischen Dateiprofile und Dokumenten genutzt. Halten Sie dazu die Taste STRG und drücken Sie H oder J um das Dateiprofil auszuwählen. Erst, wenn Sie STRG loslassen, schaltet der Weaverslave um. Auf die gleiche Weise funktioniert die Umschaltung zwischen den geöffneten Dokumenten. Hier kommen die Tasten K und L zum Einsatz.

Auswahl des Dateiprofiles über Tastaturshortcuts

Abbildung 5.1. Auswahl des Dateiprofiles über Tastaturshortcuts

5.1. Codebrowser

Jedes Dateiprofil kann eine individuelle Konfiguration für den Codebrowser mitbringen. Dies sind spezialisierte Reguläre Ausdrücke, welche genutzt werden um besondere Stellen im Quellcode des aktuellen Dokumentes zu ermitteln und in einer Liste darzustellen. Bei PHP-Dateien sind dies beispielsweise Funktions- und Klassendeklarationen.

Codebrowser im PHP-Modus

Abbildung 5.2. Codebrowser im PHP-Modus

Die Liste zeigt Ihnen den Titel, den Typ, die Zeile und die Zeichenposition des Treffers an. Über einen Klick auf den Spaltenkopf können Sie die Sortierung ändern.

Wenn Sie Eingaben machen, werden automatisch nur noch jene Treffer angezeigt, welche den eingegebenen String enthalten. Über die Checkboxen an der rechten Seite können Sie bestimmen, welche Treffertypen angezeigt.

5.2. HTML und XSLT

5.2.1. TagCompletion
5.2.2. TagInspektor
5.2.3. Helper

Einige Funktionen sind nur in den Dateiprofilen HTML und XSLT aktiv.

5.2.1. TagCompletion

Die TagCompletion ergänzt bei der Eingabe des Anfangstags automatisch das schließende Gegenstück. Leere Tags, wie z.B. <br>, werden je nach Konfiguration belassen oder zu <br /> ergänzt.

Der WS prüft zuerst den vorstehenden Text um den Tag zu ermitteln. Die Analyse des folgenden Textes ist in 3 Stufen konfigurierbar. Bei der Einstellung agressiv erfolgt gar keine Analyse und der WS ergänzt den schließen Tag immer. In der Einstellung sanft schaut der Editor nach dem nächsten Tag mit dem gleichen Tag-Namen. Ist dies der zugehörige schließende Tag wird nicht vervollständigt. Währende bei sanft auch Tags übergangen werden, sucht der WS in der mittleren Einstellung nur bis zum nächsten Tag.

Durch die Analyse kommt der WS auch mit unbekannten Tags zu recht. Eine Liste der leeren Tags können Sie in den Optionen eingeben.

5.2.2. TagInspektor

Der TagInspektor stellt die Attribute des aktuellen HTML-Tags in einer Liste dar. Je nach Art Attributes ist die direkte Eingabe, die Auswahl aus einer DropDown-Liste oder der Aufruf eines Dialoges möglich. Über einen Button in der Toolbar kann man den TagInspektor schnell (de)aktivieren.

5.2.3. Helper

Der HTML-Helper zeigt Informationen zum ausgewählten HTML-Tag. Dabei ist er direkt an den TagInspektor gekoppelt. Wenn der TagInspektor deaktiviert wird, sind auch keine Daten für den Helper mehr verfügbar.

HTML-Helper

Abbildung 5.3. HTML-Helper

Neben einem kurzen Text zu dem Tag zeigt der Helper auch die Attribute - die wichtigeren davon fett. Als kleines Gimmik zeigt er noch den passenden englischen Begriff an. Dies hilft beim Einprägen der verschiedenen HTML-Tags.

Wenn sich der Textcursor auf einem HTML-Tag befindet, blendet F1 den Helper ein.

5.3. PHP

Neben HTML hat sich vor allem PHP zum zweiten Schwerpunkt des Weaverslave entwickelt. Das Programm bringt eine umfangreiche Bibliothek mit, welche in Form von XML-Dateien im Verzeichnis ~/lib/php/ liegt. Die Bibliothek basiert auf einem Quellcode-Scan des PHP-Quellcodes und des Manuals und enthält so auch konkrete Versionsinformationen.

Unter Optionen->Allgemein->PHP können Sie die PHP-Version und die installierten Module auswählen. Einfacher geht es über den Button phpinfo(). Nach der Eingabe einer URL zu einer phpinfo()-Datei, parst der WS die HTML-Ausgabe um die nötigen Daten zu ermitteln.

5.3.1. Syntaxhighlighting

Das Syntaxhighlighting des Weaverslave ist an die genutzte PHP-Version anpaßbar. Der Weaverslave teilt die Funktionen in verfügbar und nicht verfügbar auf. Im Standardhighlighting werden verfügbare Funktionen blau und nicht verfügbare Funktionen rot und kursiv dargestellt. Diese Formatierungen können Sie natürlich nach Bedarf ändern.

5.3.2. Funktionsliste

Über die PHP-Funktionsliste haben Sie Zugriff auf die Standard-PHP-Funktionen. Auch hier werden die angegebenen Versions- und Moduleinformationen genutzt.

PHP-Funktionsliste

Abbildung 5.4. PHP-Funktionsliste

PHP besitzt aktuell über 3000 Funktionsnamen. Sie alle in der Liste darzustellen, wäre der Geschwindigkeit nicht zuträglich. Daher müssen Sie mindestens den Anfangsbuchstaben eingeben. Bei weiterer Eingabe werden nur noch Funktionen angezeigt, welche mit diesem Text beginnen. Das Icon vor dem Eintrag wird grau dargestellt, wenn die Funktion nicht in der eingestellten PHP-Version verfügbar ist. Bei Aliasen wird als Icon ein gebogener Pfeil genutzt und unter der Liste die zugehörige Funktion angezeigt.

Über die Buttons am oberen Rand können Sie den Funktionsnamen in die Zwischenablage kopieren oder daraus Einfügen. Ein DropDown-Button bietet Zugriff auf Helper und Dokumentions-Webseiten. Der lettze Button übernimmt den ausgewählten Funktionsnamen als Breakpoint in den Debugger.

5.3.3. Helper

Ähnlich wie im HTML-Dateiprofil, ist auch für PHP ein Helper verfügbar. Er zeigt Informationen zur aktuellen PHP-Funktion. Bei einem Alias werden die Informationen der zugehörigen Funktion geladen.

PHP-Helper

Abbildung 5.5. PHP-Helper

Im Kopf zeigt der Helper den Funktionsnamen und die Extension an. Der Funktionsname ist mit dem Manual verlinkt. Es wird dabei die erste URL aus dem DropDown-Menü der Funktionsliste aufgerufen.

Die Funktionsdeklaration wird für PHP 4 und 5 seperat angezeigt wenn sie unterschiedlich ist. Die Kurzbeschreibung stammt aus dem PHP-Manual. Bevorzugt wird hier die im Weaverslave für die Oberfläche ausgewählte Sprache genutzt. Sollte diese nicht verfügbar sein, wird die englische Version verwendet.

In zwei Tabellen wird angezeigt, in welchen PHP-Versionen die Funktion enthalten ist. Die eingestellte Version wird fett dargestellt.

Kapitel 6. Tags/Snippets

Inhaltsverzeichnis

6.1. Verwendung
6.2. Konfiguration

Die Tag/Snippets bieten in verschiedenen Gruppen Zugriff auf verschiedene Textbausteine. Der größte Teil davon sind in der Standardkonfiguration HTMLTags. Neben einfachen Texten können auch externe Dateien und Scripte eingebunden werden. Die Tags/Snippets sind über einen Dialog (Optionen->Tags/Snippets) konfigurierbar.

6.1. Verwendung

Es gibt im Weaverslave mehrere Wege auf die Tags/Snippets zuzugreifen. Welchen Sie nutzen bleibt Ihrer persönlichen Vorliebe überlassen.

6.1.1. Über das Menü

Alle Tags/Snippets werden in einer Menüstruktur abgelegt. Sie haben sowohl über das Hauptmenü, als auch über das Kontextmenü des Editbereiches darauf Zugriff. Wenn Sie sich mit der Maus über einem Snippet befinden, wird die Beschreibung im rechten Bereich der Statuszeile anzeigt. Die Gruppen und die Snippets werden mit Kürzeln von (A-Z und 0-9) versehen.

6.1.2. TagButtons und TagListe

Nach dem ersten Start des Weaverslave, finden sich im rechten Bereich des Hauptfensters einige angedockt Toolfenster. Zwei davon - TagButtons und TagListe bieten Zugriff auf die Tags/Snippets. Ihr Inhalt ist identisch. Welche der beiden Möglichkeiten man nutzt, ist also Geschmackssache. Den anderen Tab können Sie auf das Haupfenster ziehen. Dadurch wird er zu einem einzelnen Fenster, welches Sie ausblenden können.

TagButtons und TagListe als einzelne Toolfenster

Abbildung 6.1. TagButtons und TagListe als einzelne Toolfenster

6.1.3. Kürzel

Im Weaverslave stehen n Tastenkürzel für Tags/Snippets zur Verfügung. Somit kann man häufig genutzte Tags/Snippets sehr schnell aufrufen.

Eine weitere Möglichkeit sind Textkürzel. Dazu geben Sie ein Wort in den Editor ein wie z.B. css. Die Tastenkombination STRG-M ersetzt dieses Wort dann durch das zugehörige Snippet - wie die Einbindung einer externen CSS-Datei.

Im Menü Hilfe finden Sie einen Punkt Tags/Snippets, welcher eine HTML-Datei mit den aktuell definierten Kürzeln erzeugt.

6.2. Konfiguration

Die Tags/Snippets können sie über den entsprechenden Menüpunkt in den Optionen konfigurieren. Die verschiedenen Snippets werden in einer Baumansicht dargestellt. Um die Reihenfolge der Tags/Snippets zu ändern, nutzen Sie einfach Drag and Drop. An der rechten Seite finden Sie Buttons zum Neuanlegen, Editieren oder Löschen. Dabei können Sie nur leere Gruppen löschen.

Baumansicht der Tags/Snippets

Abbildung 6.2. Baumansicht der Tags/Snippets

Der Dialog zum Bearbeiten eines Tags/Snippets, besitzt drei Seiten. Auf der ersten Seite, stellen Sie die allgemeinen Optionen ein. Neben dem Namen können Sie hier den Typ des Snippets bestimmen. Im einfachsten Fall nutzen sie ein internes Snippet und geben auf der zweiten Seite zwei Texte an. Der erste Text wird später vor der aktuellen Markierung - der zweite Teil danach eingefügt. Der Textcursor wird vor den zweiten Teil gesetzt. Ein externes Snippet ist eine Referenz auf eine Datei, welche dein einzufügenden Text enthält. Der String ##split## wird dabei als Trenner erkannt. Der dritte Typ sind Skripte mit welchen Sie den Weaverslave funktionell erweitern können. Zu den Skripten finden Sie ein eigenes Kapitel in dieser Dokumentation.

Dialog zum Ändern eines Snippets

Abbildung 6.3. Dialog zum Ändern eines Snippets

Außerdem können Sie ein Text- und ein Tastaturkürzel angeben. Das Textkürzel ist ein kurzes Wort, welche später im Editor durch das Snippet ersetzt wird, wenn Sie STRG-M drücken. Ein Tastaturkürzel ruft das Snippet direkt auf. Die Tastaturkürzel können Sie aus der DropDown-Box auswählen, wobei die verschiedenen Farben der Rechtecke den Status des Kürzels symbolisieren. Freie Tastaturkürzel sind dunkelgrün, verwendete Kürzel hellgrün. Konflikte werden mit einem roten Rechteck dargestellt.

Die dritte Seite des Dialoges dient der Lokalisierung. Sie können hier, in verschiedenen Sprachen, Titel und Beschreibungen für das Snippet bereitstellen. Je nach aktueller Sprache des Editors werden die entsprechenden Texte als Aufschriften für Menüpunkte und Buttons, sowie für die Quickinfos und Hints genutzt.

Kapitel 7. Suchen und Ersetzen

Das Suchen und Ersetzen ist im Weaverslave etwas ungewöhnlich gelöst, bietet jedoch nach kurzer Einarbeitungszeit sehr viele Möglichkeiten. Die Suchfunktion besteht aus zwei Teilen. Einem Toolfenster, welches Sie frei positionieren können und einem Dialog für die erweiterte Eingabe.

Suchfenster mit Ergebnissen

Abbildung 7.1. Suchfenster mit Ergebnissen

Im Toolfenster kann man direkt im aktuellen Dokument nach einem bestimmten Text suchen. Dabei wird automatisch das nächste Ergebnis nach der aktuellen Textcursorposition markiert. Zusätzlich werden alle Ergebnisse in einer Liste angezeigt. Vor jedem Treffer steht die Zeichenposition dieser Textstelle. Außerdem wird jeweil der Text vor und nach dem eigentlichen Treffer mit angezeigt. Über den eigentlichen Treffern wird der Dateiname und die Anzahl der Treffer in dieser Datei angezeigt.

Mit einem Doppelklick auf einen Treffer können Sie diesen im Qelltext markieren. Die Ergebnisliste paßt sich dabei automatisch an Textänderungen an. Editieren Sie innerhalb eines Treffers wird dieser entfernt. Bei den anderen Treffern wird die Zeichenposition angepaßt. Mittels <F3> kann man zum nächsten Suchergebnis nach der aktuellen Position des Textcursors springen.

Am unteren Ende des Toolfensters findet sich eine Statusleiste. Sie zeigt die durchsuchten Dateien, die Anzahl der Treffer und die Anzahl der ersetzten Textstellen an.

Suchdialog mit Dateierweiterungen

Abbildung 7.2. Suchdialog mit Dateierweiterungen

Der erste Button am oberen Ende des Toolfensters ruft den Dialog zum Suchen und Ersetzen auf. Über die Tabs können Sie festlegen, ob Sie eine einzeilige oder eine mehrzeilige Sucheingabe machen wollen. Bei der einzeiligen Eingabe können Sie die üblichen Optionen aktivieren. Die regulären Ausdrücke des Weaverslave entsprechen dabei weitesgehend PCRE (Perl Compatible Regular Expressions - Perl kompatible reguläre Ausdrücke). Einige der erweiterten Funktionen, wie optionale Subpatterns, werden nicht unterstützt.

Im nächsten Eingabefeld können Sie den Text eingeben, welcher beim Ersetzen verwendet werden soll. Wenn Sie hier "Regulärer Ausdruck" aktivieren, können Sie $0 als Platzhalter für den Gesamttreffer nutzen. $1, $2, usw sind Platzhalter für die entsprechenden Gruppen aus dem Treffer.

Darunter können Sie angeben, wo das Programm suchen soll. Sie können mit der gleichen Funktion im aktuellen Dokument, in allen geöffneten Dokumenten oder in ganzen Verzeichnisbäumen suchen. Das Aktuelle Verzeichnis ist das Verzeichnis des internen Dateibrowsers.

Wenn Sie ein Verzeichnis auswählen, können Sie zusätzlich einen Dateifilter festlegen. Dies kann durch eine direkte Eingabe des Filters geschehen oder in dem Sie den rechten Bereich aufklappen und Dateiendungen auswählen.

Der Button Ersetzen ist etwas abgeteilt. Sie können ihn ignorieren, da er nicht unbedingt notwendig ist. Mit dem Button Suchen lösen Sie den Suchvorgang aus. Der Suchdialog wird geschlossen und die Treffer in der Ergebnisliste dargestellt. Die Treffer sind nach den Dateien gruppiert und nur die Gruppe des aktuellen Dokumentes wird direkt geöffnet. Die Gruppen können Sie mit einem Klick auf den Dateinamen auf- und zuklappen.

Über das Kontextmenu und die Toolbar können Sie die einzelnen Treffer prüfen, ersetzen oder aus der Ergebnisliste entfernen.

Kontextmenü der Treffer

Abbildung 7.3. Kontextmenü der Treffer

Die Ergebnisliste wird dabei automatisch an Textänderungen angepaßt. Somit können Sie die Ergebnisse prüfen und bearbeiten, bevor Sie über das DropDown des Ersetzen-Buttons im Toolbar das eigentliche Ersetzen für eine Datei oder alle Treffer auslösen.

Kapitel 8. Debuggerintegration

Inhaltsverzeichnis

8.1. Xdebug
8.2. Aktivierung
8.3. Breakpoints
8.4. Debugsessions

8.1. Xdebug

Durch die Integration des PHP-Debuggers Xdebug ist es möglich, PHP-Script interaktiv im Weaverslave zu debuggen. Der Debugger wird dabei auf einer Seite im Browserpanel angezeigt. Xdebug wird auf dem Webserver installiert. Der Weaverslave kann sowohl ein lokalen Webserver, als auch Entwicklungsserver im Netzwerk nutzen. Allerdings muss der WS in der Lage sein über das Dateisystem auf die Scripte zuzugreifen.

Xdebug kommuniziert über TCP/IP mit dem Weaverslave. Der Port kann verändert werden, muss aber natürlich sowohl in Xdebug wie im WS identisch sein. Der WS enthält einen TCP-Server, auf welchen Xdebug beim Starten des Scriptes verbindet. Die Verbindung bleibt bestehen, so lange das Script läuft. Wird die Verbindung geschlossen, beendet der Weaverslave automatisch auch die zugehörige Debugsession.

8.1.1. Installation

8.1.1.1. Windows
8.1.1.2. PECL
8.1.1.3. Source

Xdebug ist eine Erweiterung für die Zend-Engine, sie verhält sich daher etwas anders als eine normale PHP-Extension. Zend-Extensions sind grundsätzlich auch PHP-Extensions müssen jedoch anders installiert werden. Werden sie als normale PHP-Extensions installiert, funktionieren Sie nur teilweise oder gar nicht.

Es gibt vielfach Inkompatibilitäten zwischen verschiedenen Zend-Extensions. So funktioniert Xdebug nicht zusammen mit dem Zend-Optimizer. Praktisch hat dies jedoch keine Auswirkungen, da es wenig Sinn macht, einen Debugger zusammen mit Optimierern oder ByteCode-Caches einzusetzen.

8.1.1.1. Windows

Der einfachste Weg Xdebug unter Windows zu installieren, ist die Verwendung eines vorkompilierten Modules. Kopieren Sie die DLL in ein Verzeichnis auf der Festplatte. Empfehlenswert ist ein Unterverzeichnis der PHP-Installation. Danach fügen Sie folgende Zeile zur php.ini hinzu:

zend_extension_ts="c:/php/modules/xdebug.dll"

Nutzen Sie unbedingt einen absoluten Pfad inklusive der Laufwerksangabe. PHP wird sonst nicht in der Lage sein, die Erweiterung zu finden.

8.1.1.2. PECL

Xdebug ist auch über PECL verfügbar. Hiermit funktioniert die Installation wohl am einfachsten. Die folgene Zeile veranlaßt den PEAR-Installer das passende Xdebug zu installieren.

pear install xdebug

Danach muss allerdings noch manuell die php.ini ergänzt werden.

zend_extension="/usr/local/php/modules/xdebug.so"

Beachten Sie hierbei, das der Befehl zum Laden von Zend-Extensions anders ist, wenn PHP threadsafe compiliert wurde. In diesem Fall müssen Sie zend_extension_ts nutzen.

8.1.1.3. Source

Informationen zum Downloaden und Kompilieren des Quellcodes erhalten Sie unter http://www.xdebug.org/install.php.

8.1.2. Konfiguration

Nach der Installation sollten Sie über phpinfo() prüfen, ob Sie erfolgreich war. Neben einem eigenen Abschnitt muss Xdebug auch im Kasten mit den Informationen zur Zend-Engine aufgeführt sein. Finden Sie nur den seperaten Abschnitt Xdebug, haben Sie den Debugger wohl nur als normale PHP-Extension installiert.

Zend-Engine mit Xdebug

Abbildung 8.1. Zend-Engine mit Xdebug

Um Xdebug zu verwenden benötigen Sie nicht unbedingt den Weaverslave. Auch ohne die Integration erweitert Xdebug Fehlermeldungen im Browser und ergänzt PHP um einen Rekursionsschutz. Damit Xdebug sich mit dem Weaverslave verbindet, müssen Sie das Remote Debugging aktivieren. Fügen Sie die folgenden Zeilen in Ihre php.ini ein.

xdebug.remote_enable=on
xdebug.remote_mode=req
xdebug.remote_handler=gdb
xdebug.remote_host=localhost
xdebug.remote_port=17869

;nur Xdebug 2
xdebug.extended_info=1  

Nicht alle diese Angaben sind zwingend erforderlich, da bei einigen auch die Standardwerte funktionieren. Sie können außerdem jede dieser PHP-Optionen auch einer .htaccess ändern.

Die wichtigste Option ist remote_enable, da Sie damit die Verbindung aktivieren. Der remote_mode muss req sein, damit das debuggen bereits beim Start des Script-Requests aktiviert wird. Aktuell nutzt der Weaverslave den remote_handler gdb, wobei jedoch eine Umstellung auf das neuere Protokoll DGBp geplant ist.

Die Angaben zum remote_host und remote_port definieren die Verbindung zum Weaverslave. Wenn sich das PHP auf einem anderen Rechner als der Weaverslave befindet, müssen Sie die IP des Rechners mit dem WS angeben. Der Port 17869 entspricht der Standardeinstellung, sowohl im Editor, wie auch in Xdebug.

8.2. Aktivierung

Nachdem Sie Xdebug auf dem Webserver installiert und konfiguriert haben, müssen Sie noch die Integration im Weaverslave konfigurieren. Unter Optionen->Allgemein->PHP finden Sie eine Checkbox zum Aktivieren der Integration. Falls Sie den Port geändert haben können Sie diesen hier ebenfalls anpassen. Nach der Aktivierung wird dem Browserpanel eine neue Seite hinzugefügt.

Aktivierte Debuggerintegration

Abbildung 8.2. Aktivierte Debuggerintegration

Im oberen Bereich der Seite befindet sich eine Toolbar mit den verschiedenen Aktionen zum steuern des Debuggers. Der letzte Button (ganz rechts) aktviert das debuggen im Weaverslave. Nur wenn er gedrückt ist, wartet das Programm auf Verbindungsanforderungen von Xdebug. So lange keine Verbindung zum Debugger besteht, können Sie nur Breakpoints hinzufügen.

8.3. Breakpoints

Sie können im Weaverslave Breakpoints setzen, in dem Sie die Zeilennummer im Gutter anklicken. Damit wird der Breakpoint auf den Dateinamen und die Zeile gesetzt. Außerdem ist es möglich Breakpoints auf Funktionsnamen zu setzen. Wenn Sie den dritten Button von rechts anklicken, öffnet sich ein Dialog. Geben Sie den Namen einer PHP-Funktion oder einer selbstdefinierten Funktion ein.

Breakpoints werden automatisch an alle aktiven und neu geöffneten Debugsessions übermittelt. Ist der Webserver auf einem anderen Rechner, werden die Pfade umgewandelt.

8.4. Debugsessions

8.4.1. Steuerung
8.4.2. Backtrace
8.4.3. Variablen
8.4.4. Protokoll
8.4.5. Remote Debugging

Wenn Sie bereits Debugger in anderen Programmierumgebungen genutzt haben, werden Sie dort explizit das Programm in einer Debugsession gestartet haben. Mit dem Beenden des Programmes würde auch die Debugsession beendet und man kann wieder im Editieren.

Der Weaverslave nutzt ein etwas anderes Konzept. Um eine Debugsession zu starten, rufen Sie die Seite wie gewohnt im Browser auf. Bei Xdebug 2 müssen Sie derzeit den Parameter XDEBUG_SESSION_START=default an die URL anhängen. Xdebug setzt daraufhin einen Cookie im Browser, welches für eine Stunde gültig ist.

Xdebug verbindet daraufhin zum Weaverslave, erhält die Breakpoints und die Bestätigung zum Starten des Scriptes. Beim ersten Breakpoint oder im Fehlerfall stopp Xdebug das Script und meldet die aktuelle Position an den Editor. Dieser erfragt dann den Backtrace und die aktuellen Variablen.

Es können mehrere Debugsessions gleichzeitig aktiv sein. Sie können dann im Weaverslave über den ersten Button von Links die Debugsession auswählen, welche Sie kontrollieren möchten.

Diese strikte Trennung ermöglicht eine deutliche höhere Flexibilität beim debuggen. Framesets und komplexe Formulare mit Javascript sind kein Problem, da die Ausgabe wie gewohnt im Browser angezeigt wird. Für den Weaverslave ist es egal, ob Sie eine Webapplikation, ein Shellscript oder eine PHP-GTK-Anwendung debuggen.

8.4.1. Steuerung

Über die Buttons am oberen Rand, können Sie die weitere Abarbeitung des Scriptes in der aktiven Debugsession steuern. Die Funktionen sind außerdem als Untermenü von Extras erreichbar.

SymbolTitel
Ausführen
Nächste
Step in
Step out
Sitzung abschließen
Sitzung abbrechen

Tabelle 8.1. Debuggersteuerung

Mit Ausführen können Sie das Script bis zum nächsten Breakpoint, Fehler oder dem Scriptende weiterlaufen lassen. Der Button Nächste führt nur die nächste Zeile aus. Mit Step in können Sie in die nächste Anweisung hineinspringen, wenn dies ein Aufruf einer selbsdefinierten Funktion ist. Step out führt die aktuelle Funktion bis zum Ende aus.

Mit Sitzung abschließen wird nur die Verbindung zu Xdebug geschlossen, das Script wird normal zu Ende abgearbeitet. Um das Script abzubrechen und die Debugsession zu schließen, nutzen Sie Sitzung abbrechen.

8.4.2. Backtrace

Der Backtrace zeigt Ihnen die Funktionsaufrufe bis zur aktuellen Position in einer Liste. Über einen Doppelklick können sich die betreffende Stelle im Quelltext anzeigen lassen.

Backtrace

Abbildung 8.3. Backtrace

Der Weaverslave zeigt den Funktionsnamen auf dem Webserver an, erst wenn es notwendig wird, konvertiert das Programm den Dateinamen.

8.4.3. Variablen

Diese Seite zeigt ihnen in einer Baumansicht die Variablen an welche im aktuellen Namensraum des Scriptes zur Verfügung stehen. Dazu gehören auch die superglobalen Arrays. Je nach Variablentyp wird ein anderes Icon verwendet. Rechts neben dem Baum, werden die Details der ausgewählten Variable dargestellt.

IconVariablentypen
array
boolean
float, double, real
integer
object
resource id
string
NULL, undefiniert

Tabelle 8.2. Icons und Variablentypen

Eine Ausnahme stellen Breakpoints auf PHP-Funktionsnamen dar. Hier sind keine Variablen verfügbar, da man sich nicht im Namensraum des PHP-Scriptes befindet.

8.4.4. Protokoll

Das Protokoll zeigt die Kommunkation zwischen Xdebug und dem Weaverslave. Ein leeres Protokoll deutet auf eine unvollständige oder fehlerhafte Installation von Xdebug hin. Außerdem kann die Kommunikation durch eine Firewall gestört sein.

8.4.5. Remote Debugging

Weaverslave und Xdebug müssen nicht auf dem gleichen Rechner installiert sein. So kann der Webserver mit PHP und Xdebug durchaus ein Linux-Server im Netzwerk sein. Der Weaverslave muss allerdings in der Lage sein, über das Dateisystem auf die Scripte zuzugreifen - beispielsweise auf ein Samba-Share.

Xdebug nutzt das Dateisystem des Rechners auf dem es sich befindet, wie es auch bei PHP-Scripten der Fall ist. Da diese Pfade nicht mit den Pfaden im Weaverslave identisch sind, müssen sie umgewandelt werden. Auch können auf zwei verschiedenen Rechnern die gleichen Pfade exisitieren. Bei der Konfiguration für die Vorschau müssen Sie daher den Server-Pfad und die IP des Rechners angeben.

Kapitel 9. Scripting

Der Weaverslave besitzt ein Interface zum Windows Scripting Host. Dies ermöglich Ihnen eigene Macros für den Weaverslave zu schreiben. Für die Script können Sie jede Spache nutzen, die sich in den Windows Scripting Host integrieren läßt. Neben VBScript und JScript sind dies beispielsweise PHPScript und ActivePerl.

Die Scripts sind einzelne Dateien und werden als Snippets in den Weaverslave installiert. Damit sind sie an verschiedenen Stellen im Programm verfügbar. Sie können auch Tastenkürzel für Scripte definieren.

Für die Scripts stellt der Weaverslave drei Objekte zur Verfügung, mit denen Sie auf Funktionen und Werte im Programm zugreifen können.

Die folgenden Beispiele sind JScript-Quellcode, da diese Scriptsprache standardmäßig im Windows Scripting Host verfügbar ist. Sie stammen aus der umfangreichen Dokumentation von Felix Neumann.

9.1. Objekt "application"

9.1.1. createDocument
9.1.2. openDocument
9.1.3. fileCount
9.1.4. files
9.1.5. filesHistory
9.1.6. filesModified
9.1.7. fileProfiles
9.1.8. currentDirectory
9.1.9. projectDirectory
9.1.10. browsers
9.1.11. inputDlg
9.1.12. messageDlg
9.1.13. showMessage
9.1.14. editorLanguage
9.1.15. editorName
9.1.16. editorVersion
9.1.17. exeName
9.1.18. scriptFile
9.1.19. username
9.1.20. document
9.1.21. search
9.1.22. handle
9.1.23. height
9.1.24. left
9.1.25. top
9.1.26. width
9.1.27. windowState

9.1.1. createDocument

boolean createDocument([string extension]);

Erzeugt ein neues Dokumentenfenster. Wird eine Dateierweiterung übergeben, sucht der Weaverslave nach einem zugehörigen Dateiprofil und aktiviert dieses.

9.1.2. openDocument

boolean openDocument(string filename);

Öffnet die angegebene Datei im Editor. Wenn die Datei bereits geöffnet war, wird das Dokument in den Vordergrund geholt.

9.1.3. fileCount

integer fileCount();

Gibt die Anzahl der geöffneten Dateien zurück.

Beispiel 9.1. Macro: Anzahl der geöffneten Dateien anzeigen

i = application.fileCount();
application.showMessage(i);

9.1.4. files

string files();

Gibt alle derzeit geöffneten Dateien zurück. Die Angaben sind durch Kommas voneinander getrennt. Ist in dem Pfad ein Leerzeichen enthalten, wird die Angabe von zwei Anführungszeichen umschlossen.

Beispiel 9.2. Macro: Abfragen der geöffneten Dateien

s = application.files();
a = s.split(",");
for(x = 0; x < a.length; x++) {
  application.ShowMessage(a[x]);
}

9.1.5. filesHistory

string filesHistory();

Gibt die 20 zuletzt geöffneten Dateien zurück. Die Angaben sind durch Kommas voneinander getrennt. Ist in dem Pfad ein Leerzeichen enthalten, wird die Angabe von zwei Anführungszeichen umschlossen.

Beispiel 9.3. Macro: Abfragen der Datei-History

s = application.filesHistory();
a = s.split(",");
for(x = 0; x < a.length; x++) {
  application.ShowMessage(a[x]);
}

9.1.6. filesModified

string filesModfied();

Gibt die geöffneten Dateien zurück, welche geändert wurden. Die Angaben sind durch Kommas voneinander getrennt. Ist in dem Pfad ein Leerzeichen enthalten, wird die Angabe von zwei Anführungszeichen umschlossen.

Beispiel 9.4. Macro: Abfragen der geänderten Dateien

s = application.filesModfied();
a = s.split(",");
for(x = 0; x < a.length; x++) {
  application.ShowMessage(a[x]);
}

9.1.7. fileProfiles

string fileProfiles();

Gibt die Titel der aktiven Dateiprofile zurück. Die Angaben sind durch Kommas voneinander getrennt. Ist in dem Pfad ein Leerzeichen enthalten, wird die Angabe von zwei Anführungszeichen umschlossen.

Beispiel 9.5. Macro: Abfragen der Dateiprofile

s = application.fileProfiles();
a = s.split(",");
for(x = 0; x < a.length; x++) {
  application.ShowMessage(a[x]);
}

9.1.8. currentDirectory

string currentDirectory();

Gibt das Verzeichnis zurück, das derzeit im Dateibrowser des Weaverslave angezeigt wird. Die Rückgabe erfolgt ohne abschließenden Schrägstrich.

Beispiel 9.6. Macro: String in aktuellen Verzeichnis suchen

title = "Angezeigtes Verzeichnis durchsuchen";
caption = "Suche nach:";
where = application.currentDirectory;

str = application.inputDlg(title, caption, "");
if(str != "")
  application.search.search(str, 2, where);

9.1.9. projectDirectory

string projectDirectory();

Diese Funktion gibt momentan das Verzeichnis des aktuellen Dokumentes zurück.

9.1.10. browsers

string browsers();

Liefert eine String mit den externe Programmen. Die Angaben sind durch Kommas voneinander getrenntund von zwei " umschlossen. Jede Angabe besteht aus Title und Dateiname, die durch ein = verbunden sind.

Beispiel 9.7. Macro: Abfrage der externen Programme

s = application.browsers();
programs = s.split(",");
for(i = 0; i < a.length; i++) {
  program = programs[x].split("=");
  application.showMessage(program[0]+" -> "+program[1]);
}

9.1.11. inputDlg

string inputDlg(string caption, string prompt, string default);

Zeigt einen Eingabedialog an. Der Titel des Fensters ist caption, der Text, der den Benutzer zur Eingabe auffordern soll, wird in prompt angegeben, und der Vorgabewert kann mit default eingestellt werden. Der eingegebene Wert wird dann zurückgegeben.

Beispiel 9.8. Macro: Eingabedialog

title = "Ihr Name";
caption = "Wie lautet Ihr Name?";

s = application.inputDlg(title, caption, '');
if(s != "") {
  application.showMessage("Hallo, " + s + "!");
} else {
  application.showMessage("Hallo!");
}

9.1.12. messageDlg

integer messageDlg(integer dlgType, string msg);

Zeigt einen Nachrichtendialog mit verschiedenen Buttons und Icons an. Die Id des angeklickten Buttons wird zurückgegeben. Die Aufschriften der Buttons werden in die Sprache der Programmoberfläche übersetzt.

Dialog-IdentifierButtonsIcon
0OK 
1OK, Cancel 
3Yes, No, Cancel 
4Yes, No 
5Cancel, Retry 
16OKError
17OK, CancelError
32OKQuestion
33OK, CancelQuestion
48OKWarning
49OK, CancelWarning
64OKInformation
65OK, CancelInformation

Tabelle 9.1. Dialogtypen von application.messageDlg

RückgabeButton Id
1OK
2Cancel
4Retry
6Yes
7No

Tabelle 9.2. Rückgaben von application.messageDlg

Beispiel 9.9. Macro: MessageDialog

btn = application.messageDlg(65, 'Hallo Welt!');

if (btn = 1) {
  application.MessageDlg(64, 'Ok');
} else {
  application.MessageDlg(64, 'Cancel');
}
Macro: MessageDialog - Hallo Welt

Abbildung 9.1. Macro: MessageDialog - Hallo Welt

9.1.13. showMessage

void showMessage(string str);

Zeigt ein Windows-Nachrichtenfenster an.

Beispiel 9.10. Macro: Hallo Welt!

application.showMessage('Hallo Welt!');

9.1.14. editorLanguage

string editorLanguage();

Gibt einen Identfier, wie en oder de für die aktuelle Sprache der Programmoberfläche zurück.

9.1.15. editorName

string editorName();

Damit bekommen Sie den Namen des Editors. Sollte eigentlich immer Weaverslave sein. :-)

9.1.16. editorVersion

string editorVersion();

Falls Sie die aktuelle Version des Editors wissen wollen.

9.1.17. exeName

string exeName();

Gibt Pfad und Dateiname der ausführbahren Datei des Editors, also des Weaverslave, zurück.

Beispiel 9.11. Macro: Anzeige der Programmdatei

s = application.exeName();
application.showMessage(s);

9.1.18. scriptFile

string scriptFile();

Der Dateipfad und -name des aufgerufenen Scriptes.

9.1.19. username

string username();

Gibt den Windows-Benutzernamen zurück.

9.1.20. document

object document();

Gibt ein Objekt zurück, mit welchem Sie auf das aktive Dokumentenfenster zugreifen können. Nähere Informationen finden Sie im seperaten Abschnitt zum Objekt document().

9.1.21. search

object search();

Gibt ein Objekt zurück, mit welchem Sie auf die Suchfunktion des Weaverslave zugreifen können. Nähere Informationen finden Sie im seperaten Abschnitt zum Objekt search().

9.1.22. handle

integer handle();

Mit dem Handle des Hauptfensters können erzeugte Fenster in die Anwendung eingebunden werden.

9.1.23. height

integer height ;

Auslesen und Setzen der Höhe des Programmfensters.

9.1.24. left

integer left ;

Auslesen und Setzen der linken Kante des Programmfensters.

9.1.25. top

integer top ;

Auslesen und Setzen der oberen Kante des Programmfensters.

9.1.26. width

integer width ;

Auslesen und Setzen der Breite des Programmfensters.

9.1.27. windowState

integer windowState ;

Auslesen und Setzen der Status des Programmfensters.

WertStatus
0Normal
1Minimized
2Maximized

Tabelle 9.3. Mögliche Werte von application.windowState

9.2. Objekt "document"

9.2.1. gotoLine
9.2.2. filename
9.2.3. selStart
9.2.4. selLength
9.2.5. selText
9.2.6. text
9.2.7. save
9.2.8. saveAs
9.2.9. fileProfile
9.2.10. next
9.2.11. previous
9.2.12. isText
9.2.13. isImage

Das Objekt document dient als Interface auf Funktionen und Eigenschaften des aktuellen Dokumentes. Beachten Sie das der Zugriff immer auf das aktive Dokument erfolgt.

9.2.1. gotoLine

boolean gotoLine(integer line [, integer column]);

Scrollt die angegebene Zeile des aktiven Dokumentes in den sichbaren Bereich.

9.2.2. filename

string fileName();

Liefert den Dateinamen des aktiven Dokumentes. Bei einem noch nicht gespeicherten Dokument wird ein leerer String zurückgeben.

9.2.3. selStart

integer selStart ;

Liefert die Zeichenposition, an welcher die Markierung im aktiven Dokument beginnt. Weisen Sie der Eigenschaft einen Wert zu um die Startposition der Markierung zu ändern.

9.2.4. selLength

integer selLength ;

Liefert die Zeichenlänge, der Markierung des aktiven Dokuments. Weisen Sie der Eigenschaft einen Wert zu um die Länge der Markierung zu ändern.

9.2.5. selText

string selText ;

Mit dieser Eigenschaft können sie den markierten Text des aktiven Dokumentes lesen und ändern. Wenn kein Text markiert ist, wird beim Setzen der neue Text an der Position des Textcursors eingefügt.

9.2.6. text

string text ;

Mit dieser Eigenschaft können sie den gesamten Text des aktiven Dokumentes lesen und ändern.

9.2.7. save

boolean save([string sourceFile]);

Speichert die Änderungen eines geöffneten Dokumentes ab. Wenn Sie sourceFile nicht angeben, wird das aktive Dokument gespeichert. Beachten Sie, dass das Dokument bereits einmal gespeichert haben müssen. Die Funktion wird nicht nach einem Dateinamen fragen. Nutzen Sie in solchen Fällen saveAs().

9.2.8. saveAs

boolean saveAs(string targetFile [, string sourceFile [, boolean overWrite]]);

Speichert ein geöffnetes Dokument unter einem neuen Namen. Wenn Sie nur targetFile angeben, wird das aktive Dokument gespeichert. Mit dem zweiten Parameter sourceFile können Sie eine bestimmte geöffnete Datei speichern.

Mit dem Parameter overWrite können Sie bestimmen ob versucht wird eine existierende Datei mit gleichem Namen zu überschreiben.

Wenn die Datei gespeichert werden konnte, gibt die Funktion true zurück.

9.2.9. fileProfile

string fileProfile ;

Mit dieser Eigenschaft, können Sie das Dateiprofil des aktiven Dokumentes auslesen oder ändern.

9.2.10. next

void next();

Aktiviert das nächste Dokumentenfenster.

9.2.11. previous

void previous();

Aktiviert das vorherige Dokumentenfenster.

9.2.12. isText

boolean isText();

Gibt true zurück, wenn das aktive Dokument ein Textdokument ist, sonst false.

9.2.13. isImage

boolean isImage();

Gibt true zurück, wenn das aktive Dokument ein Bild ist, sonst false.

9.3. Objekt "search"

Das Objekt search dient als Interface auf die Suchfunktionen des Weaverslave. Sie können auf diese Weise häufig benötigte Suchen als Scripte ablegen.

9.3.1. search

boolean search(string pattern, integer where [, string directory]);

Die Methode search löst eine Suche im Editor aus. Das pattern kann ein einfacher Text oder ein Regulärer Ausdruck sein.

WertSuche in
0aktuellem Dokument
1aktuellem Verzeichnis (interner Dateibrowser)
2festgelegtem Verzeichnis (Parameter directory)
3geöffneten Dateien
4Verzeichnis des aktuellen Dokumentes
5Dateien des Suchergebnisses

Tabelle 9.4. Scripting: Mögliche Sucheorte

Über weitere Eigenschaften des Objektes können sie Optionen für die Suche bestimmen.

9.3.2. optCaseSensitive

boolean optCaseSensitive ;

Gibt an und ändert ob bei der Suche die Groß-/Kleinschreibung beachtet wird.

9.3.3. optWholeWords

boolean optWholeWords ;

Gibt an und ändert ob nur nach ganzen Wörtern gesucht wird. Diese Option wird bei Regulären Ausdrücken ignoriert.

9.3.4. optRegEx

boolean optRegEx ;

Gibt an und ändert ob das Suchwort als regulärer Ausdruck interpretiert wird.

9.3.5. optUnGreedy

boolean optUnGreedy ;

Wenn diese Option aktiv ist, treffen reguläre Ausdrücke standardmäßig die kürzesten Treffer.

9.3.6. optSingleLine

boolean optSingleLine ;

Mit dieser Option gilt der Punkt (beliebiges Zeichen) in regulären Ausdrücken auch für den Linefeed (\n).

9.3.7. optMultiLine

boolean optMultiLine ;

Gibt an und setzt ob die Anker (^ und $) bei regulären Ausdrücken nur Textanfang und -ende oder auch Anfang und Ende der einzelnen Zeilen treffen.

9.3.8. optIncludeSubDirs

boolean optIncludeSubDirs ;

Aktiviert das rekursive Durchsuchen von Unterverzeichnissen bei einer verzeichnisweiten Suche.

9.3.9. optFromCursor

boolean optFromCursor ;

Startet eine Suche im aktiven Dokument erst ab der Position des Textcursors. In einer verzeichnisweiten Suche wird die Option ignoriert.

9.3.10. optInSelection

boolean optInSelection ;

Bei einer Suche im aktiven Dokument, wird nur in der Markierung gesucht, wenn diese Option aktiv ist. In einer verzeichnisweiten Suche wird die Option ignoriert.

9.3.11. next

boolean next(boolean allFiles);

Aktiviert den nächsten Treffer.

9.3.12. previous

boolean previous(boolean allFiles);

Aktiviert den vorherigen Treffer.

Kapitel 10. Plugins

Inhaltsverzeichnis

10.1. Installation
10.2. Programmierung

Das Programm unterstützt 3 verschiedenen Plugin-Schnittstellen. Die erste stammt von der Vorversion - dem HTMLPad 3. Die zweite ist identisch mit der des HTMLEditor Phase 5 von Ulli Meybohm. Außerdem verfügt der Weaverslave über eine eigene Schnittstelle.

10.1. Installation

Bei der ersten Installation eines Plugins müssen Sie den Plugin-Pfad einstellen. Dazu rufen Sie den allgemeinen Optionsdialog auf und gehen auf die Seite Plugins. Der Button mit dem Ordnersymbol ruft einen Verzeichnisdialog auf. Nach der Definition des Pfades können Sie mit dem zweiten Button den Weaverslave veranlassen das definierte Verzeichnis nach Plugins zu durchsuchen. Dabei werden auch sämtliche Unterverzeichnisse durchsucht.

Über die beiden Listen auf der Seite können Sie definieren, welche Plugins in der Toolbar angezeigt werden. Falls das Plugin über ein Icon verfügt, wird dieses genutzt.

Optionsdialog für Plugins

Abbildung 10.1. Optionsdialog für Plugins

10.2. Programmierung

Sie können auch weitere Plugins selbst entwickeln. Dazu benötigen Sie eine Programmiersprache, welche in der Lage ist, Windows-DLLs zu erstellen. Delphi und C++ gibt es Beispielplugins auf der Webseite.

Plguins für den Weaverslave sind DLLs, welche bestimmte Funktionen implementieren. Diese werden vom Editor aufgerufen um Informationen über das Plugin zu laden oder das Plugin zu starten. Der Startfunktion wird die Adresse einer Callback-Funktion übergeben, welche wiederum das Plugin jederzeit aufrufen kann, um Funktionen im Editor auszuführen.

Die Beispielplugins enthalten zusätzlich zur Beispielimplementation dieser Funktionen diverse Wrapper-Funktionen für die Callback-Funktion. Damit wird die Entwicklung von Plugins um einiges vereinfacht, da viele Konvertierungen entfallen.

Die Beispielplugins sind direkt im Quellcode ausführlich dokumentiert. Da die konkrete Implementation der Wrapper-Funktionen von der Programmiersprache abhängt, können diese nicht hier aufgeführt werden.

Anhang A. Tastenkürzel

Der Weaverslave verfügt über einige Tastenkürzel für Funktionen. Diese Tastenkürzel können nicht umgestellt werden.

TastenkürzelFunktion
F1Helper anzeigen (nur für PHP und HTML)
F2Editbereich anzeigen/aktivieren
F3Nächstes Suchergebnis markieren
F5Dateibrowser aktualisieren
F6PHP-Funktionsliste anzeigen
F9Vorschau: Internet Explorer
STRG-F9Vorschau: Gecko (Mozilla)
F10Menü aktivieren
F11TagInspector anzeigen
F12 Toolfenster aus-/einblenden
TABEinrücken
SHIFT-TABAusrücken
STRG-AAlles markieren
STRG-BBrowserPanel ein-/ausblenden
STRG-CText in die Zwischenablage kopieren
STRG-DCodeBrowser anzeigen
STRG-EProgramm beenden
STRG-FSuchen (im aktuellen Dokument)
STRG-G Gehe zu Zeile (Dialog für Zeilennummer)
STRG-HNächstes Dateiprofil
STRG-IEinrücken
STRG-JVorheriges Dateiprofil
STRG-KNächstes Dokument
STRG-LVorheriges Dokument
STRG-MTextkürzel ersetzen
STRG-N Dialog "Neues Dokument" öffnen.
STRG-ODokument öffnen
STRG-P Druckvorschau
STRG-RSuchen und Ersetzen
STRG-SDokument speichern
STRG-THTML-Tag markieren
STRG-UAusrücken
STRG-VText aus der Zwischenablage einfügen
STRG-WAktuelles Dokument schließen
STRG-XText in die Zwischenablage ausschneiden
STRG-YZeile löschen
STRG-ZLetzte Texteinänderung Rückgängig
STRG-SHIFT-ZTextänderung wiederherstellen
STRG-TABNächstes Dokument

Tabelle A.1. Liste der fest definierten Tastenkürzel

Zum anderen kann man für Snippets Tastenkürzel festlegen. Da Snippets auch Macros sein können, lassen sich hier einige Funktionen automatisieren. Für Snippets ist der gesamte Bereicht der Tastenkürzel STRG-SHIFT-A bis STRG-SHIFT-Y, ALT-0 bis ALT-9, STRG-0 bis STRG-9, STRG-ALT-0 bis STRG-ALT-9, STRG-SHIFT-0 bis STRG-SHIFT-9, STRG-ENTER, SHIFT-ENTER und SHIFT-SPACE. In der Summe kommt man so auf 68 frei definierbare Tastenkürzel.

Glossar

Delphi

Delphi ist eine kommerzielle IDE der Firma Borland. Dazu gehören ein Compiler für Object Pascal sowie die Komponentenbibliotheken VCL und CLX. Auch der Weaverslave selbst ist damit erstellt.

DLL

Eine Dynamic Link Library (DLL) stellt Anwendungen Funktionalität oder auch Resourcen zur Verfügung. Wie eine Anwendung selbst wird sie compiliert, ist jedoch nicht ohne ein zugehöriges Programm verwendbar.

MDI-Anwendung

MDI steht für Multiple Dokument Interface und bezeichnet eine spezielle Art von Programmoberfläche, bei der mehrere Kindfenster für Dokumente innerhalb eines Hauptfenster geöffnet werden. Die Kindfenster können maximiert, aber auch neben- und übereinander angezeigt werden.

PEAR

Das PEAR (PHP Extension and Addon Repository) ist eine umfangreiche Klassenbibliothek für PHP. Die Klassen sind selbst in PHP geschreiben. Die Besonderheit ist jedoch das Paketsystem, welches eine einfache Installation der Klassen ermöglicht. Nähere Informationen finden Sie auf http://pear.php.net.

PECL

PECL (PHP Extension Community Library) ist eine Sammlung von Erweiterungen für PHP, welche über das Paket- und Installationssystem des PEAR installiert werden können. Nähere Informationen finden Sie auf http://pecl.php.net.

TCP/IP

TCP/IP ist eine Gruppe von Netzwerkprotokollen, die die Basis für die Netzwerkkommunikation im Internet bilden. Anwendungsprotokolle wie HTTP oder FTP setzen darauf auf.

Weberknecht

Der Weberknecht gehört zur Gruppe der Arachnoiden (Spinnentiere) - ist jedoch keine Spinne. Er besitzt nur einen kleinen Körperteil welcher von acht Beinen getragen wird. Im Deutschen wird er vielfach auch als Opa Langbein bezeichnet.

Der englische Name für das Tier ist Harvestman oder auch Daddy Long Legs.