TreeView (c) 1990,91 by Stephan Gerle Stephan Gerle Version 1.8 22.10.1991 Dies ist die Anleitung zu TreeView Version 1.8. Sie wurde erstellt mit LaTEX. TreeView wurde entwickelt mit Turbo C fr den Atari ST. Fr 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. Inhaltsverzeichnis 1 Was ist TreeView 2 Nutzungsbedingungen 3 Bedienung 3.1 Start als PRG 3.2 Start als ACC 3.3 Aufruf von TreeView 3.4 Grafische Darstellung 3.5 M”gliche Aktionen im Fenster 3.6 Tastaturkommandos 4 Besonderheiten mit Gemini 5 Andere Programme 6 Ausgabe 6.1 Drucken 6.2 Metafile 6.3 ASSIGN.SYS 7 Probleme mit anderen Programmen 8 Fehler 9 Grenzen 10 Programmtechnisches 10.1 AV-Protokoll 10.2 AV-Protokoll Messagenummern 10.3 Drvmap() 10.4 Patchvariablen 11 Epilog 12 Neu in Version 12.1 V1.8 12.2 V1.7 12.3 V1.6 12.4 Žltere Versionen 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. (dafr ben”tigen Sie eine Gemini in der Version 1.2 oder h”her). 2 Nutzungsbedingungen TreeView ist nicht Public Domain! TreeView darf aber zusammen mit diesem Text beliebig oft und fr jeden kopiert werden. Dabei drfen das Programm als auch der Text nicht modifiziert werden. TreeView darf nicht kommerziell verkauft werden. Dies schliesst auch sogenannte PD Versender aus, die mehr als den Diskettenpreis fr eine Kopie verlangen. Falls TreeView regelm„ssig 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. 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. Andernfalls stellt sofort den Verzeichnisbaum dar. 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 gltiger Pfad angegeben, so wird der Verzeichnisbaum von dem aktuellen Laufwerk ab dem Wurzelverzeichnis dargestellt. 3.2 Start als ACC Wenn Sie TreeView als ACC benutzen wollen, so muss 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 (siehe auch Ctrl-S). 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 fr 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 gegenber dem Vaterverzeichnis nach rechts eingerckt. Die Verzeichnisse sind untereinander mit Strichen verbunden. Werden die Gr”ssenangaben (siehe Ctrl-L) mit angezeigt, so stehen die Gr”ssen der Verzeichnisse in Kilobyte direkt vor dem Namen des Verzeichnisses. Die Kreise vor einem Verzeichniseintrag geben an, ob die vorhandenen Unterverzeichnisse dargestellt werden. (+) (Kreuz im Kreis) bedeutet, die Unterverzeichnisse sind sichtbar. (-) (waagerechter Strich im Kreis) 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 fhrt 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 (Vektorgrafikformat mit der Endung .GEM, dieser Dateityp wird von verschiedenen Grafikprogrammen untersttzt) drucken oder die Aktion abbrechen m”chte. Klickt man auf ein Laufwerk's-Icon, so wird der Verzeichnisbaum des angeklickten Laufwerks 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 anschliessend 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 (frher 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. Ctrl-L: Wechselt die Anzeige von TreeView. Nach dem ersten Mal drcken wird zu jedem Verzeichniseintrag noch angegeben, wieviel Kilobytes von dem Verzeichnis belegt wird. Nach nochmaligem Drcken von Ctrl-L verschwindet diese Anzeige wieder. Die Gr”sse des Verzeichnisses errechnet sich aus der Gr”sse der in dem Verzeichnis stehenden Dateien plus der Gr”sse 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 gedrckt wird. Ansonsten wird der abgespeicherte Verzeichnisbaum von der Platte geladen. Dies hat den Vorteil, dass 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 natrlich nichts. In diesem Fall muss mittels Gedrckthalten von CTRL der Verzeichnisbaum neu erstellt 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 TreeView verlassen. Sonst wird dieser Tastendruck an die Hauptapplikation gesendet (bewirkt bei Gemini das Beenden von Gemini!). Ctrl-D: Bewirkt das Schliessen des Fensters. Falls TreeView als PRG gestartet wurde, wird damit TreeView auch beendet. Ctrl-U: Wie Ctrl-D. Return und Ctrl-O: Sendet den angeklickten Pfad an die Hauptapplikation (entspricht Open). Alle Tasten mit ASCII-Code gr”sser 32 und kleiner 127 ausser ':' und '\': Diese Tasten werden in einem Suchstring zusammengefasst 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..P: Das durch den Buchstaben angegebene Laufwerk (falls vorhanden) wird angezeigt. Tab: Wenn ein Ordner selektiert ist, so wird ohne drcken von Shift der n„chste Ordner und mit Shift der vorherige Ordner selektiert. Alle anderen Tastendrcke 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 (dies funktioniert schon ab Gemini V1.1). Die Accessories werden dabei natrlich 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 fr 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 (diese M”glichkeit ist in Gemini V1.2 noch nicht implementiert). 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. 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. Jedes Programm, welches dieses Protokoll untersttzt, wird damit auch von TreeView untersttzt. Fr das Protokoll wird bei Gemini V1.2 eine Headerdatei mit Defines fr die Protokollnummern mitgeliefert. Fr Accessories gibt es von mir eine kleine Library, die fr die Untersttzung des AV-Protokolls 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”sse vorliegt (z.B. doppelte Gr”sse). Hat man in Gemini fr die Dateifenster einen Font eingestellt, der fr 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 zurck, 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 zurck und damit wrde alles auf eine Zeile zusammengequetscht. Deshalb geht TreeView folgendermassen vor: Existiert der ausgew„hlte Font nicht, so wird frdie Fonth”he 16 und die Fontbreite 8 Pixel gew„hlt. 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 Fr 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 muss im ASSIGN.SYS fr 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 muss mindestens ein Zeichensatz fr den Druckertreiber im ASSIGN.SYS eingetragen sein. Ebenso muss unter der Ger„tenummer 31 der Treiber META.SYS im ASSIGN.SYS eingetragen sein, damit mit TreeView die Metafileausgabe genutzt werden kann. Fr diesen Ger„tetreiber muss kein Zeichensatz eingetragen 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 Sollten Probleme beim Drucken auftreten, so bitte ich um genauere Angaben zu den verwendeten Druckertreibern (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 weiss, wenn man mit TreeView ausdrucken will. Das liegt daran, dass TreeView einen v_clrwk()-Aufruf auf die Druckerworkstation ausfhrt 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, sodass die Texte meist zu gross dargestellt werden. Die einzigen mir bekannten Programme, die die Metafiles korrekt anzeigen sind SciGraph sowie 1st Guide. 8 Fehler Alle mir bekannten Fehler sind aus dem Programm entfernt worden. Trotzdem ist es m”glich,das noch Fehler in TreeView sind. Sollte die Verwendung von TreeView zu irgendwelchen Sch„den fhren, so kann ich dafr keine Verantwortung bernehmen. Aus programmtechnischer Sicht ist es allerdings ziemlich unm”glich daž die Verwendung von TreeView zu irgendwelchen Datenverlusten auf einem Massenspeicher fhren 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 fr Programmierer interessant, die TreeView von ihrem Programm aus aufrufen wollen. Der normale Anwender kann diese Kapitelberspringen. 10.1 AV-Protokoll In TreeView ist das AV-Protokoll implementiert. Das AV-Protokoll ist ein eventorientiertes Protokoll, welches es erm”glicht, daž die Hauptapplikation und Accessories sich gegenseitig Dienste anbieten. Die Kommunikation des Accessories mit der Hauptapplikation geschiehtber das Messagesystemdes 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 (wird mit Gemini V1.2 mitgeliefert bzw. kann bei mir oder Stefan Eissing bezogen werden) nachlesen. Untenstehende Erkl„rung benutzt teilweise C-Notation. TreeView geht beim Programmstart als ACC nun folgendermassen 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. 2. Nun geht TreeView in die Messageschleife und wartet auf Messages. TreeView reagiert bei erhalt folgender Messages: VA_PROTOSTATUS: Die Message muss 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 x 1 AV_ASKFILEFONT x 2 AV_ASKCONFONT, AV_OPENCONSOLE 3 AV_ASKOBJECT 4 AV_OPENWIND x 5 AV_STARTPROG 6 AV_ACCWINDOPEN, AV_ACCWINDCLOSED x 7 AV_STATUS, AV_GETSTATUS x 8 AV_COPY_DRAGGED x Alle anderen Bits mssen 0 sein. Ebenso mssen msg[4] und msg[5] 0 sein. Durch den Bitvektor wird gew„hrleistet, dass 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] muss 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 gltig, 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 fr sein Fenster ein. Dies fhrt zu einem Redraw des Fensters, falls es bereits offen war. VA_WINDOPEN: Wird ignoriert. VA_DRAGACCWIND: Wurde die Mausu"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 "Anderung der Fenstergr”sse und wenn das Fenster aufgeht oder geschlossen wird. AV_SENDKEY: Wenn das TreeView-Fenster das oberste Fenster ist und eine Taste gedrckt wird, die TreeView nicht benutzt. AV_ASKFILEFONT: Nach Empfang von VA_PROTOSTATUS. AV_OPENWIND: Nach Doppelklick auf einen Ordner im TreeView-Fenster oder nach drcken 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 Auflistungsteht 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() bei jedem ™ffnen seines Fensters aus. Wird ein neues Laufwerk angemeldet, so muss 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 weiter- gegeben 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. 10.4.3 CONTROL Standardwert: 4. Diese Patchvariable dient als Maske fr die Rckgabe von Kbshift(-1). Ist das Ergebnis ungleich 0, so wird beim Einlesen des Verzeichnisbaums auf jeden Fall der Verzeichnisbaum neu erstellt. Ein eventuell vorhandenes TREEVIEW.INF wird dann ignoriert. 11 Epilog Fr 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, fr die gemeinsame Entwicklung des AV-Protokolls und der Implementierung in Gemini und Venus. Ausserdem m”chte ich den vielen Betatestern fr das Testen danken. Insbesondere Stefan Hintz, der auch die verrcktesten Sachen ausprobieren muss. Viel Spass mit dem Programm. 12 Neu in Version 12.1 V1.8 o Bei Esc kommt jetzt erst einmal eine Sicherheitsabfrage. o Die Einfaltungen des Dateibaumes bleiben erhalten, wenn der Dateibaum neu aufgebaut wird und der Dateibaum vorher angezeigt wurde. 12.2 V1.7 o 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. o 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 fr TreeView zusammengebastelt wurden, nicht mehr akzeptiert werden. o Die Angabe der Anzahl der Ordner ist jetzt die tats„chliche Anzahl und nicht mehr die der dargestellten Ordner. o Selektieren eines Ordners, der von anderen Fenstern teilweise verdeckt wurde, fhrt nicht mehr dazu, daž dieser Ordner in andere Fenster gemalt wird. 12.3 V1.6 o Nach Drcken von Ctrl-L zeigt ein Punkt hinter dem K, daž in dem Ordner mindestens eine Datei ist. o Im Info-Dialog steht jetzt das Datum und die Uhrzeit des eingelesenen Dateibaums. o Diverse kleinere Bugfixes. 12.4 Žltere Versionen Gekrzte Zusammenfassung. o Laufwerksauswahl per Tastatur umgestellt auf Keytbl() o Laufwerksauswahl erweitert bis Z: o Datum und Uhrzeit des erstellten Verzeichnisbaums wird mit abgespeichert o Abfrage auf vorhandes GDOS war fehlerhaft o TreeView tr„gt sich jetzt sofort im Deskmen ein. o Patchvariablen eingefhrt. o Diverse kleinere Bugs entfernt. o Nach der Metafileausgabe hatte ich vergessen die Fonth”he zurck- zusetzen. Dadurch traten Fehler beim Scrolling auf. Behoben. o Behandlung von nicht vorhandenen Laufwerken komplett berarbeitet. o Vorbergehend eingebautes schliessen des Fensters nach AC_CLOSE falls noch vorhanden wieder entfernt. o Eigene Versionnummer fr INF-Dateien o Ctrl-I entfernt wegen Verwendung in Gemini . o Da wind_update, v_hide_c und v_show_c jetzt selbst verwaltet werden, sollte es keine Probleme mehr mit verschwundenen Mauszeigern in der Menleiste geben. o Suchstring kann mittels Delete wieder verkrzt werden. o Sobald GEMINI es kann, k”nnen Icons in die durch TreeView angezeigten Ordner kopiert werden.