Liebe Kollegen,
für die Steuerung von Prozessen eines Hotfolders verfolgte ich zunächst einen Ansatz über einen idleTask und einem angehängten Eventlistener wie ihn Uwe in seinem Diskussionsbeitrag zu
Interaktives Panel dargestellt hat (Danke schön, Uwe, für das schöne Beispiel).
idleTask: eigenwillig
========================
Nun stellt sich in der Praxis unter InDesign CS6 und CC 2014 heraus, dass der idleTask etwas eigenwillig und mehr oder weniger unvorhersehbar agiert:
Beim ersten Ablegen von Daten im beobachteten Hotfolder werden diese sofort abgearbeitet.
Beim nächsten Ablegen kommt fast der Verdacht auf, die Beobachtung funktioniere nicht mehr. Und dann kommt überraschend doch wieder Schwung rein und die Daten werden wie erhofft und erwartet abgearbeitet.
Nach meinen Beobachtungen ist dieser Prozess zu beschleunigen, indem man InDesign den Fokus gibt.
Insgesamt wirkt dieser Ansatz aber nicht so zuverlässig.
Palette (nicht-modales Fenster)
========================
Diese Schwächen suche ich nun über die Verlagerung der Steuerung der Prozesse in eine Palette (nicht-modales Fenster) zu umgehen.
Die
Palette ist bestückt mit den Buttons
Start = Starten des Beobachtungsprozesses mit Verarbeitungsroutinen
Stop = Stoppen des Beobachtungsprozesses
Exit = Stoppen des Beobachtungsprozesses, Schließen der Palette, Beendigung des Skripts
In einem StaticText-Feld wird der aktuelle Status angezeigt.
Nun habe ich aber das Problem, dass solange der durch
Start in Gang gesetzte Beobachtungsprozess mit Verarbeitungsroutinen läuft, die Palette praktisch eingefroren ist und Zugriffe (wie auch die Auswertung von Klicks auf die Buttons) auf die Palette nicht mehr möglich sind. Ohne eine Notbremse läuft in der reservierten targetengine eine Endlosschleife.
Eine mögliche Notbremse: Ablegen einer Steuerungsdatei (z.B. stop.txt) in den Hotfolder, bei deren Erkennung der Beobachtungs- und Verarbeitungsprozess beendet wird.
Parallele targetengines?
========================
Eine weiterer Idee: ergänzend zur targetengine, in der die Beobachtungs- und Verarbeitungsprozesse laufen, eine davon unabhängige targetengine für das Dialogfenster (Palette) einzurichten.
Ist dies möglich?
Wenn ja, wie?
Eine einfache Angabe einer targetengine "dialog" am Anfang der Funktion für den Dialog funktioniert nicht.
Vielleicht gibt es noch einen ganz anderen Tipp?