[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt ScriptUI Beispiel mit interaktiver Liste

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

ScriptUI Beispiel mit interaktiver Liste

Gerald Singelmann
  
Beiträge gesamt: 6269

4. Mai 2010, 11:50
Beitrag # 1 von 18
Bewertung:
(5345 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Nur als Info, da wir hier in letzter Zeit ein paar Interessenten hatten, die mehr über Dialoge in InDesign wissen wollten...

Ich habe eben einen einfachen ScriptUI-Dialog geschrieben, der manchem vielleicht den Weg ebnen kann.
Feedback auf der Seite dort oder hier wird gern genommen ;)
X

ScriptUI Beispiel mit interaktiver Liste

chris33
Beiträge gesamt: 189

4. Mai 2010, 15:25
Beitrag # 2 von 18
Beitrag ID: #441096
Bewertung:
(5316 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Danke, das ist hilfreich, trotzdem mich das eher Illustrator mäßig interessiert.
Darf ich dazu hier eine Frage stellen?
new Window("palette");
krieg ich nicht zum laufen (cs3), ein Fenster erscheint zwar, geht aber gleich wieder zu und das script fährt fort.
Code
function main(){ 
var b = new Window("palette");
b.ok = b.add("button", undefined, "fertig");
b.texd = b.add('edittext', undefined, tex);
b.ok.onClick = function () { b.close(); }
b.texd.onChange = function () { tex = b.texd.text; }
b.show();
}
var tex ="BlaBlub";
main();
alert(tex)

Als dialog funktioniert es einwandfrei.

Wo ist da der Bock?


als Antwort auf: [#441061]

ScriptUI Beispiel mit interaktiver Liste

chris33
Beiträge gesamt: 189

4. Mai 2010, 15:47
Beitrag # 3 von 18
Beitrag ID: #441099
Bewertung:
(5310 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Wer lesen kann ist klar im Vorteil:
Eine Palette muss in einer targetengine laufen, um nicht sofort wieder geschlossen zu werden. ???
Da hab ich schon mal einen Suchbegriff.


#targetengine "main"
führt also zum Ziel, das ist ja klasse :)


als Antwort auf: [#441096]
(Dieser Beitrag wurde von chris33 am 4. Mai 2010, 15:51 geändert)

ScriptUI Beispiel mit interaktiver Liste

Gerald Singelmann
  
Beiträge gesamt: 6269

4. Mai 2010, 17:14
Beitrag # 4 von 18
Beitrag ID: #441106
Bewertung:
(5275 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Zitat trotzdem mich das eher Illustrator mäßig interessiert

Die Anwendung sicherlich nicht, die Technik aber schon eher, oder?

Mir fallen eine ganze Menge von Dingen ein, die man interaktiv mit Pfaden machen könnte ;)


als Antwort auf: [#441096]

ScriptUI Beispiel mit interaktiver Liste

chris33
Beiträge gesamt: 189

4. Mai 2010, 17:50
Beitrag # 5 von 18
Beitrag ID: #441116
Bewertung:
(5267 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Ja sicher.
Und
JAA

Jetzt hab ich aber das gleiche/ähnliches Problem in Kompliziert.
Dialog geht.
Die Palette selbst auch, kommt aber zu Fehlern in der letzlichen Skriptausführung bzw, wird nicht ausgeführt, irgendwo hängts.
Keine Fehlermeldung, nix.
Schaun mer mal aber heut nicht mehr.


als Antwort auf: [#441106]

ScriptUI Beispiel mit interaktiver Liste

chris33
Beiträge gesamt: 189

5. Mai 2010, 09:49
Beitrag # 6 von 18
Beitrag ID: #441153
Bewertung:
(5235 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Aha, das hier poduziert den alert= Fehler: there is no Document

Was mach ich falsch?

Code
#targetengine "main" 
var tex =activeDocument.textFrames[0].contents;
function main(){
var b = new Window("palette");
b.ok = b.add("button", undefined, "fertig");
b.ok2 = b.add("button", undefined, "zeig");
b.texd = b.add('edittext', undefined, tex);
b.ok.onClick = function () { b.close(); }
b.ok2.onClick = function () {
try {
activeDocument.textFrames[0].contents =tex;
redraw()
} catch(err) {
alert(err)
}
}
b.texd.onChange = function () { tex = b.texd.text; }
b.show()

}
main();



als Antwort auf: [#441106]

ScriptUI Beispiel mit interaktiver Liste

Martin Fischer
  
Beiträge gesamt: 12783

5. Mai 2010, 10:05
Beitrag # 7 von 18
Beitrag ID: #441158
Bewertung:
(5227 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hi Chris,

ergänze app.

Code
var tex = app.activeDocument.textFrames[0].contents; 



als Antwort auf: [#441153]

ScriptUI Beispiel mit interaktiver Liste

Gerald Singelmann
  
Beiträge gesamt: 6269

5. Mai 2010, 10:57
Beitrag # 8 von 18
Beitrag ID: #441164
Bewertung:
(5210 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Genauso in dieser Zeile " activeDocument.textFrames[0].contents =tex; "

Das onChange braucht es hier nicht, man könnt das Feld auch in dem onClick von ok2 auslesen.
onChange braucht es, wenn Sie in einem anderen Feld einen berechneten Wert haben oder eine Plausibilitätsprüfung starten wollen, sobald der Wert geändert wird.


als Antwort auf: [#441158]

ScriptUI Beispiel mit interaktiver Liste

chris33
Beiträge gesamt: 189

5. Mai 2010, 13:31
Beitrag # 9 von 18
Beitrag ID: #441194
Bewertung:
(5182 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Wg., onChange, gut zu wissen, danke.

Leider hilft app. nicht.
Als dialog geht's, ob mit oder ohne app.

ein zusätzlicher alert (app) im catch= "illustrator" (richtig).

alert (app.activeDocument) = wird nicht ausgeführt.

Beim folgenden code/catch kommen die alerts:
[Document]
und
wie oben "kein Dokument"
Seltsam oder?

Code
#targetengine "main" 
var ad = app.activeDocument;
var tex =ad.textFrames[0].contents;
function haupt(){
var b = new Window("palette");
b.ok = b.add("button", undefined, "fertig");
b.ok2 = b.add("button", undefined, "zeig");
b.texd = b.add('edittext', undefined, tex);
b.ok.onClick = function () { b.close(); }
b.ok2.onClick = function () {
try {
tex = b.texd.text;
ad.textFrames[0].contents =tex;
redraw()
} catch(err) {
alert(ad)
alert(err)
}
}
b.show();
}
haupt();


Illu CS3


als Antwort auf: [#441164]

ScriptUI Beispiel mit interaktiver Liste

Gerald Singelmann
  
Beiträge gesamt: 6269

5. Mai 2010, 14:33
Beitrag # 10 von 18
Beitrag ID: #441201
Bewertung:
(5169 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Dreierlei:
- ich weiß nicht, wie eine Palette offen bleibt, wenn man das Script aus dem ESTK startet. Speichern Sie es in den Scripts Panel Ordner und starten es von dort.
- ich war etwas unpräzise, als ich sagte, eine Palette muss in einer targetengine laufen. Jedes Script läuft in einer targetengine, falls nichts anderes angegeben, in "main". Die Aussage müsste also sein: "Paletten müssen in einer anderen targetengine als "main" laufen.
- Sie sind noch nicht auf der Höhe, was das Objekt-orientierte Denken angeht.
-- alert() will einen String als Parameter, nicht ein Dokument
-- redraw() gibt es nicht (wenn es das gäbe, würde es im Objektmodel-Viewer in den Core JavaScript Classes im Abschnit Global Elements aufgeführt. Sie müssen also dem Ding, das sich selbst da neu zeichnen soll, den Befehl geben, also xxx.redraw(); (Keine Ahnung, was Sie mit xxx im Sinn hatten);

Probieren Sie also mal das hier:
Code
#targetengine "bruhaha"  
var ad = app.activeDocument;
var tex =ad.textFrames[0].contents;
function haupt(){
var b = new Window("palette");
b.texd = b.add('edittext');
b.texd.text = tex;
b.texd.size = [200,20];
b.btns = b.add("group");
b.btns.orientation = "row";
b.ok2 = b.btns.add("button", undefined, "aktualisieren");
b.ok = b.btns.add("button", undefined, "fertig");
b.ok.onClick = function () {
b.close();
}
b.ok2.onClick = function () {
ad.textFrames[0].contents =b.texd.text;
}
b.show();
}
haupt();



als Antwort auf: [#441194]

ScriptUI Beispiel mit interaktiver Liste

chris33
Beiträge gesamt: 189

5. Mai 2010, 16:24
Beitrag # 11 von 18
Beitrag ID: #441216
Bewertung:
(5158 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Danke für ihre Hilfe Gerald, und natürlich auch Martin

zu 1) hab ich gemacht
kein Unterschied
Ihr Skript aus dem Illu Ordner oder Scripts Panel Ordner, per Illu oder estk:
Palette erscheint, macht aber nichts, genau wie meins.
genauer:
Code
		try {  
tex = b.texd.text;
app.activeDocument.textFrames[0].contents =tex;
redraw()
} catch(err) {
alert(tex)
alert(err)
}

try{tex=... wird noch ausgeführt, der Versuch auf das Doc. zuzugreifen schlägt fehl.

2) habe ich geändert, ohne erfolg
3) Das stimmt zweifellos, jedoch-
der alert(objekt) gibt den Objekttyp zurück oder eben "undefined" und erfüllt hier somit seinen Zweck.
Da Illustrator ein fehlendes app Objekt als gegeben voraussetzt, nehme ich diese Verkürzung in Anspruch. Richtig müßte es heißen app.redraw(), macht aber keinen Unterschied . Für die Ausführung des Skripts ist redraw aber unwichtig, ist nur von der Fehlersuche übriggeblieben.

Was mich verwirrt:
alert(ad) gibt zurück [Document], also Objekt vom Typ Document.
alert(ad.name) wird ohne Fehlermeldung nicht ausgeführt.
ebenso andere versuche wie ad.textFrames.length.
D.h. da ist ein Dokument(?), aber zugriff auf irgendeine seiner Eigenschaften ist nicht möglich?

Kann das mit dem Focus zu tun haben den ich an das Document zurückgeben muß?oder so?
Hier verließen sie Ihn(mich) dann endgültig, Objektmäßig :(


als Antwort auf: [#441201]

ScriptUI Beispiel mit interaktiver Liste

Gerald Singelmann
  
Beiträge gesamt: 6269

5. Mai 2010, 18:38
Beitrag # 12 von 18
Beitrag ID: #441232
Bewertung:
(5146 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Zitat Ihr Skript aus dem Illu Ordner oder Scripts Panel Ordner, per Illu oder estk:


Ich denke die ganze Zeit, wir reden von InDesign. Tun wir gar nicht, oder?


als Antwort auf: [#441216]

ScriptUI Beispiel mit interaktiver Liste

chris33
Beiträge gesamt: 189

5. Mai 2010, 19:01
Beitrag # 13 von 18
Beitrag ID: #441234
Bewertung:
(5139 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Ja nee, daher ja meine anfängliche Frage ob ich hierzu (im falschen Forum) fragen darf.
Es tut mir leid für die Verwirrung, echt.
Un Nu?
Wäre schade wenn das nicht funktioniert.
Ich hab mal John Wundes angeschrieben, vielleicht weiß der was.


als Antwort auf: [#441232]

ScriptUI Beispiel mit interaktiver Liste

Gerald Singelmann
  
Beiträge gesamt: 6269

5. Mai 2010, 23:39
Beitrag # 14 von 18
Beitrag ID: #441268
Bewertung:
(5116 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Ein paar tests später bekomme ich es nicht hin, dass ein Handler einer Palette etwas im offenen Illustrator Dokument ausrichten oder auch nur auslesen kann.

Falls es einen Weg gibt, in Ai sinnvoll eine Palette zu programmieren, ist er mir nicht offensichtlich. :(


als Antwort auf: [#441234]

ScriptUI Beispiel mit interaktiver Liste

chris33
Beiträge gesamt: 189

6. Mai 2010, 11:16
Beitrag # 15 von 18
Beitrag ID: #441307
Bewertung:
(5073 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Das ist Schade, ich hoffte es läge an meiner blödheit.
Im Adobeforum sind sie auch nicht schlauer:
http://forums.adobe.com/thread/287715?tstart=0
aber ich werds mal beobachten, die Hoffnung stirbt ja zuletzt.
Dank für die Mühe und Geduld.
So hab ich zumindest einiges über Dialoge gelesen
(wovor ich mich bisher gedrückt habe)


als Antwort auf: [#441268]
X