[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt Auf welche Seite wurde zuletzt geklickt?

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

Auf welche Seite wurde zuletzt geklickt?

peterhenrich
Beiträge gesamt: 133

4. Jan 2019, 15:12
Beitrag # 1 von 26
Bewertung:
(2827 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo HDS,

ich habe ein Script erstellt, dass mir Texte aus einer Word-Datei positioniert und anhand den Spaltenvorgaben der aktuellen Seiten als einzelne miteinander verketteten Textblöcke positioniert. So weit, so schön ...

Allerdings greife ich die Seite, auf der mit dem Positionieren angefangen werden soll, über app.activeWindow.activePage ab, was zu keinem befriedigenden Ergebnis führt, da ID und ich unterschiedliche Ansichten über das Thema haben.

Mir wäre es am liebsten, dass ich mit der Maus auf eine beliebige Seite klicke und das Script dann dort startet. Derzeit ist es so, dass ID die Seite nimmt, die (frei übersetzt) am "meisten vorne" ist. Auch mit rechts und links gibt es Probleme.

Nun die Frage: Gibt es einen Eventhandler oder ähnliches, über dessen Eigenschaften/Funktionen man den letzten Klick abfragen kann?

Fragt sich und Euch ...

Peter
X

Auf welche Seite wurde zuletzt geklickt?

Uwe Laubender
Beiträge gesamt: 4452

4. Jan 2019, 15:37
Beitrag # 2 von 26
Beitrag ID: #568300
Bewertung:
(2811 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Peter,
Idee:

Das Skript erstellt temporär einen Rechteckrahmen, der als IDMS-Datei exportiert wird und anschließend in die Placegun geladen wird. Klickst Du nun auf eine Seite wird dort der Rahmen erstellt. Die Seite ist direkt auslesbar über app.selection[0].parentPage.
*****
Mit herzlichem Gruß,
Uwe Laubender


als Antwort auf: [#568297]

Auf welche Seite wurde zuletzt geklickt?

Martin Fischer
  
Beiträge gesamt: 12091

4. Jan 2019, 16:22
Beitrag # 3 von 26
Beitrag ID: #568301
Bewertung:
(2795 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Uwe,

Antwort auf: Das Skript erstellt temporär einen Rechteckrahmen, der als IDMS-Datei exportiert wird und anschließend in die Placegun geladen wird.


Coole Idee!
Im Prinzip kann der Text der Worddatei gleich da rein importiert werden.
Das behalte ich mir im Hinterkopf.

IDMS scheint heute Dein Thema zu sein. Smile

Viele Grüße
Martin




als Antwort auf: [#568300]
(Dieser Beitrag wurde von Martin Fischer am 4. Jan 2019, 16:28 geändert)

Auf welche Seite wurde zuletzt geklickt?

Uwe Laubender
Beiträge gesamt: 4452

4. Jan 2019, 16:29
Beitrag # 4 von 26
Beitrag ID: #568302
Bewertung:
(2788 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Genausogut könntest Du als Auswahlwerkzeug das Seitenwerkzeug nehmen.
app.selection[0] gibt dann die ausgewählte Seite zurück.

Falls Du auf einer Auswahl der Seite im Seitenmenü bestehst, dann schau' Dir mal meine Beiträge zum Thema im amerikanischen InDesign-Scripting-Forum an:

Correct Answer 6. Re: active page vs selected page
Laubender Jan 15, 2017 4:54 PM (in response to Laubender)
https://forums.adobe.com/message/9264014#9264014

Mit InDesign CS6, und nur mit CS6, gibt's eine saubere Lösung:

4. Re: active page vs selected page
Laubender Jan 13, 2017 11:53 AM (in response to Laubender)
https://forums.adobe.com/message/9259728#9259728
*****
Mit herzlichem Gruß,
Uwe Laubender


als Antwort auf: [#568300]

Auf welche Seite wurde zuletzt geklickt?

Martin Fischer
  
Beiträge gesamt: 12091

4. Jan 2019, 16:34
Beitrag # 5 von 26
Beitrag ID: #568303
Bewertung:
(2787 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Allerdings gibt es auch den Befehl "app.activeDocument.placeGuns.loadPlaceGun(FILE)".

Warum nicht gleich auf diese Weise laden, sondern über den IDMS-Umweg?

Viele Grüße
Martin




als Antwort auf: [#568301]
(Dieser Beitrag wurde von Martin Fischer am 4. Jan 2019, 16:37 geändert)

Auf welche Seite wurde zuletzt geklickt?

peterhenrich
Beiträge gesamt: 133

4. Jan 2019, 16:36
Beitrag # 6 von 26
Beitrag ID: #568304
Bewertung:
(2785 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Und noch eine Frage:

Wie halte ich mein Script an, bis die PlaceGun positioniert wurde?

Bei Dateipositionierungen kann ich über true/false abfragen. Derzeit wird zwar meine PlaceGun geladen, aber im Hintergund arbeitet mein Script weiter und will auf das rectangle zugreifen, das sich aber noch in der PlaceGun befindet.


als Antwort auf: [#568303]

Auf welche Seite wurde zuletzt geklickt?

Martin Fischer
  
Beiträge gesamt: 12091

4. Jan 2019, 16:47
Beitrag # 7 von 26
Beitrag ID: #568305
Bewertung:
(2775 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Antwort auf: Wie halte ich mein Script an, bis die PlaceGun positioniert wurde?


Theoretisch kannst Du den Status "placeGuns.loaded" abfragen.

Praktisch kannst Du das Skript aber nach dem Laden der PlaceGun nicht unterbrechen, um zwischenrein 'was abzulegen und dann mit dem Skript fortzufahren - oder doch?

Viele Grüße
Martin




als Antwort auf: [#568304]

Auf welche Seite wurde zuletzt geklickt?

Uwe Laubender
Beiträge gesamt: 4452

4. Jan 2019, 16:47
Beitrag # 8 von 26
Beitrag ID: #568306
Bewertung:
(2772 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Antwort auf: Und noch eine Frage:
Wie halte ich mein Script an, bis die PlaceGun positioniert wurde?…


Gute Frage. Wie wär's mit einem eventlistening-Mechanismus, der nach afterPlace schaut? Das Objekt in der placegun könnte einen speziellen Namen enthalten, falls sich der Anwender entscheidet nach dem Skriptstart noch mehr Objekte zu laden.
*****
Mit herzlichem Gruß,
Uwe Laubender


als Antwort auf: [#568304]

Auf welche Seite wurde zuletzt geklickt?

peterhenrich
Beiträge gesamt: 133

4. Jan 2019, 17:14
Beitrag # 9 von 26
Beitrag ID: #568307
Bewertung:
(2762 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Antwort auf:
Antwort auf: Wie halte ich mein Script an, bis die PlaceGun positioniert wurde?


Theoretisch kannst Du den Status "placeGuns.loaded" abfragen.

Praktisch kannst Du das Skript aber nach dem Laden der PlaceGun nicht unterbrechen, um zwischenrein 'was abzulegen und dann mit dem Skript fortzufahren - oder doch?


Das wäre unschön, da diese Word-Positioniererei halt x-mal am Tag durchgeführt wird. Hatte es gerade mal so probiert:

Code
	app.activeDocument.placeGuns.loadPlaceGun(snippetFile); 
while(app.activeDocument.placeGuns.loaded) {
var i = 1; //mach irgendwas
}


Das funktioniert aber nicht, da der Zustand trotz Klicks in ID sich nicht ändert. ESTK bleibt dann in der while-Schleife hängen.

Werde mich wohl, wie von Uwe vorgeschlagen, mit Event-Listener beschäftigen müssen ... hrmpf!


als Antwort auf: [#568305]

Auf welche Seite wurde zuletzt geklickt?

peterhenrich
Beiträge gesamt: 133

5. Jan 2019, 15:33
Beitrag # 10 von 26
Beitrag ID: #568312
Bewertung:
(2651 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Habe mich jetzt mal mit den EventListenern beschäftigt und es so gelöst:

Code
#target indesign-10 
#targetengine "mySession"

var gO = {};

main();

function main() {
var newRect = app.activeWindow.activePage.rectangles.add();
var rectFile = File("~/Desktop/rec.idms")
newRect.exportFile(ExportFormat.INDESIGN_SNIPPET, rectFile);
newRect.remove();
gO.placeGunListenerID = app.activeDocument.eventListeners.add("afterPlace", listenerTest).id;
app.activeDocument.placeGuns.loadPlaceGun(rectFile);
$.writeln("Fertig mit Hauptprogramm");
}

function listenerTest () {
$.writeln("Aufruf des weiteren Teils nach der Platzierung");
if(app.activeDocument.eventListeners.itemByID(gO.placeGunListenerID).isValid) {
app.activeDocument.eventListeners.itemByID(gO.placeGunListenerID).remove();
}
}


Hierzu gleich wieder zwei Fragen:
1) Wie kann ich das ohne diese globale Variable lösen? Würde eigentlich gerne die Listener-ID in die aufgerufene Funktion übergeben.
2) Kann man eine targetEngine zurücksetzen?


als Antwort auf: [#568307]

Auf welche Seite wurde zuletzt geklickt?

WernerPerplies
Beiträge gesamt: 2347

5. Jan 2019, 17:12
Beitrag # 11 von 26
Beitrag ID: #568315
Bewertung:
(2637 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Moin Peter,

so ganz habe ich die Funktion Deined Skriptes nicht verstanden, und Dein Listener wird am Ende nicht gelöscht.

Ich habe Deinen Code etwas umgeschrieben:

Code
  
#target indesign-13
#targetengine "mySession"

placeGunTest = new PlaceGunTest();
alert(placeGunTest);
placeGunTest.removeListener();
placeGunTest = undefined;
PlaceGunTest = undefined;
alert(PlaceGunTest==undefined);
alert(placeGunTest==undefined);
/*Object*/function PlaceGunTest()
{
var /*Rectangle*/newRect = app.activeWindow.activePage.rectangles.add(),
/*File*/rectFile = File("~/Desktop/rec.idms"),
/*Int*/placeGunListener;
newRect = app.activeWindow.activePage.rectangles.add();
newRect.exportFile(ExportFormat.INDESIGN_SNIPPET, rectFile);
newRect.remove();
/*EventListener*/placeGunListener = app.activeDocument.eventListeners.add("afterPlace", listenerTest);
app.activeDocument.placeGuns.loadPlaceGun(rectFile);
$.writeln("Constructor executed");
function listenerTest () {
$.writeln("Aufruf des weiteren Teils nach der Platzierung");
}
this.removeListener = function(){
if(placeGunListener != null)
placeGunListener.remove();
}
}


Ich erzeuge in der Funktion PlaceGunTest ein Object mit Constructor, der Deinen Code ausführt und die Methode removeListener zum Löschen des Listeners zur Verfogung stellt.
Damit ereiche ich, dass alle Variablen innerhalb des Objektes sichtbar sind und Methode removeListener von außen aufzurufen ist.
Code
placeGunTest = new PlaceGunTest(); 


erzeugt ein neues Objekt in placeGunText und führt den Constructorbereich aus.
Code
placeGunTest.removeListener(); 


entfernt den eventListener,
Code
placeGunTest = undefined; 
PlaceGunTest = undefined;


sollte den Speicher bei der nächsten Ausführung des Garbage Collectors wieder freigeben.
Antwort auf: Kann man eine targetEngine zurücksetzen?


Meines Wissens nach nur durch Neustart von InDesign.
HTH

Einen schönen Tag wünscht

Werner Perplies
Auftragsprogrammierung und Skripte für Adobe InDesign
neu: WpsProjectHandler 15.06.2018, Version 1.75, neue Funktionen
Aktuelles
XING


als Antwort auf: [#568312]

Auf welche Seite wurde zuletzt geklickt?

peterhenrich
Beiträge gesamt: 133

5. Jan 2019, 17:20
Beitrag # 12 von 26
Beitrag ID: #568316
Bewertung:
(2634 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Werner,
Danke erstmal und ich habe das mal ausprobiert. Bei Deinem Vorschlag wird in der ESTK-Konsole zwar "Constructor executed" ausgegeben, nicht aber "Aufruf des weiteren Teils nach der Platzierung". Deutet für mich darauf hin, dass die Funktion listenerTest nicht ausgeführt wird. In dieser will ich aber den ganzen anderen Kram nach der Positionierung ausführen.

Viele Grüße

Peter


als Antwort auf: [#568315]

Auf welche Seite wurde zuletzt geklickt?

WernerPerplies
Beiträge gesamt: 2347

5. Jan 2019, 17:31
Beitrag # 13 von 26
Beitrag ID: #568317
Bewertung:
(2630 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Peter,

dann lass mal die Zeile
Code
placeGunTest.removeListener 


weg! ;-)
Und wenn Du wirklich nur die Seite brauchst, kann man da natürlich noch einiges verbessern.
Der Listener darf erst entfernt werden, wenn die Platzierung erfolgt ist.
Ich würde ihn also nur einmal laden und erst entfernen, wenn die komplette Arbeit abgeschlossen ist.

Einen schönen Tag wünscht

Werner Perplies
Auftragsprogrammierung und Skripte für Adobe InDesign
neu: WpsProjectHandler 15.06.2018, Version 1.75, neue Funktionen
Aktuelles
XING


als Antwort auf: [#568316]

Auf welche Seite wurde zuletzt geklickt?

peterhenrich
Beiträge gesamt: 133

5. Jan 2019, 17:46
Beitrag # 14 von 26
Beitrag ID: #568318
Bewertung:
(2620 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Antwort auf:
Antwort auf: Und noch eine Frage:
Wie halte ich mein Script an, bis die PlaceGun positioniert wurde?…


Gute Frage. Wie wär's mit einem eventlistening-Mechanismus, der nach afterPlace schaut? Das Objekt in der placegun könnte einen speziellen Namen enthalten, falls sich der Anwender entscheidet nach dem Skriptstart noch mehr Objekte zu laden.


Hallo Uwe,

wie weise ich denn dem platzierten Objekt einen Namen zu oder kann es identifizieren?

Das Resultat aus loadPlaceGun ist undefined und ich kann der Funktion nur die Datei und true/false für das Zeigen des Öffnen-Dialogs übergeben.

Viele Grüße

Peter


als Antwort auf: [#568306]

Auf welche Seite wurde zuletzt geklickt?

WernerPerplies
Beiträge gesamt: 2347

5. Jan 2019, 18:05
Beitrag # 15 von 26
Beitrag ID: #568319
Bewertung:
(2609 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Peter,

das platzierte Objekt ist bei mir selectiert, Du kannst also app.selection[0] einen Namen, oder besser ein Label zuweisen.
Mit dem hinzufügen eines Labels kannst Du auch mehrere Informationen hinterlassen.

Einen schönen Tag wünscht

Werner Perplies
Auftragsprogrammierung und Skripte für Adobe InDesign
neu: WpsProjectHandler 15.06.2018, Version 1.75, neue Funktionen
Aktuelles
XING


als Antwort auf: [#568318]
Hier Klicken X
Hier Klicken

Aktuell

Veranstaltungskalender

Hier können Sie Ihre Anlässe eintragen, welche einen Zusammenhang mit den Angeboten von HilfDirSelbst.ch wie z.B. Adobe InDesign, Photoshop, Illustrator, PDF, Pitstop, Affinity, Marketing, SEO, Büro- und Rechtsthemen etc. haben. Die Einträge werden moderiert freigeschaltet. Dies wird werktags üblicherweise innert 24 Stunden erfolgen.
pdf-icon Hier eine kleine Anleitung.

Veranstaltungen
27.08.2019

Die smarte PDF-Workflow-Lösung für Druckereien — powered by Enfocus

Impressed GmbH, Hamburg
Dienstag, 27. Aug. 2019, 10.00 - 10.30 Uhr

Webinar

Wir stellen Ihnen das neueste Produkt aus dem Hause Impressed vor. Den Impressed Workflow Server (IWS) Der Impressed Workflow Server (kurz: IWS) ist eine automatisiert arbeitende PDF-Workflow-Lösung für Druckereien mit einer zentralen, Datenbank-gestützten Jobverwaltung und einer Browser-basierten Jobsteuerung. Die Bedienoberfläche des IWS ermöglicht eine Übersicht über die aktuellen in der Produktion befindlichen Dateien und kann deren weiteren Verlauf steuern. Der IWS automatisiert und standardisiert somit die Produktion - Powered by Enfocus! Der Impressed Workflow Server ist das Ergebnis unserer jahrzehntelangen Erfahrung mit Workflows für die Druckvorstufe sowie die logische Weiterentwicklung auf Basis von bewährten Enfocus Technologien.

Nein

Organisator: Impressed GmbH

Kontaktinformation: Detlef Grimm, E-Mailschulungen AT impressed DOT de

https://www.impressed.de/schulung.php?c=sDetail&sid=265

Impressed Workflow Server (IWS)
Veranstaltungen
28.08.2019

8005 Zürich
Mittwoch, 28. Aug. 2019, 18.00 - 20.15 Uhr

Meetup

«Das Leseerlebnis optimal gestalten, die eigenen Botschaften wirkungsvoll verbreiten und bei der Inhaltserstellung und -verwaltung von schlanken Prozessen und Effizienz profitieren - Publishing erfordert heute den richtigen Umgang mit Tools und Systemen. Eine Mehrkanal-Strategie ist dabei in den meisten Fällen von den Lesern nicht nur gefordert, sondern verdichtet die bereits bestehenden Herausforderungen. Gerade Automatisierungen können hier Abhilfe verschaffen. Nicht nur ermöglichen sie ein durchgängiges und einheitliches Leseerlebnis auf allen Kanälen. Sie machen den Prozess vielmehr effizienter und effektiver. An diesem Publishing-Meetup zeigt Benjamin Linsi verschiedene Beispiele für automatisiertes Publishing - von der kostengünstigen Web-to-Print Lösung über eine ausgeklügeltes Mehrkanal-Publishing-System bis zu einem umfassenden, medienneutralen und browserbasiertem Redaktionssystem. - AGENDA - 18.00 Speech von Benjamin Linsi 19.30 Apéro & Networking 20.15 Check-out - SPEAKER - "Als Marketer denke ich immer von der Zielgruppe aus, lege die Botschaften fest und bestimme, welche Kanäle bespielt werden. Dabei ist ein effizienter Prozess meist massgebend für die eigene Zielerreichung." Benjamin Linsi ist im Marketing Zuhause und setzt sich dabei, sowohl für seine eigene Arbeit als auch im Kundenkontakt, stark mit digitalen Lösungen auseinander. In seiner Position bei der Medienmacher AG setzt er sich dabei fokussiert mit dem Mehrwert von Publishing-Systemen auseinander.»

Nein

Organisator: Digicomp Academy AG

Kontaktinformation: Isil Günalp, E-Mailisil.guenalp AT digicomp DOT ch

https://www.meetup.com/de-DE/Publishing-Group-Switzerland/events/263255802/

Mit Automatisierung den Publishing-Workflow verbessern