home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Computer Club Elmshorn Atari PD
/
CCE_PD.iso
/
pc
/
0600
/
CCE_0645.ZIP
/
CCE_0645
/
TREEVW18
/
TREEVIEW.TXT
< prev
Wrap
Text File
|
1991-10-22
|
31KB
|
707 lines
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 für den Atari ST.
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.
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. (dafür 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 für jeden kopiert werden. Dabei dürfen 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 für 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 gültiger 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 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ö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 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 (Vektorgrafikformat mit der Endung .GEM,
dieser Dateityp wird von verschiedenen Grafikprogrammen unterstützt)
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 (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.
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ö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
gedrückt 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 natürlich nichts. In diesem Fall muss
mittels Gedrückthalten 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 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 (dies funktioniert schon ab
Gemini V1.1). 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 (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 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-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 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
folgendermassen vor: Existiert der ausgewählte Font nicht, so wird fürdie
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
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 muss 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 muss mindestens ein Zeichensatz für
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. Für 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 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, 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 führen, so
kann ich dafür keine Verantwortung übernehmen. Aus programmtechnischer
Sicht ist es allerdings ziemlich unmöglich daß 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, daß die
Hauptapplikation und Accessories sich gegenseitig Dienste anbieten. Die
Kommunikation des Accessories mit der Hauptapplikation geschiehtüber 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 müssen 0 sein. Ebenso müssen 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 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 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 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 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 für die Rückgabe 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
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.
Ausserdem möchte ich den vielen Betatestern für das Testen danken.
Insbesondere Stefan Hintz, der auch die verrücktesten 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 für 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, führt nicht mehr dazu, daß dieser Ordner in andere Fenster
gemalt wird.
12.3 V1.6
o Nach Drücken 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
Gekürzte 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 eingeführt.
o Diverse kleinere Bugs entfernt.
o Nach der Metafileausgabe hatte ich vergessen die Fonthöhe zurück-
zusetzen. Dadurch traten Fehler beim Scrolling auf. Behoben.
o Behandlung von nicht vorhandenen Laufwerken komplett überarbeitet.
o Vorübergehend eingebautes schliessen des Fensters nach AC_CLOSE
falls noch vorhanden wieder entfernt.
o Eigene Versionnummer für 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 Menüleiste geben.
o Suchstring kann mittels Delete wieder verkürzt werden.
o Sobald GEMINI es kann, können Icons in die durch TreeView
angezeigten Ordner kopiert werden.