[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt Funktionierender Progressbar unter MacOS

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Print/Bildbearbeitung - Photos, Layout, Design
Themen
Beiträge
Moderatoren
Letzter Beitrag

Funktionierender Progressbar unter MacOS

flobuc
Beiträge gesamt: 246

13. Dez 2011, 12:00
Beitrag # 1 von 15
Bewertung:
(7332 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo zusammen,

ich hab schon die verschiedensten Progressbars getestet und keinen gefunden der unter MacOS funktioniert.

Das Problem ist die Bildschirmaktualisierung unter MacOS. MacOS ist so langsam das der Progressbar immer bei 1% stehen bleibt und sich kein Stückchen bewegt. Unter Windows läuft er richtig durch.

Hat jemand von euch einen Progressbar der auch unter MacOS funktioniert?

Gruss

Flo
X

Funktionierender Progressbar unter MacOS

Hans Haesler
  
Beiträge gesamt: 5826

13. Dez 2011, 12:20
Beitrag # 2 von 15
Beitrag ID: #486220
Bewertung:
(7316 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Flo,

im JavaScript FarbSkala ist ein Fortschrittsbalken eingebaut.

Zu finden hier: http://www.fachhefte.ch / Links "JavaScripts", "Mac OS X deutsch", "InDesign CS2" bis "InDesign CS5".

Zum Ausprobieren: Kein Dokument offen, das Script starten, die Einstellungen im Dialog unverändert lassen. Ausser: Ganz unten den Radiobutton "Ein Fortschrittsbalken" aktivieren. "OK" klicken.

Gruss, Hans


als Antwort auf: [#486218]

Funktionierender Progressbar unter MacOS

flobuc
Beiträge gesamt: 246

13. Dez 2011, 12:43
Beitrag # 3 von 15
Beitrag ID: #486224
Bewertung:
(7300 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans,

vielen Dank für den Link.

Leider habe ich diese Art von Progressbar schon getestet.
Dieser funktioniert auch nicht wenn es um schnelle und viele Aktualisierungen geht (in meinem Fall z.B. 1600 kurze Aktionen).
Der Mac kommt da mit der Aktualisierung nicht mit.
Gibt es da irgendeinen Trick eine Bildschirmaktualisierung zu erzwingen?

Gruss

Flo


als Antwort auf: [#486220]

Funktionierender Progressbar unter MacOS

WernerPerplies
Beiträge gesamt: 2762

13. Dez 2011, 13:03
Beitrag # 4 von 15
Beitrag ID: #486226
Bewertung:
(7278 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Flo,

Zitat Dieser funktioniert auch nicht wenn es um schnelle und viele Aktualisierungen geht (in meinem Fall z.B. 1600 kurze Aktionen).


Warum willst Du 1600x aktualisieren, das bremst doch Dein Skript unnötig aus, wie wäre es z. B. mit jedem 100x oder 10x?


als Antwort auf: [#486224]

Funktionierender Progressbar unter MacOS

Gerald Singelmann
  
Beiträge gesamt: 6269

13. Dez 2011, 13:13
Beitrag # 5 von 15
Beitrag ID: #486228
Bewertung:
(7274 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Das
Code
#target indesign 
#targetengine "pbar"
main();

function main() {
var w = new Window( "palette" );
var pb = w.add("progressbar", [undefined, undefined, 400, 20] );
pb.value = 0;
pb.minvalue = 0;
pb.maxvalue = 5000;
pb.visible = true;

w.show();
for (var n = 0; n < 5000; n++) {
pb.value = n;
$.sleep(1);
}
w.close();
}

erzeugt auf dem Mac das (siehe Anhang)


als Antwort auf: [#486226]
(Dieser Beitrag wurde von Gerald Singelmann am 13. Dez 2011, 13:15 geändert)

Anhang:
ISUHD18.f4v (139 KB)

Funktionierender Progressbar unter MacOS

flobuc
Beiträge gesamt: 246

13. Dez 2011, 13:21
Beitrag # 6 von 15
Beitrag ID: #486231
Bewertung:
(7264 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Werner,

in der Progressbar-Variante die auch der Hans vorgeschlagen hat ist ein Timer eingestellt, der die Aktualisierung verzögert.
Wie oft ich die Aktualisierung an den Progressbar schicke spielt also keine Rolle.

Gruss

Flo


als Antwort auf: [#486226]

Funktionierender Progressbar unter MacOS

flobuc
Beiträge gesamt: 246

13. Dez 2011, 13:29
Beitrag # 7 von 15
Beitrag ID: #486232
Bewertung:
(7251 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Herr Singelmann,

auch diese Variante hab ich schon getestet.
Aber unter Last (nicht nur sleep) bewegt sich dieser Progressbar ebenfalls nicht. Der Mac aktualisiert einfach nicht.
Man müsste die Skriptverarbeitung irgendwie anhalten können um dem Progressbar Zeit für die Aktualisierung zu geben.

Gruss

Flo


als Antwort auf: [#486228]

Funktionierender Progressbar unter MacOS

Gerald Singelmann
  
Beiträge gesamt: 6269

13. Dez 2011, 13:38
Beitrag # 8 von 15
Beitrag ID: #486234
Bewertung:
(7237 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Das hier
Code
#target indesign 
#targetengine "pbar"
main();

function main() {
var w = new Window( "palette" );
var pb = w.add("progressbar", [undefined, undefined, 400, 20] );
pb.value = 0;
pb.minvalue = 0;
pb.maxvalue = 90000;
pb.visible = true;

w.show();
var x;
for (var n = 0; n < 90000; n++) {
pb.value = n;
x = Math.pow(Math.sqrt( n )*Math.sqrt( n ), 3);
}
w.close();
}

funktioniert auch problemlos.

Ich vermute, dass Ihr Problem nicht direkt beim progressbar liegt und weitere Hilfe unmöglich ist, wenn man keine Details kennt.
Es sei denn der Vorschlag von Werner Perplies...


als Antwort auf: [#486232]

Funktionierender Progressbar unter MacOS

WernerPerplies
Beiträge gesamt: 2762

13. Dez 2011, 14:05
Beitrag # 9 von 15
Beitrag ID: #486236
Bewertung:
(7203 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Flo,

unabhängig von Deinem Problem, bleibt mein Einwand gültig, zu viele Update sind unnötig und bremsen das Skript (und auch das System) unnötig aus.

Zu Deinem Problem:

Vielleicht hiflt dieser Beitrag:
Keine Aktualisierung progressbar in Startup Script auf MAC

Unter Windows gibt es damit allerdings ein unerträgliches Zucken des Windows (Panels).


als Antwort auf: [#486231]

Funktionierender Progressbar unter MacOS

flobuc
Beiträge gesamt: 246

13. Dez 2011, 15:50
Beitrag # 10 von 15
Beitrag ID: #486248
Bewertung:
(7172 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Singelmann,

der Fehler tritt nur dann auf wenn Sie in Ihrem Skript irgendwas ausführen, dass eine Dokument-Aktualisierung nach sich zieht (z.B Text einfügen, löschen oder Bilder einfügen).
Wenn die Dokument-Darstellung und der Progressbar gleichzeitig aktualisiert werden müssen, dann zieht der Progressbar den kürzeren und wird nicht aktualisiert.
Die Math-Operationen haben keine Auswirkung auf die Dokument-Darstellung deshalb läuft hier auch der Progressbar ohne Probleme, da er ja die einzige zu aktualisierende GUI ist.

Ich hab jetzt eine Lösung gefunden.
In dem von Herrn Perplies erwähnten Thread, wird eine "update()"-Methode auf das Windows-Objekt des Progressbars benutzt. Diese Methode funktioniert bei mir auch.

Leider weiss ich nicht, warum ich diese Methode nicht im Objektmodell-Viewer finden kann?? Ist das ein undocumented-feature?

Gruss

Florian


als Antwort auf: [#486234]

Funktionierender Progressbar unter MacOS

WernerPerplies
Beiträge gesamt: 2762

13. Dez 2011, 16:11
Beitrag # 11 von 15
Beitrag ID: #486250
Bewertung:
(7161 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Flo,

Zitat Leider weiss ich nicht, warum ich diese Methode nicht im Objektmodell-Viewer finden kann?? Ist das ein undocumented-feature?


Nö, wohl dokumentiert! -> Schau mal in den JavaScript Tools Guide.


als Antwort auf: [#486248]

Funktionierender Progressbar unter MacOS

Gerald Singelmann
  
Beiträge gesamt: 6269

13. Dez 2011, 16:20
Beitrag # 12 von 15
Beitrag ID: #486252
Bewertung:
(7155 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo buc,

Das hier läuft auch ohne Probleme:
Code
#target indesign 
#targetengine "pbar"
main();

function main() {
var doc = app.documents.add();
var frame = doc.textFrames.add();
frame.geometricBounds = [0,0,210,297];
frame.textFramePreferences.textColumnCount = 7;
var story = frame.parentStory;

var w = new Window( "palette" );
var pb = w.add("progressbar", [undefined, undefined, 400, 20] );
pb.value = 0;
pb.minvalue = 0;
pb.maxvalue = 1000;
pb.visible = true;

app.scriptPreferences.enableRedraw = true;

w.show();
var x,y;
for (var n = 0; n < 1000; n++) {
pb.value = n;
// x = Math.pow(Math.sqrt( n )*Math.sqrt( n ), 3);
story.insertionPoints.lastItem().contents = n.toString() + " ";
x = Math.random()*50;
y = Math.random()*50;
frame.move( [x, y] );
}
w.close();
}


Wenn man allerdings das Redraw ausschaltet, aktualisiert sich auch der Progressbar nicht.

ScriptUI ist kein Teil von InDesign und hat daher einen eigenen Bereich im OMV.


als Antwort auf: [#486248]

Funktionierender Progressbar unter MacOS

flobuc
Beiträge gesamt: 246

13. Dez 2011, 16:30
Beitrag # 13 von 15
Beitrag ID: #486254
Bewertung:
(7144 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Herr Singelmann,

das Redraw ist bei mir schon eingeschaltet, aber die Funktionen die Sie da aufrufen sind jetzt wirklich noch kein Problem für InDesign.
Ich hab hier Dokumente aus dem Mengensatz wo InDesign wirklich zu knabbern hat und dann wird es auch mit dem Progressbar schwierig.

Antwort auf: ScriptUI ist kein Teil von InDesign und hat daher einen eigenen Bereich im OMV.

Echt? Bei mir schon. Aber die Methode "update()" kann ich nicht finden.

Gruss

Flo


als Antwort auf: [#486252]

Funktionierender Progressbar unter MacOS

Uwe Laubender
Beiträge gesamt: 5318

13. Dez 2011, 17:41
Beitrag # 14 von 15
Beitrag ID: #486266
Bewertung:
(7090 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo, Flo!
Die Methode windowObj.update() ist wirklich NUR im JavaScript Tools Guide-PDF (CS4 auf Seite 114 oder CS5 auf Seite 121) von Adobe enthalten.

Im OMV des ESTKs (3.6.0.2 ExtendScript 4.1.28 ScriptUI 5.1.43) habe ich sie nicht entdecken können (siehe Screenshot); auch nicht in der Dokumentation (Datei: "scriptui.chm") von Jongware.

Zitat von JavaScript Tools Guide CS5.pdf
windowObj.update()

Allows a script to run a long operation (such as copying a large file) and update UI elements to show the status of the operation.

Normally, drawing updates to UI elements occur during idle periods, when the application is not doing anything and the OS event queue is being processed, but during a long scripted operation, the normal event loop is not running. Use this method to perform the necessary synchronous drawing updates, and also process certain mouse and keyboard events in order to allow a user to cancel the current operation (by clicking a Cancel button, for instance).
During the update() operation, the application is put into a modal state, so that it does not handle any events that would activate a different window, or give focus to a control outside the window being updated. The modal state allows drawing events for controls in other windows to occur (as is the case during a modal show() operation), so that the script does not prevent the update of other parts of the application's UI while in the operation loop.

It is an error to call the update() method for a window that is not currently visible.


Der letzte Satz des Zitats war in der CS4-Dokumentation nicht enthalten und wurde offenbar für CS5 ergänzt.


als Antwort auf: [#486254]
Anhang:
OMV_Window_ScriptUI_ESTK_3.6.0.2.png (71.8 KB)

Funktionierender Progressbar unter MacOS

flobuc
Beiträge gesamt: 246

14. Dez 2011, 08:22
Beitrag # 15 von 15
Beitrag ID: #486291
Bewertung:
(7019 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Uwe,

danke fürs nachschauen. Dann bin ich ja doch nicht so blind wie ich dachte :-)

Gruss

Flo


als Antwort auf: [#486266]
X