Die Toolbar »AmiDock« besitzt Plug-Ins
die heißen Docky bzw. Dockies. Damit lassen sich statische und dynamische
(animierte) Inhalte innerhalb von AmiDock darstellen. Grundsätzlich
gibt es zwei verschiedene Arten von Dockies: Herkömmliche Dockies und
AppDockies.
Dockies
im Einsatz
Ein normales Docky ist wie eine Library zu programmieren. Wie das geht,
wurde in der Vergangenheit bereits gezeigt. Alternativ lässt sich
aber auch wieder das Beispiel als Grundgerüst verwenden. Bei den
Dockies kommt auch die Clone-Funktion zum Einsatz bzw. sie muss programmiert
werden (Listing 1).
Des Weiteren gibt es noch drei spezielle Funktionen zur Kommunikation
mit der application.library bzw. der AmiDock-Leiste:
DockyGet: Daten werden vom Docky erfragt.
DockySet: Daten und Signale werden an das Dock-Element übergeben.
DockyProcess: Rückfragen an AmiDock stellen.
Beispiel-Code zu den drei Docky-Funktionen finden Sie in Listing
3.
Auf Grund der synchronen Arbeitsweise von AmiDock müssen diese Funktionen
möglichst schnell abgearbeitet werden. Erst danach kann sich AmiDock
wieder um Benutzeraktionen kümmern oder andere Dockies ansteuern.
Eine Erklärung der wichtigsten Anweisungen ist im folgenden Kapitel
»Initialisierungssequenz« zu finden.
Initialisierungssequenz
Die Im Kasten »Übersicht Initialisation« sehen Sie die
Initialisierungsphase von Dockies. AmiDock schickt abwechselnd Get- und
Set-Anforderungen, die vom Programm mit TRUE zu beantworten sind, wenn
sie verarbeitet werden. Ist das nicht der Fall, wird der Wert FALSE zurückgegeben.
In Klammern angegeben sind die möglichen Tags bzw. Strukturen, die
zum Datenaustausch bei den Schritten verwendet werden.
Durch die Debug-Ausgaben in »Test.docky« (finden Sie auf
der nächsten Heft-CD) lässt sich verfolgen, wann welches Kommando
übermittelt wird. Dieses Programmbeispiel kann auch als Grundgerüst
für eigene Versuche dienen und leicht ausgebaut werden.
Beachtet werden muss, dass der AutoInit-Code im Zusammenhang mit Libraries
nicht verwendet werden kann. Zusätzlich benötigte Libraries
müssen also selber von Hand geöffnet werden. Diese Operation
wird am besten in der LibInit-Funktion ausgeführt, da diese nur einmal
durchlaufen wird. Auch die dos.library muss an dieser Stelle geöffnet
werden (s. Listing 2).
Diese reinen Dockies werden von AmiDock vermerkt und auch nach einem
Rechner-Neustart wieder automatisch in die Dock-Leiste eingefügt.
In der nächsten Ausgabe stellen wir Ihnen dann die Application-Dockies
vor.
lb
Übersicht Initialisation |
1. DockyGet(DOCKYGET_DockyVersion,
...);
Abfrage der Docky-Version (uint32). Zurückgeliefert
werden muss der Define DOCKYVERSION aus libraries/docky.h. |
8. DockySet(DOCKYSET_DockOrientationChange,
...);
Information über Änderungen der Dock-Leiste,
hier speziell der Ausrichtung (struct DockyDockState *).
|
2. DockySet(DOCKYSET_DockyFileName,
...);
(STRPTR) |
9. DockyGet(DOCKYGET_InvisibleProcess,
...);
Soll ein sichtbarer Eintrag im AmiDock vorhanden sein? |
3. DockySet(DOCKYSET_DockyAttention,
...);
(struct DockyAttention *) |
10. DockyGet(DOCKYGET_Notifications,
...);
Welche Änderungen sollen mitgeteilt werden (uint32)? |
4. DockySet(DOCKYSET_DockyPrefs,
...);
Informationen über das Prefs-Objekt, mit dem sich
eigene Einstellungen verwalten lassen (struct PrefsObject
*). |
11. DockyGet(DOCKYGET_FrameDelay,
...);
Abfrage in welcher Geschwindigkeit die Docky-Anzeige aktualisiert
werden soll. Je kleiner der Wert ist, desto öfter
erfolgt eine Aktualisierung (bei 1 jede 50stel Sekunde).
Bei -1 als Antwort erfolgt keine Aktualisierung der Anzeige
(statische Anzeige, z.B. Icon).
Für die Zukunft sind Erweiterungen vorgesehen: |
5. DockySet(DOCKYSET_Screen,
...);
Informationen über den Bildschirm, in dem sich die
Dock-Leiste befindet (struct Screen *). |
12. DockyGet(DOCKYGET_RenderMode,
...);
Abfrage welcher Zeichenmodus gewünscht wird. Grundsätzlich
kann zwischen einer RGB-Bitmap (in unterschiedlichen Formaten)
und einem Rastport gewählt werden (Tags DOCKYRENDERMODE_xxx). |
6. DockySet(DOCKYSET_Window,
...);
Infos über das AmiDock-Fenster (struct Window *).
|
13. DockyGet(DOCKYGET_GetSize,
...);
Abfrage der gewünschten Größe für
das Docky (struct DockySize *). |
7. DockySet(DOCKYSET_DockTypeChange,
...);
Änderung im Docky z.B. auf Grund neuer Icons
usw. (struct DockyDockType *). |
14. DockyGet(DOCKYSET_RenderDestination,
...);
Informationen über den Zeichenbereich. Verwendet
wird entweder eine RGB-Bitmap oder ein RastPort-Zeiger
(struct DockyRenderDestination *). |
|
|
|
|
Unterschiede: Verschiedene Elemente können in die Ami-Dock-Leiste eingebunden werden:
1: Normale Anwendung,
2: Docky-Programm.
3: Application Docky,
4: Sub-Docky
|
|