home *** CD-ROM | disk | FTP | other *** search
-
- HotKeyHelp
- ==========
-
- Das Programm HotKeyHelp ist zuständig für den Aufruf eines
- HotHelp-Fensters über einen HotKey. Das Programm installiert dazu einen
- Input-Handler, der alle Tastatureingaben abfängt und überprüft. Ggf.
- wird dann das Hauptprogramm benachrichtigt, das dann ein (ab Version 3.00
- asynchrones) HotHelp-Fenster öffnet.
-
- Ab Version 3.00 bietet HotKeyHelp darüber hinaus noch ein
- ARexx-Interface an, über das beliebige Programme auf der ARexx-Ebene auf
- HotHelp-Funktionen zugreifen können. Außerdem stellt HotKeyHelp selber
- auch noch einige ARexx-Funktionen zur Verfügung.
-
- Weiterhin bietet HotKeyHelp ab Version 3.00 auch die sog.
- Online-Projekte an - diese müssen nicht extra durch HotHelpComp übersetzt
- werden; statt dessen holt sich HotKeyHelp auf einen HotKey hin den
- aktuellen Textblock eines Editors, übersetzt diesen und speichert ihn in
- einem Unterverzeichnis in 'HOTHELP:OnlineProjekte' ab. Für jedes einzelne
- Online-Projekt existiert dort ein eigenes Verzeichnis. Eine Übersicht
- über alle Schlüssel wird in der Datei 'HOTHELP:OPRIndex' festgehalten,
- damit nicht bei jedem Neustart alle Unterverzeichnisse nach
- Schlüssel-Dateien durchsucht werden müssen. Wird nun später ein
- entsprechender Schlüssel-Begriff in einem HotHelp-Fenster angefordert,
- liefert HotKeyHelp über einen HotHelpHandler den vorher abgespeicherten
- Text, so daß dieser dargestellt werden kann - that's the whole stuff!
-
- Die Library selber stellt nur das recht allgemeingültige Werkzeug der
- HotHelp-Handler zur Verfügung; alle anderen Aktionen zur Verwaltung der
- Online-Projekte werden von HotKeyHelp durchgeführt! Es ist daher
- natürlich auch nicht möglich, über Library-Funktionen Einfluß auf
- Online-Projekte zu nehmen - die Library selber weiß schließlich gar nichts
- von diesen Projekten! Um diesem Problem abzuhelfen, bietet das Programm
- HotKeyHelp jedoch einige Möglichkeiten.
-
-
- Schnittstellen
- ==============
-
- HotKeyHelp besitzt ab Version 3.00 vier verschiedene Schnittstellen, um
- mit der Außenwelt in Kommunikation zu treten. Schnittstelle 1 ist die
- wohl gebräuchlichste: das User-Interface. Der Anwender kann über HotKeys
- das Programm ansprechen, es mit einigen Parametern starten und auch wieder
- beenden.
-
- Als zweite Schnittstelle kann ab OS 2.0 das Commodities-System
- verwendet werden. HotKeyHelp meldet sich als Commodity an und kann
- folglich auch über das System-Programm 'Exchange' kontrolliert werden.
- (zugegebenermaßen verhält sich HotKeyHelp zwar wie ein Commodity, arbeitet
- aber intern über einen simplen InputHandler, um auch unter OS 1.3 noch
- laufähig zu sein. Vorteile einer zweigleisigen Programmierung
- [Input-Handler unter 1.3, Commodity-Objekte unter 2.0] sind nicht
- ersichtlich).
-
- Als dritte Schnittstelle dient der ARexx-Port des Programms, der in der
- entsprechenden Datei ausführlich beschrieben wird.
-
- Die vierte (und am besten versteckte) Schnittstelle ist ein globaler
- Port mit dem Namen "HotKeyHelp's Port". Über diesen Port läuft
- normalerweise nur die Kommunikation zwischen HotKeyHelp und den übrigen
- HotHelp-Tools ab; es ist jedoch auch durchaus möglich, den Port für eigene
- Zwecke zu verwenden. Aber Vorsicht: wer hierüber kommuniziert, sollte
- wissen, was er tut - HotKeyHelp nimmt keinerlei Fehler-Überprüfung vor,
- sondern geht davon aus, daß die ankommenden Nachrichten korrekt formuliert
- sind. Es wird zwar garantiert, daß die beschriebenen Nachrichten auch in
- späteren Versionen dieselben Bedeutungen haben - andere Nachrichten dürfen
- aber auf keinen Fall verwendet werden! Es müssen die üblichen
- Vorsichtsmaßnahmen beachtet werden, wenn Nachrichten an einen fremden Port
- geschickt werden.
-
- An den Port müssen IntuiMessages verschickt werden, die der Einfachkeit
- halber mit (mehr oder minder zweckentfremdeten) IDCMP_-Kennungen in der
- 'Class'-Variablen versehen werden. Nachdem eine Message verarbeitet
- wurde, wird sie von HotKeyHelp über 'ReplyMsg ()' wieder zurückgeschickt.
- Im Folgenden nun eine Übersicht über alle unterstützten Kennungen und die
- zugehörigen Aktionen.
-
-
- IDCMP_CLOSEWINDOW
- -----------------
-
- HotKeyHelp wird beendet. Falls die 'IAddress'-Variable der verwendeten
- IntuiMessage-Struktur anschließend einen Wert != NULL beinhaltet, muß der
- Wert an 'UnLoadSeg ()' übergeben werden - es handelt sich um die SegListe
- des HotHelpHandlers, die auf diesem Weg zurückgegeben wird.
-
-
- IDCMP_NEWPREFS
- --------------
-
- Die HotHelp-Preferences haben sich geändert, so daß HotKeyHelp sich von
- der Library eine neue Kopie von deren internen Einstellungen besorgen muß.
-
-
- IDCMP_GADGETDOWN
- ----------------
-
- Auf diese Nachricht hin legt HotKeyHelp eine Übersicht über alle
- Online-Projekte an. Das Programm geht dabei genauso vor wie die Funktion
- 'HH_ProjectList ()': Es wird eine Liste aus HH_Project-Strukturen
- gebildet. 'IAddress' der verwendeten IntuiMessage muß dazu die Adresse
- einer bereits korrekt initialisierten List-Struktur beinhalten; die Nodes
- mit den Namen werden am Listenende angehängt und müssen vom Aufrufer
- selber wieder freigegeben werden. Genauere Hinweise finden Sie bei der
- Beschreibung der 'HH_ProjectList ()'-Funktion. Die Elemente 'version' und
- 'text_file' der Strukturen werden nicht verwendet. Im Gegensatz zur
- Funktion sind diese Projekte nicht unbedingt alphabetisch sortiert.
-
- Wenn das Element 'Code' der IntuiMessage-Struktur nach Rückgabe der
- Nachricht einen Wert ungleich 0 enthält, ist ein Fehler aufgetreten
- (Speicherplatzmangel). HotKeyHelp hat dies bereits über einen Requester
- dem Benutzer mitgeteilt (zumindest hat es das versucht; ob der Req bei
- Speicherplatzmangel auch aufgeht, ist dann wieder eine ganz andere
- Frage...).
-
-
- IDCMP_GADGETUP
- --------------
-
- Auf diese Nachricht hin legt HotKeyHelp eine Übersicht über alle
- Schlüssel eines bestimmten Online-Projektes an. Das Programm geht dabei
- so vor wie die Funktion 'HH_KeyList ()': Es wird eine Liste aus
- HH_Key-Strukturen gebildet. 'IAddress' der verwendeten IntuiMessage muß
- dazu die Adresse einer bereits korrekt initialisierten List-Struktur
- beinhalten; die Nodes mit den Namen werden alphabetisch sortiert am
- Listenende angehängt und müssen vom Aufrufer selber wieder freigegeben
- werden. 'IDCMPWindow' muß auf einen String zeigen, der den Namen des
- gewünschten Online-Projektes beinhaltet. Je nach den Einstellungen in
- HotHelpPref wird die Groß-/Kleinschreibung des Namens beachtet oder
- ignoriert. Genauere Hinweise finden Sie bei der Beschreibung der
- 'HH_KeyList ()'-Funktion.
-
- Wenn das Element 'Code' der IntuiMessage-Struktur nach Rückgabe der
- Nachricht einen Wert != 0 enthält, ist ein Fehler aufgetreten. Ein Wert
- von 1 kennzeichnet Speicherplatzmangel (wird von HotKeyHelp selber
- angezeigt), ein Wert von 2 das Nicht-Auffinden des gewünschten Projektes.
-
-
- IDCMP_DISKINSERTED
- ------------------
-
- Diese Nachricht bringt HotKeyHelp dazu, ein komplettes Online-Projekt
- zu löschen. Dazu muß in 'IAddress' ein Zeiger auf einen String mit dem
- Projekt-Namen übergeben werden. HotKeyHelp führt daraufhin die folgenden
- Aktionen durch: Löschen aller Schlüssel-Dateien im entsprechenden
- Verzeichnis, Löschen des Verzeichnis selber, Entfernen des Projektes aus
- der internen Liste und Abspeichern dieser gekürzten Liste.
-
-
- IDCMP_DISKREMOVED
- -----------------
-
- Diese Nachricht bewirkt das Löschen eines einzelnen Schlüssels.
- 'IAddress' muß auf einen String mit dem Namen des Projektes zeigen, in dem
- der Schlüssel liegt, während 'IDCMPWindow' auf einen String mit dem Namen
- des Schlüssels selber zeigt. HotKeyHelp löscht die Schlüssel-Datei,
- entfernt den Schlüssel aus der Liste und speichert diese wieder ab.
-
- ACHTUNG: Der Schlüssel 'Startseite' darf niemals entfernt werden, da
- ihm eine besondere Bedeutung zukommt!
-
-
- IDCMP_REQSET
- ------------
-
- Dieses Kommando gibt einem Projekt einen neuen Namen. 'IAddress' muß
- auf einen String mit dem aktuellen Namen des Projektes zeigen,
- 'IDCMPWidnow' auf einen String mit dem neuen Namen. Dieser darf nicht
- länger als 30 Zeichen sein (inkl. '\0') und darf weder ':' noch '/'
- enthalten.
-
-
- IDCMP_REQCLEAR
- --------------
-
- Mit Hilfe dieses Kommandos kann ein Schlüssel innerhalb eines Projektes
- einen neuen Namen erhalten. Es ist nicht möglich, einen Schlüssel in ein
- anderes Projekt zu verlegen! 'IAddress' muß den bisherigen
- Schlüssel-Begriff beinhalten, 'IDCMPWindow' den neuen Namen. Der Name des
- Projektes, in dem der Schlüssel sich befindet, geht aus dem String hervor,
- auf den 'SpecialLink' zeigen muß.
-
- ACHTUNG: Der Schlüssel 'Startseite' darf niemals umbenannt werden, da
- ihm eine besondere Bedeutung zukommt!
-
-
-