[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt Palette: Anzeige des aktiven Dokument-Namens

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

Palette: Anzeige des aktiven Dokument-Namens

J.Puff
Beiträge gesamt: 238

28. Mär 2015, 11:01
Beitrag # 1 von 6
Bewertung:
(2442 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo!
Ich möchte gerne in einer Script-Palette den Namen des aktiven Dokuments anzeigen.
Leider finde ich keinen Event, der mir den Wechsel offener Dokumenten vermittelt.
Hat jemand dazu eine Idee?

Beste Grüße
Johannes.
X

Palette: Anzeige des aktiven Dokument-Namens

Gerald Singelmann
  
Beiträge gesamt: 6269

28. Mär 2015, 20:22
Beitrag # 2 von 6
Beitrag ID: #538377
Bewertung:
(2370 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Man kann einen Eventlistener auf das Document legen, der nach "beforeDeactivate" und "afterActivate" lauscht.

Das in Ergänzung mit einem Listener auf der app für afterNew und afterOpen, der den afterActivate installiert, müsste eigentlich funzen.

Probiert habe ich es aber nicht.

Zum Experimentieren und besseren Verständnis hatte ich mal ein Script geschrieben (oder abgeändert? Die Struktur sieht sehr nach Adobe Script aus... Das Gedächtnis, das Gedächtnis...), das die meisten Events auf Dokument Ebene installiert. Dann sieht man ganz gut, was wann gefeuert wird.

Code
//EventListenersOn.jsx 
//An InDesign CS5 JavaScript
//
//Installs event listeners for many supported events; displays a
//message when each event occurs.
#targetengine "session"
main();
function main(){
mySetup();
mySnippet();
myTeardown();
}
function mySetup(){
}
function mySnippet(){
//<fragment>
var myEventNames = [
"beforeQuit", "afterQuit",
"beforeNew", "afterNew",
"beforeOpen", "afterOpen",
"beforeClose", "afterClose",
"beforeSave", "afterSave",
"beforeSaveAs", "afterSaveAs",
"beforeSaveACopy", "afterSaveACopy",
"beforeRevert", "afterRevert",
"beforePrint", "afterPrint",
"beforeExport", "afterExport",
"beforeImport", "afterImport",
"afterActivate", "beforeDeactivate",

"afterContextChanged",
"afterDelete", "beforeDelete",
"beforeDisplay",
"afterEmbed", "beforeEmbed",
"afterInvoke", "beforeInvoke",
"afterLinksChanged",
"afterMove", "beforeMove",
"afterPlace", "beforePlace",
"afterSelectionAttributeChanged",
"afterSelectionChanged",
"afterUnembed", "beforeUnembed",
"afterUpdate", "beforeUpdate"
] ;
for (var myCounter = 0; myCounter < myEventNames.length; myCounter ++){
app.activeDocument.addEventListener(myEventNames[myCounter], myEventInfo);
}
//</fragment>
}
function myTeardown(){
}
//<fragment>
function myEventInfo(myEvent){
try{
var myString = "Application Event: " +myEvent.eventType;
myString += "\r\rTarget: " + myEvent.target.constructor.name + ", " +myEvent.target.name;
myString += "\rCurrent: " +myEvent.currentTarget.constructor.name + ", " + myEvent.currentTarget.name;
myString += "\r\rPhase: " + myGetPhaseName(myEvent.eventPhase );
myString += "\rBubbles: " + myEvent.bubbles;
myString += "\r\rCancelable: " +myEvent.cancelable;
myString += "\rStopped: " +myEvent.propagationStopped;
myString += "\rCanceled: " +myEvent.defaultPrevented;
myString += "\r\rTime: " +myEvent.timeStamp;
alert(myString);
function myGetPhaseName(myPhase){
switch(myPhase){
case EventPhases.atTarget:
myPhaseName = "At Target";
break;
case EventPhases.bubblingPhase:
myPhaseName = "Bubbling";
break;
case EventPhases.done:
myPhaseName = "Done";
break;
case EventPhases.notDispatching:
myPhaseName = "Not Dispatching";
break;
default:
myPhaseName = "no phase defined";
}
return myPhaseName;
}
}
catch(myError){
alert("Error getting event properties.");
}
}
//</fragment>



als Antwort auf: [#538372]

Palette: Anzeige des aktiven Dokument-Namens

J.Puff
Beiträge gesamt: 238

28. Mär 2015, 20:47
Beitrag # 3 von 6
Beitrag ID: #538378
Bewertung:
(2362 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Vielen Dank für das Beispiel-Script!
In meiner Anfrage hatte ich vergessen zu erwähnen, dass es leider nicht möglich ist, einen EventHandler im StartUp-Scripts-Ordner zu verwenden. D.h. ich müsste den Event innerhalb des Paletten-Scriptes erfassen und auswerten können.
Wenn ich das Beispiel richtig verstehe, ist das dort anders vorgesehen - oder?


als Antwort auf: [#538377]

Palette: Anzeige des aktiven Dokument-Namens

Gerald Singelmann
  
Beiträge gesamt: 6269

28. Mär 2015, 21:35
Beitrag # 4 von 6
Beitrag ID: #538379
Bewertung:
(2328 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Zitat ich müsste den Event innerhalb des Paletten-Scriptes erfassen


Das Paletten Script kann doch einen afterActivate für alle offenen Dokument installieren und einen afterNew bzw afterOpen für die App.

Oder mach ich einen Denkfehler?


als Antwort auf: [#538378]

Palette: Anzeige des aktiven Dokument-Namens

J.Puff
Beiträge gesamt: 238

28. Mär 2015, 22:51
Beitrag # 5 von 6
Beitrag ID: #538380
Bewertung:
(2279 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Kein Denkfehler, ich hatte den Listener nur nicht an die app hinzugefügt.
Ich war davon ausgegangen, dass ich den Event an die Palette hängen kann.

Jetzt bekomme ich die notwendigen Informationen, würde aber aus hygienischen Gründen gerne beim Schliessen der Palette den EventListener wieder löschen. Nur: ich bekomme das Schliessen der Palette nicht mit! Noch eine Idee?


als Antwort auf: [#538379]

Palette: Anzeige des aktiven Dokument-Namens

J.Puff
Beiträge gesamt: 238

19. Apr 2015, 10:02
Beitrag # 6 von 6
Beitrag ID: #538905
Bewertung:
(1904 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Guten Morgen,
gibt es eine Möglichkeit beim Schliessen der Palette den EventListener wieder löschen. Derzeit bekomme das Schliessen der Palette als Event nicht mit! Danke für einen Tipp!
Johannes.


als Antwort auf: [#538379]
X