Appliquer une expression

Objectif : lire et analyser les éléments permettant de travailler avec la sélection utilisateur et une entrée utilisateur.

Avertissement

Les éléments vus précédemment ne seront pas traités à nouveau.

1 – récupérer les .jsx t .json de travail

2 - indication du .json et du modèle d’expression

// nom du fichier json
var footage = 'exemple.json';

// modèle d'expression
var modele_expression = 'var donnees = footage(\'' + footage + '\').sourceData; donnees.{cle_propriete};';

Note

On notera ici la chaîne de caractère 'var donnees = footage(\'' + footage + '\').sourceData; donnees.{cle_propriete};'; et notamment la partie {cle_propriete}.

Nous remplacerons cette partie de la chaîne plus tard par un élément défini par l’utilisateur.

3 – mise à jour du modèle d’expression

// on prend notre bouton, on associe à sa propriété onClick une fonction
// lorsque le bouton sera cliqué,
// la fonction associée à la propriété onClick sera exécutée
bouton.onClick = function () {

 // on demande à l'utilisateur la clé à utiliser dans l'expression
 var cle = prompt ( 'indiquez la clé demandée', 'clé' );

 // on modifie le modèle d'expression en conséquence
 expression = modele_expression.replace( '{cle_propriete}', cle );

 // on applique l'expression
 appliquer_expression( expression );
};

Note

trois points intéressants ici :

  1. on demande à l’utilisateur une entrée
  2. on créé une expression à partir du modèle dans lequel on remplace {cle_propriete} par l’entrée utilisateur
  3. on appelle la fonction appliquer_expression avec l’expression nouvellement créé en paramètre

4 – application de l’expression

function appliquer_expression ( expression ) {
  /* applique une expression données aux calques textes donnés */

  var composition_active = app.project.activeItem;

  // si on a aucune composition sélectionnée
  if ( !composition_active || !(composition_active instanceof CompItem) ) {
    return alert("Aucune composition sélectionnée.");
  }

  var calques_selectionnes = composition_active.selectedLayers;

  // si on a aucun calque sélectionné
  if ( calques_selectionnes.length == 0 ) {
    return alert("Aucun calque sélectionné.");
  }

  var calques_texte_selectionnes = [];

  // on liste les calques texte
  for (var i = 0; i < calques_selectionnes.length; i++) {
    if ( calques_selectionnes[i] instanceof TextLayer ) {
      calques_texte_selectionnes.push( calques_selectionnes[i] );
    }
  }

  // si on a aucun calque texte sélectionné
  if ( calques_texte_selectionnes.length == 0 ) {
    return alert("Aucun calque texte sélectionné.");
  }

  // on applique l'expression aux calques texte sélectionnés
  for (var i = 0; i < calques_texte_selectionnes.length; i++) {
    calques_texte_selectionnes[i].text.sourceText.expression =  expression ;
  }

}

Note

Ici encore, trois éléments dans la fonction appliquer_expression :

  1. une boucle sélectionne les calques texte uniquement
  2. Si aucun calque texte : message et fin de la fonction
  3. si des calques, boucle pour modifier leur propriété text.sourceText.expression, laquelle se voit assigner l’expression en paramètre de la fonction.