[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt DPS / Schaltflächen-Einstellungen per JS ändern

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

DPS / Schaltflächen-Einstellungen per JS ändern

peterhenrich
Beiträge gesamt: 139

27. Mär 2014, 11:54
Beitrag # 1 von 17
Bewertung:
(4450 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,

ich baue gerade an einem Skript, mit dem automatisch die selektierten Bilder zu einer Diaschau zusammengebaut werden sollen. Das klappt soweit recht gut und die Werte in dem Einstellungsfenster kann ich mit z. B.
Code
for (var j = app.selection.length - 1; j > -1; j--) { 
myMSO.addItemsAsState(app.selection[j]);
}
app.selection[0].insertLabel("kAdobeDPSInteractivity_Type","Slideshow");
myMSO.insertLabel("kAdobeDPSInteractivity_AutoStart" ,"true");
myMSO.insertLabel("kAdobeDPSInteractivity_AutoStartDelay" ,"0.5");
myMSO.insertLabel("kAdobeDPSInteractivity_TapEnabled" ,"true");

verändern.

Feature des Skripts soll sein, dass bei Vorhandensein eines Elements, das irgendwo im Namen "btnPrev" enthält, dieses als Schaltelement für "Gehe zum vorherigen Status" ausgewählt wird. Ich finde aber keine Möglichkeit, per Skript zu steuern, auf welches MSO sich die Aktion beziehen soll.
Wo finde ich denn hierzu die entsprechende Einstellung?

Gruß
Peter
X

DPS / Schaltflächen-Einstellungen per JS ändern

WernerPerplies
Beiträge gesamt: 2762

27. Mär 2014, 17:31
Beitrag # 2 von 17
Beitrag ID: #525563
Bewertung:
(4407 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Peter,

ich verstehe Deine Frage nicht.

Willst Du die name properties von Objekten durchsuchen, ob Sie einen Name haben, der "btnPrev" enhält? - Das sollte einfach sein.

Oder willst Du in Labels nach Schlüsseln suchen, die "btnPrev" enthalten?

Oder willst Du die Werte, die hinter den Schlüsseln stecken, durchsuchen, ob Sie "btnPrev" enthalten?

Und welche Einstellung meinst Du konkret?


als Antwort auf: [#525526]

DPS / Schaltflächen-Einstellungen per JS ändern

peterhenrich
Beiträge gesamt: 139

27. Mär 2014, 18:08
Beitrag # 3 von 17
Beitrag ID: #525565
Bewertung:
(4391 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Werner,

da habe ich wohl nicht alles genau beschrieben:

- Den Button finde ich.

- Auch das MSO generiere ich problemlos.

Jedoch soll es so sein, dass der von mir verwendete Button zwar vordefiniert ist als einer, der auf den vorherigen Zustand schaltet. Jedoch weiß der Button noch nicht, auf welches MSO er jetzt verweisen soll. Folgendes Vorher-Nachher-Bild Bild soll das verdeutlichen - es geht um das Dropdown hinter Objekt:


als Antwort auf: [#525563]
Anhang:
vorher_nachher.jpg (135 KB)

DPS / Schaltflächen-Einstellungen per JS ändern

WernerPerplies
Beiträge gesamt: 2762

27. Mär 2014, 18:13
Beitrag # 4 von 17
Beitrag ID: #525566
Bewertung:
(4387 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Du willst also die name properties daraufhin untersuchen. ob der Name btnPrev enthält und den / die entsprechenden Button(s) zurückbekommen?


als Antwort auf: [#525565]

DPS / Schaltflächen-Einstellungen per JS ändern

peterhenrich
Beiträge gesamt: 139

27. Mär 2014, 18:25
Beitrag # 5 von 17
Beitrag ID: #525567
Bewertung:
(4379 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Nein, es geht konkret um die Veränderung der Eigenschaft, die hinter Objekt steht:

Im linken Bereich ist zu sehen, dass der Button nicht weiß, auf welches MSO er zugreifen soll: "(kein Objekt mit mehreren Status)".

Nach dem Skriptdurchlauf (für den Screenshot habe ich das händisch gemacht) soll hinter Objekt das MSO stehen, auf das sich der Button bezieht - hier in dem Fall auf "TestMSO 2".


als Antwort auf: [#525566]
Anhang:
Bildschirmfoto 2014-03-27 um 18.22.13.png (90.3 KB)

DPS / Schaltflächen-Einstellungen per JS ändern

Uwe Laubender
Beiträge gesamt: 5319

27. Mär 2014, 18:38
Beitrag # 6 von 17
Beitrag ID: #525568
Bewertung:
(4376 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo, Peter!

Befindet sich der Button innerhalb des MSOs?
Falls ja, ist sein Name innerhalb des MSOs eindeutig, also nur ein einziges mal vergeben?


als Antwort auf: [#525565]

DPS / Schaltflächen-Einstellungen per JS ändern

Uwe Laubender
Beiträge gesamt: 5319

27. Mär 2014, 18:43
Beitrag # 7 von 17
Beitrag ID: #525569
Bewertung:
(4364 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo, Peter!

Hier mal ein paar Zeilen Code, die beschreiben wie ein Button zu seinem MSO und seinem Ziel (ein bestimmter MSO-Status) kommt.

Nehmen wir an, die Datei kennt nur einen einzigen Button (außerhalb des MSOs) und ein einziges MSO, die einfach so auf der Seite stehen, dann zielt mit folgendem Code der Button auf den zweiten Status des MSOs:

Code
var myButton = app.documents[0].buttons[0]; 
var myMSO = app.documents[0].multiStateObjects[0];


myButton.gotoStateBehaviors.add({

associatedMultiStateObject:myMSO,
enableBehavior:true,
behaviorEvent:BehaviorEvents.MOUSE_UP,
stateName:myMSO.states[1].name

});

myButton.activeStateIndex = 0;



als Antwort auf: [#525567]
(Dieser Beitrag wurde von Uwe Laubender am 27. Mär 2014, 18:56 geändert)

DPS / Schaltflächen-Einstellungen per JS ändern

WernerPerplies
Beiträge gesamt: 2762

27. Mär 2014, 18:51
Beitrag # 8 von 17
Beitrag ID: #525571
Bewertung:
(4353 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Sorry Peter,

ich habe habe noch nie mit MultiStateObjects gearbeitet.

Deine ursprüngliche Frage hatte ich so verstanden, das Du irgendwelche Properties durchsuchen willst.

Aber wenn Du mir Dein Beispiel zu Verfügung stellst, schaue ich mir das an, sonst muss ich zuerst einmal passen.


als Antwort auf: [#525567]

DPS / Schaltflächen-Einstellungen per JS ändern

WernerPerplies
Beiträge gesamt: 2762

27. Mär 2014, 19:00
Beitrag # 9 von 17
Beitrag ID: #525573
Bewertung:
(4330 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Uwe,

ich habe es fast vermutet, wir sind wieder bei Events. ;-)

Wenn ich Peters Frage auf eine GUI-Anwendung übertrage, würde ich mir in den entsprechenden Eventhandlern den jeweiligen Evenauslöser (hier also Button mit zugehörigem Eventhandler) auf einen Stack (Array) packen, dann würde ich immer den Weg kennen, wo ich herkomme.
So ähnlich müsste es hier doch auch funktionieren, oder?


als Antwort auf: [#525569]

DPS / Schaltflächen-Einstellungen per JS ändern

Uwe Laubender
Beiträge gesamt: 5319

27. Mär 2014, 19:04
Beitrag # 10 von 17
Beitrag ID: #525574
Bewertung:
(4326 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo, Peter!

Sorry, hab' Deinen Screenshot erst jetzt gesehen.
Du möchtest ja ein gotoNextStateBahavior im Button etablieren:

Code
var myButton = app.documents[0].buttons[0]; 
var myMSO = app.documents[0].multiStateObjects[0];

//Reinen Tisch machen, falls vom vorherigen Pröbeln noch ein
//oder mehrerere Aktionen im Button verankert sind:

myButton.behaviors.everyItem().remove();

myButton.gotoNextStateBehaviors.add({

associatedMultiStateObject:myMSO,
enableBehavior:true,
behaviorEvent:BehaviorEvents.MOUSE_UP

});

myButton.activeStateIndex = 0;



als Antwort auf: [#525567]

DPS / Schaltflächen-Einstellungen per JS ändern

Uwe Laubender
Beiträge gesamt: 5319

27. Mär 2014, 19:09
Beitrag # 11 von 17
Beitrag ID: #525575
Bewertung:
(4324 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo, Werner!

Nicht ganz.
Das Zusammenspiel von Buttons, MSOs und Behaviors ist in Jongwares DOM-Dokumentation vorbildlich ausgeführt. Da gibt's eigentlich keine offenen Fragen.

Allerdings weiss ich nicht genau, was denn der Peter eigentlich machen möchte.
Vielleicht stellt er mal ein funktionierendes Beispiel zum Download bereit?

Dazu noch die Ausgangssituation.

Also da habe ich keine Bedenken; das lässt sich per Skript alles zusammenbasteln.


als Antwort auf: [#525573]

DPS / Schaltflächen-Einstellungen per JS ändern

peterhenrich
Beiträge gesamt: 139

27. Mär 2014, 20:25
Beitrag # 12 von 17
Beitrag ID: #525581
Bewertung:
(4208 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Uwe,

vielen Dank für die Info. Ich habe bei jongware an der falschen Stelle gesucht: Ich hatte gedacht, dass die Verlinkung des Buttons mit dem MSO auf Button-Ebene geschieht - richtigerweise funktioniert das natürlich eine Ebene tiefer auf der dem Button zugeordneten Aktionsebene.

Ich denke, dass ich jetzt weiter komme. Sobald das Skript läuft, stelle ich es auch hier ein. Ich war am Anfang der Woche auf einem DPS-Seminar. Dort gab es viele umständliche Schritte, wo ich mir gleich dachte, dass es dazu ein Script geben müsste.

Danke auch an Werner

Peter


als Antwort auf: [#525575]

DPS / Schaltflächen-Einstellungen per JS ändern

Uwe Laubender
Beiträge gesamt: 5319

27. Mär 2014, 20:36
Beitrag # 13 von 17
Beitrag ID: #525582
Bewertung:
(4204 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo, Peter!

Sollte der Button innerhalb eines MSOs liegen, wird's mit der Referenzierung des Buttons möglicherweise etwas schwieriger, da alle Objekte innerhalb eines MSOs, die nicht im aktiven Status liegen mit document.allPageItems nicht erfasst werden können.

Was aber immer geht ist ein bekanntes Objekt per ID anzusprechen:

Code
myButton = app.documents[0].pageItems.itemByID(/*integer*/); 


myButton kann da liegen wo er will.

Zum Beispiel im Status 9999 eines MSOs, das meinetwegen auch noch mit anderen Objekten gruppiert ist und dessen Gruppe in ein Rechteck eingefügt wurde, das selbst verankert in einem Textrahmen im Status 1111 eines anderen MSOs liegt ;-) [Huch! Was für ein Szenarium!]

Die pageItems mit app.documents[0].allPageItems über eine for-Schleife nach diesem Button abzusuchen, hilft da wenig.


als Antwort auf: [#525581]

DPS / Schaltflächen-Einstellungen per JS ändern

peterhenrich
Beiträge gesamt: 139

27. Mär 2014, 20:43
Beitrag # 14 von 17
Beitrag ID: #525583
Bewertung:
(4194 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Uwe,

viel zu weit gedacht. Plan ist:

- Anwender markiert alles, was er zu einem MSO machen möchte.

- Skript rennt durch die Selektion. Enthält der Name eines Objekts btnPrev oder btnNext (also auch "meinSchönerWeiterschaltknopf_btnNext") wird der nicht Teil des MSOs sondern Steuerelement.

- Letzteres kann vordefiniert sein mit Aktionen. Wenn nicht, werden die auch gesetzt.

- Aus allen MSO-Bestandteilen wird dann unterhalb eine Klickleiste mit allen Voransichten der einzelnen Stati erstellt.

- Was der Anwender nicht haben will, kann er einfach löschen.

Werde das Skript hier einstellen, sobald es fertig ist.

Gruß

Peter


als Antwort auf: [#525582]

DPS / Schaltflächen-Einstellungen per JS ändern

Uwe Laubender
Beiträge gesamt: 5319

27. Mär 2014, 22:30
Beitrag # 15 von 17
Beitrag ID: #525587
Bewertung:
(4099 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo, Peter!

Na dann ;-)

Ach ja: wie regelst Du die Reihenfolge der Stati bei der Auswahl?
Nach Index? Da kannst Du Überraschungen erleben…


als Antwort auf: [#525583]
X