Applescript : mémoriser dernier choix dans dropdown Indesign, Définir dernier item sélectionné comme item par défaut |
Bienvenue invité ( Connexion | Inscription )
Applescript : mémoriser dernier choix dans dropdown Indesign, Définir dernier item sélectionné comme item par défaut |
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 |
|
|
24 Apr 2020, 07:46
Message
#2
|
|
Macbidouilleur de bronze ! Groupe : Membres Messages : 265 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 |
|
|
Nous sommes le : 26th September 2024 - 02:00 |