Photoshop Scripting – Barra de progreso de actualización en una window

Quiero mostrar una barra de progreso para uno de mis scripts de Photoshop. Si trabajo dentro de un button, click evento, entonces puedo actualizar la barra de progreso sin ningún problema.

Para este script, no se requiere interacción del usuario. Quiero: – Mostrar la window – Actualizar la barra de progreso a medida que se realiza el trabajo – Cerrar la window

var win = new Window("dialog{text:'Progress',bounds:[100,100,400,150],\ bar:Progressbar{bounds:[20,20,280,31] , value:0,maxvalue:100}};"); win.show(); for(...){ //do work here //update progress win.bar.value = ...; } win.close(); 

El problema es, win.show(); bloques hasta que el usuario cierra la window. También intenté agregar un controller onClose luego cerrar la window de inmediato, pero la window no aparece.

¿Alguna idea sobre cómo puedo hacer que funcione una barra de progreso?

El dialog class de dialog es un cuadro de dialog MODAL y requiere que lo cierre antes de que la ejecución continúe.

Use la window class para crear una window sin locking:

 var win = new Window("window{text:'Progress',bounds:[100,100,400,150],bar:Progressbar{bounds:[20,20,280,31] , value:0,maxvalue:100}};"); win.show(); for(...){ //do work here //update progress win.bar.value = ...; } win.close(); 

Sin embargo, te encontrarás con el siguiente problema aquí. Dependiendo de lo que esté haciendo en el ciclo, photoshop no actualizará la UI lo suficientemente rápido como para ver que se mueve la barra de progreso. Aquí es donde me quedé atrapado: /

He corrido hacia el fragment de WaitForRedraw una vez, ¿y tal vez hará que ps vuelva a dibujar la IU? No tienes time para verificarlo, solo una idea.

 function WaitForRedraw(){ var eventWait = charIDToTypeID("Wait") var enumRedrawComplete = charIDToTypeID("RdCm") var typeState = charIDToTypeID("Stte") var keyState = charIDToTypeID("Stte") var desc = new ActionDescriptor() desc.putEnumerated(keyState, typeState, enumRedrawComplete) executeAction(eventWait, desc, DialogModes.NO) } 

Es posible que desee considerar el uso de app.refresh () o waitForRedraw (). Hay un window.update (), pero no parece resolver este problema para mí.

Aquí está la fuente: http://www.davidebarranca.com/2012/10/scriptui-window-in-photoshop-palette-vs-dialog/

    Intereting Posts