IPB

Bienvenue invité ( Connexion | Inscription )

 
Reply to this topicStart new topic
> Applescript : mémoriser dernier choix dans dropdown Indesign, Définir dernier item sélectionné comme item par défaut
Options
Volodia Dimitri
posté 23 Apr 2020, 14:26
Message #1


Nouveau Membre


Groupe : Membres
Messages : 1
Inscrit : 23 Apr 2020
Membre no 211 396



Bonjour,

J'espère que quelqu'un va pouvoir m'aider car je n'ai rien trouvé sur la toile traitant de ce sujet
J'ai fait un menu déroulant sur Indesign en Applescript qui contient plusieurs item et qui se lance à l'ouverture d'un document Indesign.

A chaque ouverture de document, ce menu déroulant apparait et par défaut est sélectionné la première valeur (premier item).

Je voulais savoir s'il était possible qu'à chaque ouverture d'un nouveau document Indesign, le menu déroulant propose le dernier item utilisé ?

Autrement dit, le menu déroulant peut-il garder en mémoire le dernier item utilisé ?

Je ne sais pas trop comment procédé, j'ai même essayé de copier l'item sélectionné dans un fichier texte et je voulais indiquer au menu déroulant qu'il fallait afficher la prochain fois cet item mais là je bloque.

Je vous met ci-dessous mon code.

Quelqu'un peut-il 'aider ?

Code
tell application "Finder"
set the_file to ((path to desktop as text) & "Formats_Pubs.csv") as alias
end tell

set my_data to read the_file
set my_list to paragraphs of my_data as list

set ColumnA_list to {}
set ColumnC_list to {}
set ColumnD_list to {}


set oldDelims to AppleScript's text item delimiters
set AppleScript's text item delimiters to ";"



repeat with an_item in my_list
try
set end of ColumnA_list to text item 1 of an_item
set end of ColumnC_list to text item 3 of an_item
set end of ColumnD_list to text item 4 of an_item
end try
end repeat

set AppleScript's text item delimiters to oldDelims


tell application "Adobe InDesign CC 2018"

activate

set varDropDownList to ColumnA_list
set varSelectedIndex to 1
set varMinimumWidth to 150
set myEventNames to {"afterNew", "afterUpdate", "afterInvoke", "afterActivate", "afterContextChanged", "afterSelectionAttributeChanged", "afterSelectionChanged", "beforeUpdate"}
set myDialog to make dialog with properties {name:"CHOIX DU FORMAT :"}

tell myDialog
tell (make dialog column)
tell (make border panel)
tell (make dialog column)
tell (make dialog row)

---- DRODPDOWN
make static text with properties {static label:"LISTE DES FORMATS : "}
set varDropDown to make dropdown with properties {string list:varDropDownList, selected index:(varSelectedIndex - 1), min width:varMinimumWidth}
tell varDropDown
repeat with myEventName in myEventNames
make event listener with properties {event type:myEventName, handler:my dropdownchange}
end repeat
end tell
end tell
end tell
end tell
end tell
end tell

--get the results
set myResult to show myDialog
if myResult = true then
-- varDropDown Handler (Dropdown)
set varSelectedIndex to ((selected index of varDropDown) + 1)
set varDropDownListChoice to item varSelectedIndex of varDropDownList as item
end if
destroy myDialog
end tell

on dropdownchange()
tell application "Adobe InDesign CC 2018"
set myEvent to evt
display dialog ("This event is the " & event type of myEvent & " event.")
end tell
end dropdownchange

set the_position to indexof(varDropDownListChoice, ColumnA_list)
if the_position is 0 then
tell application "Finder"
activate
display dialog "The search term does not exist in Column D."
end tell
return
end if


if the_position is 1 then
tell application "Finder"
activate
display dialog "Veuillez choisir un format valable"
end tell
return
end if


on indexof(theItem, theList)
set text item delimiters to return
set theList to return & theList & return
set text item delimiters to {""}
try
-1 + (count (paragraphs of (text 1 thru (offset of (return & theItem & return) in theList) of theList)))
on error
0
end try

end indexof
Go to the top of the page
 
+Quote Post
PBell
posté 24 Apr 2020, 07:46
Message #2


Macbidouilleur de bronze !
**

Groupe : Membres
Messages : 264
Inscrit : 7 Dec 2013
Lieu : Ile de France
Membre no 188 169



Bonjour,
Je n'ai pas InDesign, donc mon aide est limitée. Cependant, dans le guide InDesign_ScriptingGuide_AS que tu peux trouver sur le site Adobe, il y a des parties de réponse, me semble-t-il, en pages 135, 160 et 161.
D'après ce document, l'objet dropdown d'une fenêtre de dialogue a 2 propriétés :

set myVerticalJustificationMenu to make dropdown with properties {string list:{"Top", "Center", "Bottom"}, selected index:0}

La string list contient les items du menu, ce que tu utilises dans ton script. La seconde propriété est le "selected index".
Les pages 160 et 161 indiquent bien que ce "selected index" retourne l'option choisie. Il semble donc logique que lors de la création du dropdown, tu puisse mettre cet index à une valeur non 0
Cette valeur doit bien sur être cohérente avec le nombre d'items de la string list (en fait ce nombre -1 car l'index débute à 0)
C'est bien ce que tu utilises :

set varDropDown to make dropdown with properties {string list:varDropDownList, selected index:(varSelectedIndex - 1), min width:varMinimumWidth}
(je n'ai pas trouvé dans le documentation min with)

Le problème, je crois, est que ta variable varSelectedIndex est initialisée à 1, donc "selected index" est à 0.
Tu peux faire un premier test en mettant, dans ta ligne de création du dropdown, une valeur d'index fixe comme 2, en supposant que ta liste contient plus de 3 items (0,1,2,...).
Cela devrait afficher la troisième option du dropdown menu comme le laisse entendre la documentation.

A ce propos, sauf erreur de ma part, ton script assigne les valeurs de cette liste sur ces 2 lignes :
set end of ColumnA_list to text item 1 of an_item
...
set varDropDownList to ColumnA_list

Je ne connais pas ce que contient an_item et je ne peux le vérifier, mais il semble contenir la première ligne (paragraphe) du fichier Formats_Pubs.csv
Es tu bien sûr que c'est une liste de plusieurs éléments ?
Pour s'en assurer, affiche le count de cette liste.

Dans le pratique, je propose 2 étapes:
1) assigne en dur dans le script ColumnA_List avec une valeur : {"item0", "item1", "item2", "item3"} et crée l'objet dropwdown avec cette liste et l'index 2. Vérifie que c'est bien "Item2" qui apparait dans le dialogue. Si non, il faut se concentre sur ce point
2) Si oui, alors ton problème est sans doute la lecture de la liste : si la ligne 1 de ton fichier contient des valeurs séparées par des "," ou ";", il faut mettre cette ligne 1 dans une variable et la couper avec les Applescript text délimiter pour en faire vraiment une liste et pas une string contenant des "," ou ";".

Cordialement


--------------------
iiMac 24 M1 16Go/1To 13.5.1
iMac 27 i5 3,1GHz 8Go/1To 10.11.6 / 10.6.8
iMac 20 C.Duo 2,6Ghz 8Go/350Go 10.6.8 / 10.11
Mini C.Duo 2,0Ghz 2Go/500Go 10.6.8
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 utilisateur(s) sur ce sujet (1 invité(s) et 0 utilisateur(s) anonyme(s))
0 membre(s) :

 



Nous sommes le : 29th March 2024 - 09:43