Ich arbeite an einem Photoshop-Skript, das eine GUI zum Sammeln von Informationen enthält. Dies ist das erste Mal, dass ich die Skript-Benutzeroberfläche verwende, und ich stoße auf zwei Probleme, bei denen ich nicht sicher bin, wie ich sie angehen soll.
Mein Code ist wie folgt:
#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();
Im Wesentlichen habe ich:
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
Wenn meine Vermutung richtig ist, hat dies mehr mit allgemeinen Betriebssystemen und / oder Photoshop-Verhalten zu tun als nur mit Skriptui-Dialogen. Ich glaube, du hast zwei Möglichkeiten.
Machen Sie diesen zweiten Bildschirm zu Ihrem Hauptbildschirm in Mac, System Preferences > Displays > Arrangement
indem Sie den weißen Balken auf einem der Displays auf das andere ziehen.
Aktivieren Sie "Anzeige hat separate Leerzeichen" in Mac System Preferences > Mission control
> Displays have separate spaces
Kontrollkästchen.
Ich glaube, Sie haben das bereits aktiviert, aber wenn Sie die Anwendung auf dem gewünschten Bildschirm / Bereich haben, klicken Sie mit der rechten Maustaste auf das App-Symbol im Dock und wählen Sie unten oder Options
den Bildschirm aus. Ich ziehe den Wortlaut aus dem Gedächtnis, aber wenn das nicht korrekt ist, ist es sowieso ziemlich selbsterklärend, sobald Sie es sehen.Assing to:
Desktop on screen 2
Ich habe selbst eine Seltsamkeit dabei bemerkt, wo die Fensterplatzierung innerhalb des Bildschirms irgendwie falsch ist. Das ist für die meisten Fenster, wie zum Beispiel das PS-Einstellungsfenster, kein Problem, da Sie sie einfach verschieben können und das nächste Mal, wenn Sie dieses Fenster öffnen, es an derselben Stelle geöffnet wird.
Leider behalten Scriptui-Dialoge die letzte Position nicht bei (es sei denn, Sie erzwingen das vielleicht?). Ich erinnere mich, dass ich dieses Problem mit Dialogen hatte, die keinen festen Ort haben, also würden sie standardmäßig/normalerweise auf dem Bildschirm zentriert sein, aber manchmal bestehen sie einfach darauf, jedes Mal, wenn ich einen Dialog öffne, die rechte Seite des Bildschirms zu umarmen. Ich bin mir nicht sicher, ob das Festlegen eines statischen Speicherorts bei diesem Problem helfen würde. Aber zumindest werden sie auf dem sekundären Bildschirm einkaufen.
Es gibt noch eine Sache zu beachten. Für einige Leute ist diese Einstellung "Displays haben separate Leerzeichen" eine Art Kompromiss. Sie erhalten die Menüleiste auf jedem Bildschirm, separate Hintergründe, Vollbildbereiche sind für jeden Bildschirm separat und Sie können Probleme mit der Fensterposition wie folgt lösen, aber genau wie der Name der Einstellung andeutet, hat jeder Bildschirm seine eigenen Bereiche. Dies ist nicht unbedingt eine große Sache und kann tatsächlich ziemlich praktisch sein, aber viele sind an die Standardeinstellung gewöhnt, bei der alle Bildschirme zu jeder Zeit den gleichen Platz teilen.
Wenn Sie die anderen Vorteile dieser Einstellung nutzen möchten, sich aber nicht wirklich für die separaten Bereiche interessieren, können Sie TotalSpaces verwenden , um sie zu synchronisieren, wodurch im Wesentlichen sichergestellt wird, dass sich jeder Bildschirm jederzeit auf derselben Bereichsnummer befindet. Es hat ein Kontrollkästchen Preferences > Layout
namens Sync spaces
, das nur sichtbar ist, wenn "Anzeigen haben separate Leerzeichen" aktiviert ist.
Haben Sie einen bestimmten Grund, warum Sie a palette
und nicht a verwenden möchten dialog
? Ich finde Paletten in Photoshop sehr instabil, aber ich denke, Sie haben darüber gelesen.
Wie Joonas erwähnte, behalten Scriptui-Fenster standardmäßig ihre Position nicht bei, aber Sie können win.location
vom win.onShow
Ereignis aus festlegen und den Ort beim Schließen des Fensters ( win.onClose
) für die zukünftige Verwendung speichern
palette
und nicht, dialog
aber ich erinnere mich nicht, was dieser Grund war. Ich werde versuchen, meinen Code anzupassen, um zu sehen, ob das hilft, Problem (1) zu lösen, aber... ...das macht Problem 2 noch schwieriger. Wenn der Dialog auf einem anderen Monitor geöffnet wird und Sie den Rest der Anwendung nicht verwenden können, kann ich verstehen, dass der Rest meines Teams nicht weiß, warum ihr Photoshop eingefroren ist (wenn sie das Dialogfenster nicht finden können, dann effektiv ich haben ihre Bewerbung eingefroren).dialog
scheint das Fokusproblem behoben zu haben. Leider behebt das Aktualisieren der Eigenschaft win.location das Monitorproblem nicht. Dies scheint jedoch vorerst die ideale Lösung zu sein.
Ryan Walker
Joonas
Ryan Walker
dialog
dem, was dem Fokusproblem helfen sollte. Ich fange an zu glauben, dass Sie an etwas dran sind, wenn Sie sagen, dass es möglicherweise keine Möglichkeit gibt, dieses Monitorproblem aus dem Skript heraus zu beheben.Joonas
Joonas
Sergej Kritsky
Joonas
Ryan Walker