[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:
(10006 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:
(9984 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:
(9980 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:
(9928 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:
(9911 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: |||
(9887 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:
(9884 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: ||
(9855 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:
(9834 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: 5317

23. Dez 2011, 11:54
Beitrag # 10 von 20
Beitrag ID: #486831
Bewertung:
(9832 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:
(9810 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: 5317

23. Dez 2011, 12:39
Beitrag # 12 von 20
Beitrag ID: #486836
Bewertung:
(9802 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: 5317

23. Dez 2011, 12:52
Beitrag # 13 von 20
Beitrag ID: #486837
Bewertung:
(9782 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:
(9771 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:
(9711 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]

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

Gerald Singelmann
  
Beiträge gesamt: 6269

23. Dez 2011, 23:40
Beitrag # 16 von 20
Beitrag ID: #486858
Bewertung:
(3028 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Die konzeptionell einfachste Lösung dafür scheint mir zu sein, das Einklinken ins Menü und das eigentliche Script zu splitten.
Dann kann man das eigentliche Script übers Menü aufrufen, oder ihm ganz normal einen Shortcut geben oder es über die Scriptpalette starten oder sonstige Mechanismen bauen.


als Antwort auf: [#486856]

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

JuMayr
Beiträge gesamt: 96

23. Dez 2011, 23:42
Beitrag # 17 von 20
Beitrag ID: #486859
Bewertung:
(3026 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Antwort auf [ Gerald Singelmann ] Die konzeptionell einfachste Lösung dafür scheint mir zu sein, das Einklinken ins Menü und das eigentliche Script zu splitten.
Dann kann man das eigentliche Script übers Menü aufrufen, oder ihm ganz normal einen Shortcut geben oder es über die Scriptpalette starten oder sonstige Mechanismen bauen.


Das ist die Notlösung, die ich im Moment auch verwende.
Allerdings wäre es natürlich schön, wenn man die Tastaturshortcuts wirklich ins Menü legen könnte, da man sie dort dann auch sieht.


als Antwort auf: [#486858]

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

WernerPerplies
Beiträge gesamt: 2762

24. Dez 2011, 07:40
Beitrag # 18 von 20
Beitrag ID: #486860
Bewertung:
(2993 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Jürgen,

Zitat 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.


Ich werde mir das noch einmal in nächsten Tagen ansehen, falls Du bis dahin keine akzeptable Lösung gefunden hast.


als Antwort auf: [#486856]

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

WernerPerplies
Beiträge gesamt: 2762

26. Dez 2011, 17:03
Beitrag # 19 von 20
Beitrag ID: #486931
Bewertung:
(2932 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Jürgen,

wie versprochen, habe ich mir die Sache noch einmal angesehen und bin ratlos.

Irgendwie ist die Implentierung der Menus etwas inkonsequent, Anwendermenus bleiben über einen Neustart erhalten, Menuitems und Menuactions nicht.

Über eine skriptgesteuerte Zuordnung von Shortcuts zu Menus habe ich gar nichts gefunden.

An der Action-ID kann es auch nicht liegen, auch wenn die ID jedes Mal auf's Neue vergeben wird, wird bei gleichen Bedingungen beim Neustart auch die gleiche ID erzeugt.

Diesen Sachverhalt kannst Du leicht in der Tastatur-Shortcuttabelle überprüfen.

Aber dennoch muss es irgendwie funktionieren, denn mindestens bei einem von Adobe mitgelieferten Startup-Script (ConvertURLToHyperlink) bleibt die Shortcut-Zuordnung bei mir erhalten.

Dennoch frage ich mich, ob Dein Wunsch das Skript in das Hauptmenu einzubinden und einen Shortcut zuzuweisen, wirklich die sinnvollste Lösung ist. Wäre es nicht sinnvoller, das Skript in das Kontextmenue für das entsprechende Objekt einzubinden?

Dann könnte man auch an dieser Stelle den Menueeintrag nur aktivieren, wenn wirklich das/die richtigen Objekte aktiv sind.

Unabhängig von Deinem letzten Problem habe ich mal eine eigene Version des Skriptes geschrieben, in der
1. einmalig ein Dialogobjekt eingerichtet wird
2. ein bereits bestehender Menueintrag erkannt wird
3. nur eine Datei verwendet wird.

Bei Interesse findest Du weitere Infos und das Skript zum Download hier:
WpsMakeGrid


als Antwort auf: [#486859]

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

JuMayr
Beiträge gesamt: 96

26. Dez 2011, 20:55
Beitrag # 20 von 20
Beitrag ID: #486937
Bewertung:
(2909 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Vielen Dank. Ich bin sehr gespannt:)
Sobald ich im weepee Forum freigeschaltet bin, werde ich mir das Script genauer ansehen.


als Antwort auf: [#486931]
X