AMIGA-Magazin · Ausgabe 6/05 OS4-Programmierung: Docky-Elemente

Aktuelles Heft 06/05

Angedockt

Mit »AmiDock« existiert ein sehr flexibles Toolbar-System für den Amiga. Darüber lassen sich nicht nur Programme starten, sondern auch Tools direkt einbinden. Wir zeigen wie es geht.

von Michael Christoph

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

 

Listingübersicht

Listing 1: Definition einer Docky-Struktur

Listing 2: Das Handling der Dos-Library
Listing 3: Die Docky-Funktionen


Download:enthält:
Download Test.docky : Testumgebung und Grundgerüst für Dockies
DatumUhr.docky : Anwendungsbeispiel einer Digitaluhr
os4prog-12-docky_src.lha,
200.966 bytes


Hauptseite © 2005 All Rights Reserved. Alle Rechte vorbehalten Franzis' Verlag GmbH
Veröffentlichung und Vervielfältigung nur mit schriftlicher Genehmigung des Verlags

Kommentare, Fragen, Korrekturen und Kritik bitte an Webmaster AMIGA schicken.
Zuletzt aktualisiert am 23. Juli 2005, Michael Christoph.