[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt Ich werd wahnsinnig. MakeGrid.jsx als Menüeintrag => ID Crash

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

Ich werd wahnsinnig. MakeGrid.jsx als Menüeintrag => ID Crash

JuMayr
Beiträge gesamt: 96

22. Dez 2011, 15:08
Beitrag # 1 von 20
Bewertung:
(10007 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo zusammen,

ich verzweifle mal wieder.
Es gibt in den InDesign Samples ein Script namens MakeGrid.jsx.

Nun habe ich versucht dieses Script als Menüeintrag hinzuzufügen.

MakeGrid2.jsx ist das StartUp Script
MakeGrid_org.jsx ist das Script, das ausgeführt werden soll.

Wenn nun in einem Dokument ein Frame markiert wird und ich das MakeGrid_org.jsx über das Scriptpanel ausführe, dann klappt alles wunderbar.
Sobald ich den zugehörigen Menüeintrag aufrufe, wird das script ausgeführt, aber direkt danach kommt es zu einem InDesign (Win/CS5) Crash.

Ich habe keine Idee, woran das liegen kann.
Daher meine Bitte. Könnte irgendjemand mal testen, ob bei ihm das selbe passiert?
Ob ich irgendwo etwas wesentliches übersehen habe.

Anhang:
makegrid.zip (2.96 KB)
X

Ich werd wahnsinnig. MakeGrid.jsx als Menüeintrag => ID Crash

Martin Fischer
  
Beiträge gesamt: 12783

22. Dez 2011, 15:57
Beitrag # 2 von 20
Beitrag ID: #486791
Bewertung:
(9985 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Jürgen,

ich bekomme Dein Skript nicht zum Laufen.
Vermutlich weil ich ihm nicht die Umgebung liefern kann, die es erwartet.

Aber ich kann bestätigen, dass es bisweilen Probleme bereitet, ein Skript, das über die Palette und über ESTK ohne Mucken läuft, in das Menü einzuhängen. Siehe z.B. http://www.hilfdirselbst.ch/..._P455151.html#455151.

Quarz hat in http://www.hilfdirselbst.ch/..._P456866.html#456866 einen Zusammenhang mit einer Selection herausgefunden. Spielt das bei Dir auch eine Rolle?


als Antwort auf: [#486779]

Ich werd wahnsinnig. MakeGrid.jsx als Menüeintrag => ID Crash

JuMayr
Beiträge gesamt: 96

22. Dez 2011, 15:59
Beitrag # 3 von 20
Beitrag ID: #486793
Bewertung:
(9981 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Antwort auf [ Martin Fischer ] Hallo Jürgen,

ich bekomme Dein Skript nicht zum Laufen.
Vermutlich weil ich ihm nicht die Umgebung liefern kann, die es erwartet.

Aber ich kann bestätigen, dass es bisweilen Probleme bereitet, ein Skript, das über die Palette und über ESTK ohne Mucken läuft, in das Menü einzuhängen. Siehe z.B. http://www.hilfdirselbst.ch/..._P455151.html#455151.

Quarz hat in http://www.hilfdirselbst.ch/..._P456866.html#456866 einen Zusammenhang mit einer Selection herausgefunden. Spielt das bei Dir auch eine Rolle?


Ja, das Script teilt ein selektiertes Frame in mehrere kleinere Frames auf.
Danke. Werde den Links mal folgen.


als Antwort auf: [#486791]

Ich werd wahnsinnig. MakeGrid.jsx als Menüeintrag => ID Crash

WernerPerplies
Beiträge gesamt: 2762

23. Dez 2011, 07:54
Beitrag # 4 von 20
Beitrag ID: #486816
Bewertung:
(9929 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Jürgen,

Zitat Daher meine Bitte. Könnte irgendjemand mal testen, ob bei ihm das selbe passiert?


Ja, passiert.

Und es liegt nicht an der Selektion des Rahmens.

Ich habe das Scipt etwas umgebaut und lade den Rahmen direkt in die Objektliste: -> gleiches Verhalten.

Danach habe ich den Teil mit dem Dialogfenster entfernt und die Splitroutine direkt mit den Standardparametern aufgerufen:
-> Das Skript funktioniert jetzt einwandfrei.

Versuche einfach mal, statt des Dialogfensters ein Fenster des Typs Panel oder Window (ScriptUI) zu verwenden, vielleicht klappt's dann.


als Antwort auf: [#486779]

Ich werd wahnsinnig. MakeGrid.jsx als Menüeintrag => ID Crash

JuMayr
Beiträge gesamt: 96

23. Dez 2011, 08:59
Beitrag # 5 von 20
Beitrag ID: #486817
Bewertung:
(9912 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Antwort auf [ WernerPerplies ] Hallo Jürgen,

Zitat Daher meine Bitte. Könnte irgendjemand mal testen, ob bei ihm das selbe passiert?


Ja, passiert.

Und es liegt nicht an der Selektion des Rahmens.

Ich habe das Scipt etwas umgebaut und lade den Rahmen direkt in die Objektliste: -> gleiches Verhalten.

Danach habe ich den Teil mit dem Dialogfenster entfernt und die Splitroutine direkt mit den Standardparametern aufgerufen:
-> Das Skript funktioniert jetzt einwandfrei.

Versuche einfach mal, statt des Dialogfensters ein Fenster des Typs Panel oder Window (ScriptUI) zu verwenden, vielleicht klappt's dann.


Vielen Dank. Auf die Idee muss man erstmal kommen.
Das werde ich nachher gleich mal ausprobieren.
HERZLICHEN DANK und ein frohes Weihnachtsfest an alle.


als Antwort auf: [#486816]

Ich werd wahnsinnig. MakeGrid.jsx als Menüeintrag => ID Crash

Gerald Singelmann
  
Beiträge gesamt: 6269

23. Dez 2011, 10:38
Beitrag # 6 von 20
Beitrag ID: #486822
Bewertung: |||
(9888 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Löschen Sie die Zeile raus, die den Dialog entfernt, vermutlich "myDialog.destroy()" o.ä.

Der Rest kann blieben, wie er ist.


als Antwort auf: [#486817]

Ich werd wahnsinnig. MakeGrid.jsx als Menüeintrag => ID Crash

JuMayr
Beiträge gesamt: 96

23. Dez 2011, 10:43
Beitrag # 7 von 20
Beitrag ID: #486823
Bewertung:
(9885 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Antwort auf [ Gerald Singelmann ] Löschen Sie die Zeile raus, die den Dialog entfernt, vermutlich "myDialog.destroy()" o.ä.

Der Rest kann blieben, wie er ist.


Amazing:)
Warum das so ist, das kann vermutlich keiner erklären, oder?


als Antwort auf: [#486822]

Ich werd wahnsinnig. MakeGrid.jsx als Menüeintrag => ID Crash

Gerald Singelmann
  
Beiträge gesamt: 6269

23. Dez 2011, 11:33
Beitrag # 8 von 20
Beitrag ID: #486828
Bewertung: ||
(9856 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Zitat Warum das so ist, das kann vermutlich keiner erklären, oder?


Naja, Vermutung: durch "destroy" muss ID aufräumen und tut das auf eine Art und Weise, die nicht bedenkt, dass durch den Menüaufruf noch andere Sachen später aufgeräumt werden müssen. Sprich: Speicherbereiche sind schon gelöscht, die "afterMenuInvoke" (oder wie das intern heißen mag) noch vorzufinden gedenkt.
Was genau das ist, können aber nur die Entwickler von Adobe sagen.

Thinks: habe ich dafür eigentlich schon einen Bug-Report geschrieben?


als Antwort auf: [#486823]

Ich werd wahnsinnig. MakeGrid.jsx als Menüeintrag => ID Crash

WernerPerplies
Beiträge gesamt: 2762

23. Dez 2011, 11:49
Beitrag # 9 von 20
Beitrag ID: #486830
Bewertung:
(9835 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Guten Tag Herr Singelmann,

nicht alles was funktioniert, ist auch in Ordnung.

Sie produzieren auf diese Art mit jedem Skriptaufruf einen weiteren Dialog.

Sie können das leicht durch testen: ->

alert("Dialoganzahl: " + app.dialogs.length.toString());

Das kostet im besten Fall Resourcen und Speicher.

Besser wäre es dann vermutlich, den Dialog einmal einzurichten und wieder zu verwenden.


als Antwort auf: [#486822]

Ich werd wahnsinnig. MakeGrid.jsx als Menüeintrag => ID Crash

Uwe Laubender
Beiträge gesamt: 5318

23. Dez 2011, 11:54
Beitrag # 10 von 20
Beitrag ID: #486831
Bewertung:
(9833 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Werner!
Da hätte ich erst mal ein Verständnisproblem. Das Script ist doch ein "Startup"-Script. Weshalb sollte das pro InDesign-Session mehrmals aufgerufen werden?


als Antwort auf: [#486830]

Ich werd wahnsinnig. MakeGrid.jsx als Menüeintrag => ID Crash

WernerPerplies
Beiträge gesamt: 2762

23. Dez 2011, 12:14
Beitrag # 11 von 20
Beitrag ID: #486834
Bewertung:
(9811 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Uwe,

so wie das Script zur Zeit konstruiert ist, wird das aufgerufene Skript mit jedem Menueaufruf erneut aufgerufen:
-> _entry.eventListeners.add("onInvoke", MakeGridRunStart);

und damit auch die Funktion myDisplayDialog(myObjectList)

Ergänzung:
Die Lösung könnte deshalb darin liegen, das Dialogwindow außerhalb des Events vor dem ersten Aufruf zu erzeugen.


als Antwort auf: [#486831]
(Dieser Beitrag wurde von WernerPerplies am 23. Dez 2011, 12:17 geändert)

Ich werd wahnsinnig. MakeGrid.jsx als Menüeintrag => ID Crash

Uwe Laubender
Beiträge gesamt: 5318

23. Dez 2011, 12:39
Beitrag # 12 von 20
Beitrag ID: #486836
Bewertung:
(9803 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo, Werner!
Oder man könnte abfragen, ob es bereits existiert, falls nein, darf es aufgerufen werden, falls ja, braucht es nicht mehr aufgerufen zu werden.

Ich glaube, das war auch mal ein Thema in folgendem Thread im Adobe Scripting-Forum:
http://forums.adobe.com/message/4091541#4091541


als Antwort auf: [#486834]

Ich werd wahnsinnig. MakeGrid.jsx als Menüeintrag => ID Crash

Uwe Laubender
Beiträge gesamt: 5318

23. Dez 2011, 12:52
Beitrag # 13 von 20
Beitrag ID: #486837
Bewertung:
(9783 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Besonders faszinierend ist Marc Autrets "Menu Loader"-Script im gleichen Thread weiter unten:

http://forums.adobe.com/message/4092090#4092090


als Antwort auf: [#486836]

Ich werd wahnsinnig. MakeGrid.jsx als Menüeintrag => ID Crash

WernerPerplies
Beiträge gesamt: 2762

23. Dez 2011, 13:04
Beitrag # 14 von 20
Beitrag ID: #486838
Bewertung:
(9772 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Uwe,

Zitat Oder man könnte abfragen, ob es bereits existiert, falls nein, darf es aufgerufen werden, falls ja, braucht es nicht mehr aufgerufen zu werden.



Ja klar, aber ich ziehe die andere Löung vor, das macht m. E. den Code etwas übersichtlicher.

Ich würde auch alles in eine Datei packen.


als Antwort auf: [#486836]

Ich werd wahnsinnig. MakeGrid.jsx als Menüeintrag => ID Crash

JuMayr
Beiträge gesamt: 96

23. Dez 2011, 20:55
Beitrag # 15 von 20
Beitrag ID: #486856
Bewertung:
(9712 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Bei meiner aktuellen Art des Menüaufbaus gibt es anscheinend noch ein ganz anderes Problem.
Ich kann den Menüeinträgen zwar Keyboard-Shortcuts zuweisen, aber die sind beim nächsten Start von InDesign ungültig da sich anscheinend die ID des Menüeintrags geändert hat.


als Antwort auf: [#486838]
X