AMIGA-Magazin · Ausgabe 7/02 · Workbench-Tool: AutoUpdateWB

Aktuelles Heft 7/02


Einfach immer aktuell

Sie haben eine Datei geändert, und die Workbench bekommt von all dem wieder mal nichts mit? Oder sie liest den Schubladeninhalt nicht automatisch ein? Sie wünschen sich, dass dies alles ohne Klicks geht? Dann fehlt ihnen das Tool »AutoUpdateWB«.

von Martin Steigerwald

Die Workbench von AmigaOS wurde mit AmigaOS 3.5 und AmigaOS 3.9 behutsam erweitert und verbessert. Eine der größten Erweiterungen ist dabei wohl die Möglichkeit des asynchronen Kopierens und Löschens von Dateien via einem externen Programm wie »ASyncWB«, das mit »AmigaOS 3.9 Boing Bag 1« mitgeliefert wird.

Dabei übernimmt nicht die Workbench selbst das Kopieren der Dateien, sondern das externe Programm. Workbench und das externe Programm, wie z.B. ASyncWB, kommunizieren nach einem festgelegten Protokoll. Prinzipiell kann man auch selbst ein Programm schreiben, das wie ASyncWB arbeitet. Wie das geht, kann man dem Developer-Kit zu AmigaOS 3.9 entnehmen (NDK 3.9).

AutoUpdateWB:
Das unscheinbare Tool macht die tägliche Arbeit mit der Workbench wesentlich angenehmer.

Wenn man asynchron Dateien kopiert, möchte man natürlich auch den aktuellen Fortschritt der Operation nicht nur in einem Fortschrittsfenster, wie zum Beispiel das ReAction-Fenster von ASyncWB, sondern am liebsten auch in den Fenstern der Workbench selbst angezeigt bekommen. Dazu teilt nun ASyncWB oder ein anderes externes Programm der Workbench mit, welche Objekte es bereits kopiert oder gelöscht hat.

Sag mir, was ist neu!
Die Funktion UpdateWorkbench(), um der Workbench Änderungen mitzuteilen, können natürlich auch andere Programme nutzen. Wenn ein Programm eine Datei mit Piktogramm abspeichert oder ein Verzeichnis mit Piktogramm anlegt, erfährt die Workbench in der Regel automatisch davon. Aber auch für Dateien und Verzeichnisse ohne Piktogramme kann der Programmierer die Workbench informieren.

Zur Zeit machen jedoch kaum Programme davon Gebrauch. Diese Funktion ist erst seit Veröffentlichung des NDK für AmigaOS 3.9 dokumentiert und das ist erst einige Monate her. Selbst einige AmigaOS-Programme wie »UnArc« verwenden diese Funktion nicht, wie man leicht nachvollziehen kann, wenn man mit UnArc ein Archiv in eine Schublade entpackt, die gerade von der Workbench angezeigt wird. Die Workbench merkt nichts von all der Aktivität. Mit »AutoUpdateWB« wird dies anders (s. »Doch bemerkt«). Dazu gleich mehr.

Ich schau selbst
Für das Problem, dass die Workbench in der Regel recht wenig davon mitbekommt, ob andere Programme Dateien und Verzeichnisse anlegen, ändern oder löschen, gibt es zwei Lösungsansätze. Einer ist nicht wirklich nutzbar und der andere recht brauchbar, erfordert aber kleine Veränderungen an der »dos.library« ­ der Funktionsbibliothek für AmigaDOS.

Die Workbench selbst bietet die Möglichkeit, sich zu informieren, was sich in den von ihr dargestellten Schubladen bzw. Verzeichnissen ändert. Diese Möglichkeit ist nicht über den Workbench-Einsteller erreichbar, jedoch über das Tool »WBCtrl« von Stephan Rupprecht:

WBCtrl DN

Software-Quellen im Internet
AutoUpdateWB AmiNet: util/wb/AutoUpdateWB.lha
IconAppearer AmiNet: util/wb/IconAppearer.lha
WBCtrl www.stephan-rupprecht.de

»DN« ist dabei die Abkürzung für »DRAWERNOTIFICATION«. Und genau das macht die Workbench: Sie fordert AmigaDOS auf, sie über Änderungen in jedem der von ihr angezeigten Verzeichnisse zu informieren. Und genau das macht auch AmigaDOS, jedoch relativ pauschal: Hat sich in einem Verzeichnis etwas geändert, informiert AmigaDOS die Workbench darüber.

Jedoch schweigt sich die »dos.library« tunlichst darüber aus, welche Dateien/ Verzeichnisse sich denn genau in dem Verzeichnis verändert haben. Und so bleibt der Workbench nicht viel anderes übrig, als das ganze Verzeichnis neu einzulesen. Und so wird das ganze Feature relativ unbrauchbar sobald in kurzen Abständen Veränderungen erfolgen, da die Workbench nur noch dabei ist, das Verzeichnis zu lesen. Und das Einlesen eines Verzeichnisses inklusive Piktogrammpositionierung, die selbst im Textmodus stattfindet, weil der Benutzer ja später auf Piktogramm-Sichtweise umschalten könnte, geht bei der Workbench bekanntlich nicht sehr schnell vonstatten. Schalten Sie dieses Feature einfach mal probeweise an! Sobald Sie genug davon haben, können Sie sich dann die zweite Alternative anschauen.

AmigaDOS ausgehorcht
»AutoUpdateWB« von Elena Novaretti und Massimo Tantignone ist inspiriert von dem Tool »IconAppearer«, das für die Workbench bis zu AmigaOS 3.1 eine ähnliche, jedoch auf Dateien mit Piktogrammen beschränkte Funktion bietet. Dieses Tool nutzte eine private Funktion der Workbench und funktioniert mit der Workbench ab AmigaOS 3.5 nicht mehr.

AutoUpdateWB informiert die Workbench detailliert über die Änderungen, die in den von ihr geöffneten Verzeichnissen stattfinden (s. »Doch bemerkt«). Doch wie erfährt AutoUpdateWB davon?

Die Autoren von AutoUpdateWB haben sich gedacht, wenn AmigaDOS die gewünschten Informationen nicht herausrückt, dann helfen wir etwas nach: AutoUpdateWB patcht dazu einige Funktionen der »dos.library«, um zu erfahren, ob eine Datei erzeugt oder geändert wurde. Nur durch diese Patches ist AutoUpdateWB in der Lage diese Information wirklich für eine einzelne Datei und nicht nur für ein ganzes Verzeichnis zu erhalten. Im Prinzip kann man AmigaDOS auch beauftragen, nur eine Datei zu überwachen, doch müsste man dies dann für jede Datei in einem Verzeichnis tun, was nicht praktikabel ist. Zudem würde man immer noch nichts davon erfahren, wenn eine neue Datei angelegt wird. Wenn man jedoch AmigaDOS beauftragt, ein komplettes Verzeichnis zu überwachen, teilt AmigaDOS nicht mit, was genau in einem Verzeichnis verändert wurde. Es ist dann notwendig, das Verzeichnis neu einzulesen, um dies zu erfahren.

Auch AutoUpdateWB hat (systembedingt) einige Nachteile und Einschränkungen: Das Tool versucht festzustellen, ob wirklich eine Veränderung stattfindet oder die Datei nur gelesen wird. Die Anzeige wird wirklich nur aktualisiert, wenn das notwendig ist.

Doch bemerkt:
AutoUpdateWB informiert die Workbench über alle Änderungen in der von ihr dargestellten Schublade.

Zudem ist die UpdateWorkbench()-Funktion nicht ganz perfekt: Es ist z.B. nicht möglich, der Workbench in einem Schritt mitzuteilen, dass ein Objekt umbenannt wurde. Stattdessen muss es zuerst von der Anzeige entfernt und dann wieder neu hinzugefügt werden. Außerdem werden ausgelagerte Piktogramme wieder zurückgelegt, wenn die UpdateWorkbench()-Funktion verwendet wird. Dies passiert z.B. auch, wenn man mit dem ReAction-Piktogramminfo-Fenster (RAWBInfo) z.B. die Merkmale eines ausgelagerten Piktogramms ändert und die Änderungen dann speichert. Es verschwindet einfach von der Workbench wieder in seine Schublade.

AutoUpdateWB kann die Workbench ganz schön beschäftigen, wenn es innerhalb von kurzer Zeit viele Änderungen in einer Schublade gibt. Das passiert z.B., wenn man mit einem Tool, das viele Dateien gleichzeitig umbenennen kann, alle Dateien in einer von der Workbench dargestellten Schublade auf einmal umbenennt. Die Workbench bekommt nun von AutoUpdateWB für jede einzelne Datei eine Update-Meldung und aktualisiert dementsprechend die Anzeige. Diese flackert dann erheblich und oft hilft nur, das betreffende Fenster der Workbench einfach zu schließen und ein paar Momente später wieder zu öffnen, um die Aktualisierungsarbeit zu beenden.

Hier wäre es sinnvoll, wenn man der Workbench alle Update-Meldungen auf einmal schicken könnte. Evtentuell ließe sich auch ab einer bestimmten Anzahl von Dateien die Workbench anweisen, dann doch die gesamte Schublade einfach neu einzulesen.

Fazit: AutoUpdateWB ist im Workbench-Alltag ungemein praktisch. Wer es einmal installiert hat, möchte es nicht mehr missen. Nicht zu vergessen ist jedoch, dass es sich letztlich um einen Patch handelt, der mit zukünftigen AmigaOS-Versionen möglicherweise nicht mehr korrekt funktionieren wird. Bleibt zu hoffen, dass die Workbench einer neuen AmigaOS-Version einen solchen Patch überflüssig macht, indem sie von vorneherein erkennt, was sich ändert. Dazu ist sinnvoll, das AmigaDOS selbst behutsam erweitert wird, um Änderungen in einem Verzeichnis detailliert mitzuteilen.

lb


Hauptseite © 2002 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. 5. 2002.