Estoy trabajando en un script de Photoshop que contiene una GUI para recopilar información. Esta es la primera vez que uso Script UI y me encuentro con 2 problemas que no estoy seguro de cómo abordar.
Mi código es el siguiente:
#target photoshop
var isDone, sTID, waitForRedraw, win, windowResource;
windowResource = "palette";
win = new Window(windowResource);
var oldInputGroup = win.add("group");
oldInputGroup.add("statictext", undefined, "Search for");
var oText = oldInputGroup.add("edittext", undefined, "Search for");
oText.characters = 25;
oText.active = true;
var newInputGroup = win.add("group");
newInputGroup.add("statictext", undefined, "Replace with");
var nText = newInputGroup.add("edittext", undefined, "Replace with");
nText.characters = 25;
nText.active = false;
var caseCheck = win.add("checkbox", undefined, "Case Sensitive?");
var bottomGroup = win.add("group");
var btnOK = bottomGroup.add("button", undefined, "OK");
var btnCancel = bottomGroup.add("button", undefined, "Cancel");
main();
En principal tengo:
isDone = false;
win.onClose = function(){
return isDone = true;
};
btnOK.onClick = function(){
dataEntry = getInfo();
return isDone = true;
};
btnCancel.onClick = function(){
return isDone = true;
};
win.show();
while (isDone === false) {
try{
app.refresh();
} catch(e){
isDone = true;
};
}
//getInfo collects data from the window
//then my script does its thing
Si mi suposición es correcta, esto tiene más que ver con las cosas generales del sistema operativo y/o el comportamiento de Photoshop, en lugar de solo los diálogos de scriptui. Creo que tienes dos opciones.
Convierte esa segunda pantalla en tu pantalla principal en Mac System Preferences > Displays > Arrangement
arrastrando la barra blanca de una de las pantallas a la otra.
Active "La pantalla tiene espacios separados" en mac System Preferences > Mission control
> Displays have separate spaces
casilla de verificación.
Creo que ya lo tiene activado, pero cuando tenga la aplicación en la pantalla/espacio que desee, haga clic con el botón derecho en el icono de la aplicación en el muelle y, a continuación, elija la Options
pantalla Assing to:
que Desktop on screen 2
sea. Estoy sacando la redacción de la memoria, pero si eso no es exacto, de todos modos se explica por sí mismo una vez que lo ves.
Yo mismo he notado algunas rarezas con esto, donde la ubicación de la ventana dentro de la pantalla está un poco mal. Eso no es un problema para la mayoría de las ventanas, como la ventana de preferencias de PS, porque simplemente puede moverlas y la próxima vez que abra esa ventana, se abrirá en la misma ubicación.
Desafortunadamente, los diálogos de scriptui no retienen la última ubicación (¿a menos que lo haga cumplir tal vez?). Recuerdo haber tenido este problema con los cuadros de diálogo que no tienen una ubicación establecida, por lo que, por defecto/normalmente, estarían centrados en la pantalla, pero a veces simplemente insisten en abrazar el lado derecho de la pantalla cada vez que abro un cuadro de diálogo. No estoy seguro de si establecer una ubicación estática ayudaría con ese problema. Pero al menos comprarán en la pantalla secundaria.
Hay una cosa más a considerar. Para algunas personas, esta configuración de "Las pantallas tienen espacios separados" es una especie de compensación. Obtiene la barra de menú en cada pantalla, fondos separados, los espacios de pantalla completa están separados para cada pantalla y puede resolver problemas de ubicación de ventanas como este, pero tal como lo indica el nombre de la configuración, cada pantalla tiene sus propios espacios. Esto no es necesariamente una gran cosa y en realidad puede ser bastante útil, pero muchos están acostumbrados al valor predeterminado donde todas las pantallas comparten el mismo espacio en todo momento.
Si desea los otros beneficios de esta configuración pero realmente no le importan los espacios separados, puede usar TotalSpaces para sincronizarlos, esencialmente asegurándose de que cada pantalla esté en el mismo número de espacio en todo momento. Tiene una casilla de verificación Preferences > Layout
llamada Sync spaces
, que solo es visible cuando la opción "Las pantallas tienen espacios separados" está activada.
¿Tiene alguna razón en particular por la que desea usar a palette
y no a dialog
? Encuentro paletas muy inestables en Photoshop, pero supongo que has leído sobre esto.
Como mencionó Joonas, de forma predeterminada, las ventanas de scriptui no retienen la posición, pero puede configurar win.location
desde win.onShow
el evento y guardar la ubicación al cerrar el panel ( win.onClose
) para uso futuro
palette
y no dialog
, pero no recuerdo cuál fue esa razón. Intentaré ajustar mi código para ver si eso ayuda a resolver el problema (1), pero... ...eso hace que el problema 2 sea aún más difícil. Si el cuadro de diálogo se abre en un monitor diferente y no puede usar el resto de la aplicación, puedo entender que el resto de mi equipo no sepa por qué su Photoshop está congelado (si no pueden encontrar la ventana de diálogo, entonces efectivamente he congelado su aplicación).dialog
parece haber solucionado el problema de enfoque. Desafortunadamente, actualizar la propiedad win.location no soluciona el problema del monitor. Sin embargo, esta parece ser la solución ideal por ahora.
ryan caminante
Joonas
ryan caminante
dialog
lo que debería ayudar al problema del enfoque. Estoy empezando a pensar que está en lo cierto cuando dice que es posible que no haya una manera de solucionar este problema del monitor desde el script.Joonas
Joonas
sergey kritsky
Joonas
ryan caminante