TreeView ^{∗}

Stephan Gerle

Version 2.2 21.8.1992

Dies ist die Anleitung zu TreeView Version 2.2. Sie wurde erstellt mit LaTEX.

Für Fragen oder Fehlerberichte bin ich unter folgender Adresse zu erreichen:

Gelbe Post  Stephan Gerle

Ruthstr. 8 4600 Dortmund 1

Graue Post  Tel.: 0231 / 65 25 35
E-Mail (DFÜ) MausNet  Stephan Gerle @ DO

Usenet  Stephan_Gerle @ do.maus.de
Zerberus  Stephan_Gerle % DO @ ZERMAUS.ZER
Fido-Net  Stephan Gerle % MAUS DO @ 2:242/2

Diese Anleitung darf - auch auszugsweise - nur mit Genehmigung des Autors veröffentlicht werden.

∗\begin{matrix}c \\ ◯ \end{matrix} 1990,91,92 by Stephan Gerle

Inhaltsverzeichnis

1 Was ist TreeView 3

2 Nutzungsbedingungen 3

3 Bedienung 3 3.1 Start als PRG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 3.2 Start als ACC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 3.3 Aufruf von TreeView . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 3.4 Grafische Darstellung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 3.5 Mögliche Aktionen im Fenster . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 3.6 Tastaturkommandos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

4 Besonderheiten mit Gemini 6

5 Andere Programme 6

6 Ausgabe 7 6.1 Drucken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 6.2 Metafile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 6.3 ASSIGN.SYS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

7 Probleme mit anderen Programmen 8

8 Fehler 8

9 Grenzen 9

10 Programmtechnisches 9 10.1 AV-Protokoll . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 10.2 AV-Protokoll Messagenummern . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 10.3 Drvmap() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 10.4 Patchvariablen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

10.4.1 GDOSPRT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 10.4.2 GDOSMET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

11 Epilog 12

12 Neu in Version 12 12.1 V2.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 12.2 V2.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 12.3 V2.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 12.4 V1.9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 12.5 V1.8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 12.6 V1.7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 12.7 V1.6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 12.8 Ältere Versionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

1 Was ist TreeView

TreeView ist ein Programm, welches den Verzeichnisbaum von Laufwerken grafisch in einem Fenster ausgibt. Dieser grafische Verzeichnisbaum kann - um z.B. einen Überblick über die Festplattenstruktur zu erhalten - ausgedruckt werden. TreeView kann sowohl als ACC als auch als PRG bzw. APP gestartet werden. Wenn TreeView als ACC gestartet wird, existiert eine Schnittstelle zu Gemini ^{1}.

2 Nutzungsbedingungen

TreeView ist nicht Public Domain! TreeView darf aber zusammen mit diesem Text beliebig oft und für jeden kopiert werden. Dabei dürfen das Programm als auch der Text nicht modifiziert werden. TreeView darf nicht kommerziell verkauft werden. Dies schließt auch sogenannte PD Versender aus, die mehr als den Diskettenpreis für eine Kopie verlangen.

Falls TreeView regelmäßig benutzt wird, so bitte ich als kleine Anerkennung um eine Postkarte von Ihrem Heimatort. Dadurch kann ich sehen, ob TreeView überhaupt zur Anwendung kommt und die Karte kann auch gleichzeitig dazu genutzt werden, Verbesserungsvorschläge und Fehlermeldungen zu notieren. Dann sollte aber unbeding die Versionsnummer von TreeView auf der Karte stehen.

Über eine kleine Spende freue ich mich natürlich immer. Falls sich jemand dazu überwinden sollte kann er mir das Geld auf folgendes Konto überweisen:

Stadtsparkasse Dortmund BLZ 440 501 99 Konto Nr. 372 007 222

Falls jemand eine neue Version haben will, kann er mir eine Diskette mit frankiertem Rückumschlag schicken. Die neueste Version werde ich dann auf die Diskette draufkopieren und zurückschicken. DFÜler können die neueste Version auch in der Maus DO (0231-174 674) downloaden.

3 Bedienung

TreeView kann sowohl als PRG als auch als ACC gestartet werden. TreeView erkennt automatisch, ob es als ACC gestartet wurde und installiert sich dann im DESK-Menü. Wird TreeView als PRG gestartet, so öffnet TreeView sofort den Verzeichnisbaum. Ist ein multitasking fähiges AES vorhanden (MultiGEM z.B.), so wird mittels AV-Protokoll der Status von TreeView gesucht. Ist ein Status abgespeichert worden, so wird dieser eingestellt, wenn ein multitasking fähiges AES vorhanden ist. Ansonsten wird das aktuelle Laufwerk ab dem Rootverzeichnis oder der übergebene Pfadname dargestellt.

3.1 Start als PRG

Wenn Sie TreeView als PRG starten, so können Sie in der Kommandozeile den anzuzeigenden Pfad angeben.

Beispielsweise treeview c:\gemini

Wird kein bzw. ein nicht gültiger Pfad angegeben, so wird der Verzeichnisbaum von dem aktuellen Laufwerk ab dem Wurzelverzeichnis dargestellt.

1Dafür benötigen Sie eine Gemini in der Version 1.2 oder höher.

3.2 Start als ACC

Wenn Sie TreeView als ACC benutzen wollen, so muß TreeView den Namen TREEVIEW.ACC erhalten. Diese Datei kopieren Sie nun in das Wurzelverzeichnis Ihres Bootlaufwerks, damit TreeView automatisch beim Booten eingeladen wird.

Rufen Sie nun TreeView aus dem DESK-Menü aus auf, so zeigt TreeView den Verzeichnisbaum des aktuellen Laufwerks ab dem Wurzelverzeichnis an.

3.3 Aufruf von TreeView

Wenn Sie TreeView starten, so sucht TreeView in dem darzustellendem Verzeichnis nach der versteckten Datei TREEVIEW.INF^{2}. Ist diese Datei vorhanden, so wird sie eingeladen und der Verzeichnisbaum sofort dargestellt. Fehlt diese Datei, so wird der Verzeichnisbaum erstellt. Da diese Operation relativ lange dauert, zeigt TreeView währenddessen auf dem Bildschirm an, das wievielte Verzeichnis es gerade bearbeitet.

3.4 Grafische Darstellung

Nachdem der Verzeichnisbaum eingeladen ist, wird er grafisch in einem Fenster dargestellt.

In der obersten Zeile ist ganz links ein Drucker-Icon und rechts daneben sind Icons für die aktiven Laufwerke. Darunter sieht man - abgetrennt durch eine Linie - den Verzeichnisbaum.

Jedes Verzeichnis steht in einer eigenen Zeile. In der ersten Zeile steht das Verzeichnis, ab dem der Verzeichnisbaum dargestellt wird.

Unterverzeichnisse sind jeweils um einen kleinen Betrag gegenüber dem Vaterverzeichnis nach rechts eingerückt. Die Verzeichnisse sind untereinander mit Strichen verbunden.

Werden die Größenangaben^{3} mit angezeigt, so stehen die Größen der Verzeichnisse in Kilobyte direkt vor dem Namen des Verzeichnisses. Zwischen der Größenangabe und dem Namen steht ein Punkt, wenn in dem Verzeichnis mindestens eine Datei vorhanden ist. Fehlt der Punkt, so ist das Verzeichnis leer.

Die Kreise vor einem Verzeichniseintrag geben an, ob die vorhandenen Unterverzeichnisse dargestellt werden. ⊕ bedeutet, die Unterverzeichnisse sind sichtbar. ⊖ bedeutet, die Unterverzeichnisse sind nicht sichtbar.

3.5 Mögliche Aktionen im Fenster

Klickt man mit der Maus auf ein ⊕, so werden die Unterverzeichnisse eingeklappt und aus dem ⊕ wird ein ⊖. Somit kann man normalerweise nicht benutzte Unterverzeichnisse unsichtbar machen und die Übersichtlichtkeit der Darstellung erhöhen.

Mittels Einfachklick auf einen Verzeichniseintrag wird ein Verzeichnis selektiert. Dies hat noch keine Auswirkungen. Ein Doppelklick auf einen Verzeichniseintrag führt unter Gemini dazu, das Gemini ein Fenster mit den Dateien, die zu dem angeklickten Verzeichnis gehören, öffnet.

Klickt man auf das Drucker-Icon, so wird man noch gefragt, ob man auf den Drucker oder in ein Metafile^{4} drucken oder die Aktion abbrechen möchte.

2Siehe auch Ctrl-S

3Siehe Ctrl-L

4Vektorgrafikformat mit der Endung .GEM. Dieser Dateityp wird von verschiedenen Grafikprogrammen unterstützt.

Klickt man auf ein Laufwerk’s-Icon, so wird der Verzeichnisbaum des angeklickten Laufwerk’s ab dem Wurzelverzeichnis erst eingeladen und dann angezeigt.

3.6 Tastaturkommandos

Backspace: Es wird der Verzeichnisbaum ab einer Ebene höher als dem gerade angezeigten eingeladen und anschließend dargestellt.

Cursortasten: Mit den Cursortasten kann in dem Fenster gescrollt werden. Gleichzeitig mit Shift bewirken die Cursortasten ein seitenweises Scrolling.

Esc: Der gerade angezeigte Dateibaum wird neu erstellt.

HELP: Bringt eine kleine Hilfsbox zu den Tastenfunktionen auf den Bildschirm. Mittels dem Button “Info“ wird die (früher über Ctrl-I erreichbare) Infobox aufgerufen. In der Infobox kann die Versionsnummer von TreeView sowie ein paar andere Informationen nachgeguckt werden: Unter “Kommunikation mit:“ steht der Name der Hauptapplikation, falls die Hauptapplikation das AV-Protokoll (siehe 10.1) versteht. “Max. Ordnertiefe“ ist die maximale Ordnertiefe, die TreeView gerade darstellt. “Anzahl Ordner“ ist die Anzahl der von TreeView eingelesenen Ordner. Unter “Verzeichnisbaum vom“ steht das Datum und die Uhrzeit, von wann der dargestellte Verzeichnisbaum ist. Danach kann man sehen, wie aktuell der Verzeichnisbaum ist.

Ctrl-L: Wechselt die Anzeige von TreeView . Nach dem ersten Mal drücken wird zu jedem Verzeichniseintrag noch angegeben, wieviel Kilobytes von dem Verzeichnis belegt wird. Nach nochmaligem Drücken von Ctrl-L verschwindet diese Anzeige wieder. Die Größe des Verzeichnisses errechnet sich aus der Größe der in dem Verzeichnis stehenden Dateien plus der Größe der Unterverzeichnisse.

Ctrl-S: Hiermit kann der geladene Verzeichnisbaum abgespeichert werden.

Wird TreeView nochmal mit diesem Pfad aufgerufen, so wird der Verzeichnisbaum nur noch erstellt, wenn CTRL gedrückt wird. Ansonsten wird Der abgespeicherte Verzeichnisbaum von der Platte geladen. Dies hat den Vorteil, daß das Einladen sehr schnell geht. Der Nachteil ist, das Konsistenzprobleme auftreten können. Wenn man ein Verzeichnis löscht oder ein Neues erstellt, so weiss TreeView davon natürlich nichts. In diesem Fall muß mit Esc der Dateibaum aktualisiert werden. Existiert zu diesem Verzeichnis noch ein altes TREEVIEW.INF, so wird automatisch der neu erstellte Verzeichnisbaum wieder abgespeichert. Der Verzeichnisbaum wird in dem darzustellendem Verzeichnis als versteckte Datei unter dem Namen TREEVIEW.INF abgelegt.

Ctrl-P: Ist dasselbe wie Anklicken des Drucker-Icons.

Ctrl-Q: Nur aktiv, wenn TreeView als Programm gestartet wurde. Dann wird damit Tree-View verlassen. Sonst wird dieser Tastendruck an die Hauptapplikation gesendet (bewirkt bei Gemini das Beenden von Gemini !).

Ctrl-D: Bewirkt das Schließen des Fensters.

Ctrl-U: Wie Ctrl-D.

Return und Ctrl-O: Sendet den angeklickten Pfad an die Hauptapplikation (entspricht Open).

Alle Tasten mit ASCII-Code größer 32 und kleiner 127 außer ’:’ und ’\’: Diese Tasten werden in einem Suchstring zusammengefaßt der dann im Verzeichnisbaum gesucht wird. Wird ein passender Ordner gefunden, so wird er selektiert und der passende Ausschnitt aus dem Verzeichnisbaum im Fenster dargestellt. In der Titelzeile des Fensters kann man sehen, welcher Suchstring bereits vorgeben ist.

Delete: Das letzte Zeichen im Suchstring wird wieder entfernt.

Space: Space kann in einem Ordnernamen nicht vorkommen. Deshalb wird mit dieser Taste der Suchstring wieder gelöscht und die Suche kann von vorne beginnen.

ALT-A..Z: Das durch den Buchstaben angegebene Laufwerk (falls vorhanden) wird angezeigt.

Tab: Wenn ein Ordner selektiert ist, so wird ohne drücken von Shift der nächste Ordner und mit Shift der vorherige Ordner selektiert.

Alle anderen Tastendrücke werden an die Hauptapplikation weitergereicht.

4 Besonderheiten mit Gemini

Ab Gemini V1.2 existiert in Gemini eine Schnittstelle zu Accessories. TreeView macht sich diese Schnittstelle auf mehrere Arten zunutze.

1. Man kann Accessories in Gemini starten^{5}. Die Accessories werden dabei natürlich nicht richtig gestartet, sondern die Acc’s kriegen die Message 0x4711, in der dem Acc eine Kommandozeile übergeben wird. Legt man nun z.B. das TreeView -Icon auf den Desktop von Gemini , so kann man TreeView einfach durch Doppelklick auf das Icon starten. Man kann auch - wie bei normalen Programmen - Icons auf dieses TreeView -Icon ziehen. TreeView darf aber nur mit einer Pfadangabe gestartet werden, deshalb sollte man auch nur ein Icon auf das TreeView-Icon ziehen. TreeView extrahiert dann die Pfadangabe aus dem Übergebenen Parameter und stellt den zu dem Icon gehörenden Verzeichnisbaum dar. Man kann so ziemlich alles, was auf dem Desktop von Gemini liegt, auf das TreeView -Icon ziehen. Der Shredder repräsentiert keinen Pfad und bildet damit die einzige Ausnahme.

2. Macht man einen Doppelklick auf einen Verzeichniseintrag in TreeView , so wird in Gemini ein Fenster mit dem dazugehörigen Pfad geöffnet. Dies kann dazu genutzt werden, um schnell tief verschachtelte Ordner zu öffnen.

3. Da ich in TreeView keinen Fontselektor einbauen wollte, fragt TreeView bei jedem Start bei Gemini nach, welcher Font für die Dateifenster in Gemini eingestellt ist. Dieser Font in dieser Höhe wird dann auch von TreeView verwendet.

4. Falls das Fenster von TreeView offen ist, kann man in Gemini auch noch Icons in dieses Fenster legen. TreeView interpretiert dies dann als Kopieraktion der durch die Icons repräsentierten Dateien in den im TreeView angeklickten Ordner^{6}.

Werden die Icons nicht auf einen Ordner gezogen, so interpretiert TreeView dies als den Wunsch den zu dem Icon gehörenden Verzeichnisbaum anzuzeigen.

5. Gemini merkt sich den Status von TreeView . Dieser Status kann mit “Status sichern“ in Gemini abgespeichert werden. Damit kann man z.B. die Lage des TreeView -Fensters und den dargestellten Pfad abspeichern.

6. Ab TreeView V2.0 funktioniert das ganze auch, wenn ein multitasking fähiges AES installiert ist und TreeView als PRG gestartet wird.

5 Andere Programme

In TreeView ist das sogenannte AV-Protokoll eingebaut. Dies ist ein Satz von Mitteilungen, die ein Acc und ein Hauptprogramm austauschen können. In 10.1 steht näheres.

5Dies funktioniert schon ab Gemini V1.1.

6Diese Möglichkeit ist in Gemini V1.2 noch nicht implementiert. In der nächsten Gemini Version wird sie aber vorhanden sein.

Jedes Programm, welches dieses Protokoll unterstützt, wird damit auch von TreeView unterstützt. Für das Protokoll wird bei Gemini V1.2 eine Headerdatei mit Defines für die Protokollnummern mitgeliefert. Für Accessories gibt es von mir eine kleine Library, die für die Unterstützung des AV-Protokoll’s in eigenen Accessories genutzt werden kann.

6 Ausgabe

TreeView macht sämtliche Ausgaben über das VDI. Soll auf den Drucker oder in eine Metadatei ausgegeben werden, so benötigt TreeView das GDOS. GDOS können Sie bei ATARI oder jedem gutem Atari-Fachhändler beziehen.

6.1 Drucken

TreeView druckt grundsätzlich auf GDOS-Gerät 21.

Bei der Druckerausgabe kann es zu Problemen kommen, wenn man einen Font gewählt hat, der nur in einer berechneten Größe vorliegt (z.B. doppelte Größe). Hat man in Gemini für die Dateifenster einen Font eingestellt, der für den Druckertreiber nicht vorhanden ist, so wird die Wahl des Fonts dem Treiber überlassen. Die mir bekannten GDOS-Treiber geben dann immer den ersten Font zurück, der im ASSIGN.SYS direkt unter dem Treibereintrag steht.

6.2 Metafile

Die Metafile-Ausgabe ist mehr als kleines Bonbon gedacht, da diese erweiterte Ausgabemöglichkeit mich genau 6 Befehle kostet. Leider gibt es damit auch am meisten Probleme. Ist unter META.SYS im ASSIGN.SYS kein Font eingetragen, so liefert der Treiber die Fonthöhe 0 zurück und damit würde alles auf eine Zeile zusammengequetscht. Deshalb geht TreeView folgendermaßen vor: Existiert der ausgewählte Font nicht, so wird die Fonthöhe aus der Pointöhe des dargestellten Fonts und den Pixelausmaßen berechnet.

Es gibt auch mindestens zwei verschiedene META.SYS. Das META.SYS mit der Dateilänge 9325 Bytes funktioniert. Bei einem anderen META.SYS gab es auch schon mal Bomben.

Das Metafile wird im Clipboard abgelegt wenn der Clipboardpfad gesetzt worden ist. Ist der Clipboardpfad nicht gesetzt, so wird das Metafile in dem Verzeichnis des dargestellten Verzeichnisbaums abgelegt.

6.3 ASSIGN.SYS

Für das Drucken und die Metafileausgabe benötigt TreeView, wie oben schon gesagt, GDOS. Das GDOS verwaltet VDI-Gerätetreiber sowie die dazugehörigen Fonts. Welche Gerätetreiber und Fonts vorhanden sind, wird dem GDOS mittels der Datei ASSIGN.SYS mitgeteilt. Diese Datei ist eine reine ASCII-Datei, die mit jedem Editor, der ASCII-Dateien schreiben kann, bearbeitet werden kann (z.B. Tempus, Edison). Will man mit TreeView drucken, so muß im ASSIGN.SYS für die Gerätenummer 21 ein Druckertreiber eingetragen sein. Druckertreiber (sowie auch META.SYS) können von Atari, jedem gutem Atari-Fachhändler sowie über Mailboxen bezogen werden. Weiterhin muß mindestens ein Zeichensatz für den Druckertreiber im ASSIGN.SYS eingetragen sein. Ebenso muß unter der Gerätenummer 31 der Treiber META.SYS im ASSIGN.SYS eingetragen sein, damit mit Tree-View die Metafileausgabe genutzt werden kann. Für diesen Gerätetreiber muß kein Zeichensatzeingetragen werden. Falls welche eingetragen werden, so sollten dies nur Metafile-Fonts sein.

Eine beispielhafte ASSIGN.SYS Datei könnte z.B. so aussehen:

path = C:\GDOS\FONTS;Pfadname, in dem Fonts und Geraetetreiber sind
;
; Hier folgen dann die Geraetetreiber fuer den Bildschirm
; Sie sind hier nicht aufgelistet
;
21 FX80.SYS
;
ATSS08EP.FNT         ; Zwei Fonts fuer den Druckertreiber
ATSS10EP.FNT
;
31 META.SYS
;
ATSS10MF.FNT         ; Fonts fuer Metafile-Treiber
ATSS12MF.FNT

Sollten Probleme beim Drucken auftreten, so bitte ich um genauere Angaben zu den verwendeten Druckertreiber (Versionsnummer, Dateilänge). Mit dem FX80.SYS (einer der ältesten GDOS-Treiber) funktioniert TreeView bei mir einwandfrei.

7 Probleme mit anderen Programmen

1. Bei der Version V3.0q (oder auch andere Versionen) von Autoswitch-Overscan wird der Bildschirm weiß, wenn man mit TreeView ausdrucken will. Das liegt daran, daß TreeView einen v clrwk()-Aufruf auf die Druckerworkstation ausführt und Autoswitch-Overscan daraufhin den Bildschirm löscht. Dies hat ansonsten keine weiteren Nebeneffekte. Nach Starten eines Programmes ist der Bildschirm wieder normal. In der aktuellen Version (mindestens 3.0v) ist der Fehler behoben.

2. Eine Version von Metafont von Lutz Birkhahn gibt eine Fehlermeldung aus, wenn es eine Meldung erhält, die Metafont nicht versteht. Leider gehören dazu auch Meldungen von TreeView an Metafont. Auch dieser Fehler hat ansonsten keine Nebenwirkungen.

3. Viele Programme können Metafiles nicht richtig lesen.

Calamus 1.09 z.B. ignoriert sämtliche Textangaben in Metafiles.

Guck 1.5a gibt zwar alles richtig aus, verwendet aber immer den Systemzeichensatz, sodaß die Texte meist zu groß dargestellt werden.

Die einzigen mir bekannten Programme, die die Metafiles korrekt anzeigen sind SciGraph sowie 1st Guide.

4. Einige Programme verstehen die die Meldungen des AV-Protokolls nicht und geben daraufhin leider eine Fehlermeldung aus, anstatt sie einfach zu ignorieren.

8 Fehler

Alle mir bekannten Fehler sind aus dem Programm entfernt worden soweit möglich. Trotzdem ist es möglich, das noch Fehler in TreeView sind. Sollte die Verwendung von TreeView zu irgendwelchen Schäden führen, so kann ich dafür keine Verantwortung übernehmen. Aus programmtechnischer Sicht ist es allerdings ziemlich unmöglich das die Verwendung von TreeView zu irgendwelchen Datenverlusten auf einem Massenspeicher führen kann.

Sollten bei der Verwendung von TreeView Fehler auftreten, so bitte ich um eine möglichst genaue Fehlerbeschreibung. Am besten wäre ein SysMon-Listing sämtlicher Betriebssystemaufrufe.

Auf jeden Fall gehören zu einer Fehlerbeschreibung aber folgende Angaben:

1. Versionsnummer von TreeView

2. laufendes Hauptprogramm mit Versionsnummer

3. installierte residente Programme mit Versionsnummern

(a) Auto-Ordner Programme

(b) Accessories

(c) nachgeladene residente Programme

(d) Harddisktreiber (wenn vorhanden)

4. Hardwarekonfiguration

(a) verwendeter Rechner

(b) Speicherkonfiguration

(c) verwendeter Massenspeicher

(d) zusätzlich installierte Hardware

9 Grenzen

1. Ab einer Ordnertiefe von ca. 15 Ordnern versagt TreeView , da interne Puffer überlaufen.

2. Wegen der chronologischen Reihenfolge der Messages im AES und dem auf Messages basierendem AV-Protokoll ist es nicht möglich das nachträgliche Ändern des Zeichensatzes und Verschieben des Fensters beim Laden mittels Chameleon zu unterbinden.

10 Programmtechnisches

Dieses Kapitel ist nur für Programmierer interessant, die TreeView von ihrem Programm aus aufrufen wollen. Der normale Anwender kann diese Kapitel überspringen.

10.1 AV-Protokoll

In TreeView ist das AV-Protokoll implementiert. Das AV-Protokoll ist ein eventorientiertes Protokoll, welches es ermöglicht, das die Hauptapplikation und Accessories sich gegenseitig Dienste anbieten. Die Kommunikation des Accessories mit der Hauptapplikation geschieht über das Messagesystem des AES. TreeView nutzt nur einen kleinen Teil der bereits definierten Messages des AV-Protokolls aus. Eine Aufstellung aller bereits definierten Messages des AV-Protokolls kann man in VAPROTO.H^{7} nachlesen.

Untenstehende Erklärung benutzt teilweise C-Notation.

TreeView geht beim Programmstart als ACC nun folgendermaßen vor:

1. Die Meldung AV PROTOKOLL wird an die Hauptapplikation (ap id = 0) geschickt.

msg[6+7] = “TREEVIEW“
msg[3]  = 1|2
msg[4]  = 0
msg[5]  = 0

Das bedeutet, das TreeView VA SETSTATUS und VA START versteht.

7Wird mit Gemini V1.2 mitgeliefert bzw. kann bei mir oder Stefan Eissing bezogen werden

2. Nun geht TreeView in die Messageschleife und wartet auf Messages.

TreeView reagiert bei erhalt folgender Messages:

VA PROTOSTATUS: Die Message muß folgenden Aufbau haben:

msg[6+7] = Zeiger auf nullterminierten String wie bei appl find verwendet. msg[3] enthält Bitvektor. Die Bits haben folgende Bedeutung:

Word Bit Applikation kennt Message  Verwendet

 3  0  AV SENDKEY  ⊗
        1  AV ASKFILEFONT  ⊗
        2  AV ASKCONFONT, AV OPENCONSOLE
        3  AV ASKOBJECT
        4  AV OPENWIND  ⊗
        5  AV STARTPROG
        6  AV ACCWINDOPEN, AV ACCWINDCLOSED ⊗
        7  AV STATUS, AV GETSTATUS  ⊗
        8  AV COPY DRAGGED  ⊗

Alle anderen Bits müssen 0 sein. Ebenso müssen msg[4] und msg[5] 0 sein. Durch den Bitvektor wird gewährleistet, daß das ACC weiss, welche Messages die Hauptapplikation kennt und auch nur die Messages abschickt, die von der Hauptapplikation verstanden werden. TreeView schickt daraufhin die Messages AV ASKFILEFONT und AV GETSTATUS an die Hauptapplikation.

VA SETSTATUS: Der vorher mit AV STATUS gesendete Status von TreeView wird wieder eingestellt. In msg[3+4] muß ein Zeiger auf den Status sein. NULL ist erlaubt. Dann wird die Message ignoriert. Im Status speichert TreeView ab, wo das Fenster lag, welcher Pfad angezeigt wurde und ob das Fenster offen war. Das Format des Status ist nicht dokumentiert.

VA START: Mit dieser Message kann TreeView geöffnet werden und gleichzeitig der anzuzeigende Pfad übergeben werden. In msg[3+4] steht ein Zeiger auf den anzuzeigenden Pfad. Ist der Pfad nicht gültig, so öffnet sich das Fenster von TreeView trotzdem mit dem Wurzelverzeichnis des aktuellen Laufwerks.

VA FILEFONT: In msg[3] steht der FontId und in msg[4] die Fonthöhe in Points (wie bei

vst points).

TreeView stellt daraufhin diesen Font für sein Fenster ein. Dies führt zu einem Redraw des Fensters, falls es bereits offen war.

VA WINDOPEN: Wird ignoriert.

VA DRAGACCWIND: Wurde die Maus über einem Ordner losgelassen, so schickt TreeView die Message AV COPY DRAGGED an die Hauptapplikation. msg[3] = Status der Sondertasten (Control, Shift, Alternate, CapsLock), msg[4+5] Zeiger auf String mit Zielpfad. Falls die Maus nicht über einem Ordner losgelassen wurde, so wird VA DRAGACCWIND wie VA START behandelt.

VA COPY COMPLETE: Wird ignoriert.

TreeView schickt folgende Messages bei folgenden Aktionen ab:

AV PROTOKOLL: Bei Start von TreeView und nach jedem empfangenen AC CLOSE.

AV GETSTATUS: Bei Empfang von VA PROTOSTATUS.

AV STATUS: Bei Änderung der Fenstergröße und wenn das Fenster aufgeht oder geschlossen wird.

AV SENDKEY: Wenn das TreeView -Fenster das oberste Fenster ist und eine Taste gedrückt wird, die TreeView nicht benutzt.

AV ASKFILEFONT: Nach Empfang von VA PROTOSTATUS.

AV OPENWIND: Nach Doppelklick auf einen Ordner im TreeView -Fenster oder nach drücken von Ctrl-O bzw. Return wenn ein Ordner im TreeView -Fenster selektiert ist.

AV ACCWINDOPEN: Wenn TreeView sein Fenster geöffnet hat.

AV ACCWINDCLOSE: Wenn das Fenster von TreeView geschlossen wurde.

AV COPY DRAGGED: Wenn VA DRAGACCWIND mit Koordinaten über einem Ordner im TreeView -Fenster empfangen wurde.

10.2 AV-Protokoll Messagenummern

Es folgt eine tabellarische Aufstellung der Messagenummern. Diese Liste ist nicht vollständig. Es sind nur die von TreeView verwendeten Messages aufgenommen. Eine vollständige Auflistung

steht in VAPROTO.H.

Name  Nummer Name  Nummer

 AV PROTOKOLL  0x4700 VA PROTOSTATUS  0x4701
 AV GETSTATUS  0x4703
 AV STATUS  0x4704 VA SETSTATUS  0x4705
 AV SENDKEY  0x4710 VA START  0x4711
 AV ASKFILEFONT  0x4712 VA FILEFONT  0x4713
 AV OPENWIND  0x4720
 AV ACCWINOPEN  0x4724 VA DRAGACCWIND  0x4725
 AV ACCWINDCLOSED 0x4726
 AV COPY DRAGGED 0x4728 VA COPY COMPLETE 0x4729

10.3 Drvmap()

TreeView wertet die Funktion Drvmap() bzw. besser Dsetdrv(Dgetdrv()) bei jedem Öffnen seines Fensters aus. Wird ein neues Laufwerk angemeldet, so muß TreeView einmal geschlossen werden damit TreeView das neue Laufwerk in der Iconleiste anzeigt.

10.4 Patchvariablen

Seit 1.4g gibt es eine kleine Anzahl von Patchvariablen, die es ermöglichen das Verhalten von TreeView teilweise zu beeinflussen. Es folgt nun eine kurze Aufstellung dieser Variablen und was sie bewirken. Falls Patchvariablen verändert werden sollen, so ist dies immer an einer Kopie von TreeView zu machen. Niemals darf das Originalprogramm verändert werden. Es darf auch keine im Patchbereich veränderte Kopie von TreeView weitergegeben werden, da dadurch ja das in dieser Anleitung beschriebene Verhalten von TreeView verändert wird. Patchvariablen sollten auch nur dann verändert werden, wenn man genau weis, was man tut! Der allgemeine Aufbau der Patchvariablen sieht folgendermaßen aus: Erst folgt ein 7 Zeichen langer String, dann ein 0 Byte und anschließend eine 2 Byte lange Zahl (ein int).

10.4.1 GDOSPRT

GDOS Geräteadresse des Druckertreibers. Standardwert: 21. Über diese Patchvariable kann die Druckerausgabe von TreeView auf ein anderes GDOS-Gerät umgeleitet werden.

10.4.2 GDOSMET

GDOS Geräteadresse des Metafiletreibers. Standardwert: 31. Über diese Patchvariable kann die Metafileausgabe von TreeView auf ein anderes GDOS-Gerät umgeleitet werden.

11 Epilog

Für Anregungen, Erfahrungsberichte und Fehlermeldungen bin ich immer dankbar. Auf der ersten Seite können Sie nachlesen, wie ich zu erreichen bin.

Danken möchte ich Stefan Eissing, dem Programmierer von Venus , für die gemeinsame Entwicklung des AV-Protokolls und der Implementierung in Gemini und Venus .

Außerdem möchte ich den vielen Betatestern für das Testen danken. Insbesondere Stefan Hintz, der auch die verrücktesten Sachen ausprobieren muß.

Viel Spaß mit dem Programm.

12 Neu in Version

12.1 V2.2

• Fehler bei zu wenig Speicher behoben.

12.2 V2.1

• Bug mit eingeklapptem Root-Verzeichnis entfernt

• Während des Aufbauens des Verzeichnisses wird der Rechner nicht mehr blockiert

• Scrolling des Fensters im Hintergrund jetzt möglich (langsam)

• Unter MiNT wird der Verzeichnisbaum des universellen Filesystems von Laufwerk U:\ auf Laufwerk C:\ TV MINT.INF abgelegt, da auf Laufwerk U: nicht geschrieben werden kann.

12.3 V2.0

• Support für multitasking fähiges AES eingebaut.

• Patchvariable CONTROL entfernt, da Neueinlesen durch Drücken von Control auch ausgebaut.

• TreeView macht Redraw anstelle von Scrolling, wenn Scrolling erwünscht und Fenster nicht im Vordergrund.

• Bugfix bei symbolischen Links unter MiNT.

• Mehrseitige Metafiles werden korrekt erzeugt.

• Metafileausgabe generell überarbeitet

12.4 V1.9

• Vorbereitung für MultiTasking.

Ist ein Programm namens AVServer geladen, dann werden alle AV-Protokollmeldungen an dieses Programm geschickt. Diese Erweiterung ist notwendig für den Betrieb unter MultiTOS.

12.5 V1.8

• Bei Esc kommt jetzt erst einmal eine Sicherheitsabfrage.

• Die Einfaltungen des Dateibaumes bleiben erhalten, wenn der Dateibaum neu aufgebaut wird und der Dateibaum vorher angezeigt wurde.

12.6 V1.7

• Die Sliderpositionen werden jetzt gespeichert. Allerdings werden die Positionen nur jede Sekunde gespeichert (falls sie sich geändert haben), da sonst die Gefahr besteht, daß die Messagequeue des AES überläuft.

• Die Statusinformationen werden jetzt genauer kontrolliert. Auch bei Senden eines falschen Status sollte TreeView jetzt nicht mehr abschmieren. Das Format der Statusinformationen von TreeView hat sich geändert. Abgesehen davon, daß das Format eh nie dokumentiert wurde und auch nicht wird, kann es passieren, daß Statusinformationen, die von anderen Programmen für TreeView zusammengebastelt wurden, nicht mehr akzeptiert werden.

• Die Angabe der Anzahl der Ordner ist jetzt die tatsächliche Anzahl und nicht mehr die der dargestellten Ordner.

• Selektieren eines Ordners, der von anderen Fenstern teilweise verdeckt wurde, führt nicht mehr dazu, daß dieser Ordner in andere Fenster gemalt wird.

12.7 V1.6

• Nach Drücken von Ctrl-L zeigt ein Punkt hinter dem K, daß in dem Ordner mindestens eine Datei ist.

• Im Info-Dialog steht jetzt das Datum und die Uhrzeit des eingelesenen Dateibaums.

• Diverse kleinere Bugfixes.

12.8 Ältere Versionen

Gekürzte Zusammenfassung.

• Laufwerksauswahl per Tastatur umgestellt auf Keytbl()

• Laufwerksauswahl erweitert bis Z:

• Datum und Uhrzeit des erstellten Verzeichnisbaums wird mit abgespeichert

• Abfrage auf vorhandes GDOS war fehlerhaft

• TreeView trägt sich jetzt sofort im Deskmenü ein.

• Patchvariablen eingeführt.

• Diverse kleinere Bugs entfernt.

• Nach der Metafileausgabe hatte ich vergessen die Fonthöhe zurückzusetzen. Dadurch traten Fehler beim Scrolling auf. Behoben.

• Behandlung von nicht vorhandenen Laufwerken komplett überarbeitet.

• Vorübergehend eingebautes Schliessen des Fensters nach AC CLOSE falls noch vorhanden wieder entfernt.

• Eigene Versionsnummer für INF-Dateien.

• Ctrl-I entfernt wegen Verwendung in Gemini .

• Da wind update, v hide c und v show c jetzt selbst verwaltet werden sollte es keine Probleme mehr mit verschwundenen Mauszeigern in der Menüleiste geben.

• Suchstring kann mittels Delete wieder verkürzt werden.

• Sobald GEMINI es kann, können Icons in die durch TreeView angezeigten Ordner kopiert werden.