AMIGA-Magazin · Ausgabe 7/05 OS4-Programmierung: Docky-Anwendungen

Aktuelles Heft 07/05

Mini-Programme

Dockies sind vielfältig einsetzbar. In diesem Teil des Programmierkurses lernen Sie, wie sich Anwendungen und andere Programme mit einem Docky ausstatten und sich ansteuern lassen.

von Michael Christoph

 

Die Grundlagen zur Programmierung von System-Dockies unter AmigaOS 4 wurde bereits in der letzten Ausgabe behandelt. Diese Elemente ließen sich schon in die AmiDock-Leiste einbinden. In dieser Ausgabe sind die »AppDockies« Thema. Hierbei handelt es sich eigentlich um eine ganz normale Anwendung, die aber gleichzeitig auch in der AmiDock-Leiste verfügbar ist. Docky-Programme können in der AmiDock-Leiste z.B. Statusmeldungen anzeigen oder ein Context-Menü anbieten. Damit kann man etwa ein Einstellfenster eines anderen Programms anzeigen.

Hintergrundinfos zum AppDocky
Ein Problem der bisher besprochenen Dockies ist, dass sie nicht selbst lebensfähig sind. Nur auf Grund der Callbacks von AmiDock sind sie zu Aktionen fähig (z.B. neu zeichnen). Auch ein Einstellungsfenster ist nicht so einfach zu implementieren, da man dies nicht innerhalb vom Context von AmiDock öffnen darf. So ein Fenster würde so lange »eingefroren« werden, bis die Kontrolle wieder abgegeben wird.

Bei den Application-Dockies sieht die Sache dagegen anders aus. Hier wird ein normales Programm geschrieben. Dieses wird dann zusätzlich bei der application.library registriert ­ worauf ein Pseudo-Docky in die AmiDock-Leiste einfügt wird (s. Listing 1).
Hinter dem Aufruf

CreateDockyLibrary

verbirgt sich die Funktion

IExec->CreateLibrary(libCreateTags);

Es sind somit die meisten Tags, Vector-Listen und Funktionen notwendig, wie bei einer gelinkten Library auch. Da es sich hier allerdings um keine öffentliche Bibliothek handelt, kann auf die normalen Library-Funktion wie Open, Close, Expunge und Clone verzichtet werden. Wenn der mehrfache Start eines Programms zugelassen wird, wird jedem Programm seine eigene private Bibliothek zur Verfügung gestellt.

Während die Anwendung im Docky-Modus in einem eigenen Message-Loop läuft, wird die Docky-Komponente weiterhin von AmiDock mit passenden Informationen versorgt und eingebunden. Beide Komponenten laufen also unabhängig voneinander.

Man muss allerdings dazu die geeigneten Kommunikationsmechanismen zwischen Programm und Docky in einen Code einbauen. Im einfachsten Fall reichen dazu aber bereits Signale aus. Dazu gehören z.B. SIGBREAKF_CLTR_C zum Beenden oder auch der Aufruf

Exec->AllocSignal

für zusätzlich reservierte Signale. Ansonsten sind per

IExec->CreateMsgPort

ein privater Message-Port anzulesen und darüber Nachrichten bzw. Daten auszutauschen.

Ein Beispiel
Das Beispielprogramm »Gradient« setzt diese Technik ein. In der Dock-Leiste wird ein rotierender Farbverlauf angezeigt. Beim Anklicken öffnet sich ein Fenster zum Verändern der Farbwerte. Beim Übernehmen ändert sich dann auch der Farbverlauf in der Dock-Leiste. Darüber hinaus kommen hier auch wieder die Prefs-Objekte zum Einsatz. Letztere wurden ebenfalls schon vorgestellt.

Der aktuelle Farbwert wird beim Programmende vermerkt, um nach einem Rechnerneustart mit diesen fortzufahren. Im Gegensatz zu den Standard-Dockies werden die AppDockies nicht automatisch in AmiDock eingebunden, da es sich ja um eigenständige Programme handelt.

Application-SDK und Sourcen

Leider ist das SDK zur application.library immer noch nicht für die Öffentlichkeit freigegeben. Es ist aber angedacht, dieses mit dem nächsten Beta-Release-Update zur Verfügung zu stellen. Erst in Verbindung mit diesem SDK sind die hier vorgestellten Beispielsourcen übersetzbar.
Der Sourcecode von Gradient ist auf zwei Sourcecode-Dateien aufgeteilt. In »GradientDocky.c« sind alle Funktionen zu finden, die den Library-Teil betreffen. Dieser Teil steht mit AmiDock in Verbindung und wird auch in der Dock-Leiste angezeigt. Alles was in »GradientPrg.c« zu finden ist, ist das normale Anwendungs-Programm mit dem Farbeinsteller und dem Prefs-Objekt mit einer Read- und Write-Funktion. Abgerundet wird alles mit einem fertigen »Makefile«, wodurch sich das Programm einfach mittels "make" aus der Shell übersetzen lässt.

Falls dies gewünscht wird, müsste man das Programm einfach in den WBStartup-Ordner der System-Partition verschieben.

Hinweis: Berücksichtigen Sie noch beim Einsatz des WB-Startup-Ordners, dass AmiDock eine höhere Priorität bekommt als die Docky-Anwendung. AmiDock startet beim Hochfahren des Systems eher.

Viele Einsatzgebiete sind für die Dockies denkbar: Programme wie eine einfachen Zeitanzeige oder auch eine grafische Mondphasenuhr sind nur zwei Ideen. Es kann aber auch eine Stoppuhr sein oder komplexe Programme wie Notizbücher. So wäre zum Beispiel auch ein Terminplaner vorstellbar, der in der Dock-Leiste bevorstehende Termine anzeigt und beim Anklicken ein Fenster öffnet, in dem der Anwender die Termine erfassen und bearbeiten darf.

In der nächsten Ausgabe wird dann das Thema »Debugging« groß geschrieben. Im Zusammenhang mit dem GrimReaper ergeben sich hier einfache Möglichkeiten, um eigene Programmfehler aufzuspüren.

lb

In Aktion:
Das Gradient-AppDocky startet die Auswahl der Farben und ist am unterstrichenen Namen zu erkennen.

 

Listingübersicht

Listing 1: Das erste Application-Docky

Listing 2: Der Message-Loop
Listing 3: Pseudo-MsgLoop der Docky-Komponente

 

 


Download:enthält:
Download GradientProg : Programm in die AmiDock-Leiste einbinden
os4prog-13-appdocky-src.lha,
47.359 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.