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).
|
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
|
»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.
|
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
© 2002 All Rights Reserved. Alle Rechte vorbehalten Franzis'
Verlag GmbH Kommentare, Fragen, Korrekturen und Kritik bitte an Webmaster
AMIGA schicken.
Zuletzt aktualisiert am 23. 5. 2002.