IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

XCode Discussion :

Passer de Applescript à Xcode / cherche un coup de main pour une petite application


Sujet :

XCode

  1. #1
    Membre à l'essai
    Homme Profil pro
    Enseignant
    Inscrit en
    Août 2014
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2014
    Messages : 50
    Points : 15
    Points
    15
    Par défaut Passer de Applescript à Xcode / cherche un coup de main pour une petite application
    Bonjour à tous,

    Je suis monteur, formateur et rédacteur d'un PDF de formation de 407 pages sur Final Cut Pro X (FCP X).
    (vous pouvez si vous le souhaitez voir la page où je le vends (pour une somme disons ... modique, vu le boulot) martingosset.com) mais je ne suis pas là pour faire de la pub pour ce machin.

    Pour aider les monteurs film, j'ai songé à créer une petit application gratuite qui permettrait de faciliter ce qu'on appelle dans le métier le "dérushage"(partie du travail qui consiste à organiser les plans issus du tournage)

    Avec la très aimable et précieuse aide de PBELL, j'ai pu écrire une petit application.
    (le fil de discussion est ici : http://www.developpez.net/forums/d14...hier-textedit/ )

    Cette petite application que j'ai appelé BOOMERANG (on peut la trouver ici : http://gossetmartin.free.fr/BOOMERANG (clic droit sur BOOMERANG.app.zip pour la télécharger) est un simple Applescript qui transforme un fichier texte (un .xml ouvrable dans TextEdit) en un autre.

    L'application étudie le texte du fichier et le modifie selon plusieurs paramètres définis par l'utilisateur au démarrage de l'application.

    Une fois cette app terminé, j'ai souhaité qu'une fenêtre UNIQUE permette de determiner divers options suivant les souhaits de l'utilisateur. Mais j'ai vite compris qu'une telle fenêtre n'était pas envisageable en Applescript. J'ai donc étudié la programmation en Cocoa dans Xcode et réussi à créer un fenêtre et à lié les différents champs à une variable.
    Je pensais qu'il serait simple de lier cette fenêtre à l'Applescript que j'avais obtenu mais j'ai vite compris que c'était hors de portée pour moi qui ne suis pas du tout programmeur. Même en consultant les sites indiqué par Philippe. J'ai tenté de transposer le script en applescriptobjc mais je me rends compte que c'est une autre montagne.

    Voici la fenêtre en question
    Pièce jointe 156341

    Après avoir beaucoup bossé, je baisse les bras et me dit qu'il me reste à accepter que je ne suis pas programmeur !!!
    Je sollicite donc votre aide. Je serai ravi de vous offrir mon PDF mais aussi vous aider en retour, dans votre apprentissage du logiciel Final Cut Pro X si vous l'utilisez. Avec grand plaisir

    Le principe de la recherche consiste en plusieurs étapes:

    I
    - on enregistre ce qui est entré et coché par l'utilisateur dans la fenêtre (une sorte de préférence utilisateur pour ne pas avoir à reremplir cette fenêtre à chaque utilisation). Je crois que dans Xcode, il y a lors de la construction de la fenêtre, une option qui permet de les enregistrer sans avoir à faire du code, mais je n'ai pas tout saisi).
    II- on demande à l'utilisateur de choisir son fichier ("monfichierxml.xml").
    III- créer une copie du fichier texte ("monfichierxml_NEW.xml").
    IV- Modifier le contenu du nouveau fichier en fonction des options choisies dans la fenêtre.

    IV.A Si la case keyword est cochée par l'utilisateur: (T_KEYWORD = true)

    On consulte les champs "rate with" de la fenetre: on appelle cette valeur "ratesign" (par exemple)

    Première modification
    1. repérer toutes les lignes du fichier texte commençant par "</event>"
    2. insérer 3 lignes juste avant
    3a. écrire "<keyword-collection name="ratesign"/>" dans la premiere (exemple si le ratesign est une astérisque : "<keyword-collection name="*"/>")
    3b. écrire "<keyword-collection name="ratesign deux fois"/>" dans la seconde (exemple : "<keyword-collection name="**"/>")
    3c. écrire "<keyword-collection name="ratsigne trois fois"/>" dans la troisième ((exemple : "<keyword-collection name="***"/>")
    3d..... on ajoute autant de lignes que l'indique le champs "number of rate" (à priori le monteur choisira entre 3 et 5 niveaux de classement)

    Seconde modification
    1. rechercher les lignes contenant à la fois le texte <rating start=" ET le texte value ="favorite" ET le caractère ratesign en un, deux, trois... exemplaires
    (ex :<rating start="9143/5s" duration="55800/2500s" name="texte 1 entré par le monteur" value="favorite" note="**texte 2 entré par le monteur"/> où ici le caractère recherchée est l'astérisque *)
    2. On insert une nouvelle ligne juste après:
    <keyword start="9143/5s" duration="55800/2500s" value="**" note="**texte 2 entré par le monteur"/>
    Notes:
    -les parties en vert sont tirées des parties en vert dans la ligne originale).
    -pour simplifier, j'ai mis l'astérisque * à la place de ratesign)
    -ici il faudra faire un boucle pour chercher les lignes contenant le caractère ratesign en un, deux, trois...exemplaires selon la valeur indiquée par l'utilisateur dans le champs "number of rate")

    IV.B Si la case Marker est cochée: (T_MARKER = true)

    1. rechercher les lignes contenant à la fois le texte <rating start= ET le texte value ="favorite"
    (ex :<rating start="9143/5s" duration="55800/2500s" name="texte 1 entré par le monteur" value="favorite" note="texte 2 entré par le monteur"/>
    (on a déjà cherché ces lignes-la mais cette fois il n'est pas nécessaire qu'elles contiennent le caractère ratesign)
    2. On insert une nouvelle ligne juste après:
    <marker start="9143/5s" duration="100/2500s" value="texte 2 entré par le monteur"/>
    Note:
    -les parties en bleu sont écrites et les parties en vert sont tirées des parties en vert dans la ligne originale).
    IV.C Si la case Favorite est décochée: (T_FAVORITE = false)

    1.
    rechercher et supprimer tous les lignes contenant à la fois le texte <rating start= ET le texte value ="favorite"

    IV.D Si la case Roles est cochée: (T_ROLL = true)

    1. on rend accessible la possibilité de nourrir les champs ITW, LIVE,ILL, AMB, other1, other 2, etc... dans la fenêtre
    (c'est une option lorsqu'on construit la fenêtre donc je crois que ça n'entre pas dans le code)
    On obtient les variables T_ITW, T_LIVE,T_ILL,T_AMB,T_OTHER1, etc...
    2. On fait une boucle en créant une variable P_ROLE à laquelle on attribue successivement les valeur T_ITW puis T_LIVE, etc...
    3. On recherche les lignes contenant "clip name=" et on cherche si on y trouve les textes choisi par l'utilisateur (donc le P_ROLL du moment dans la boucle)
    (exemple: <clip name="ILL général" duration="236700/2500s" start="1813s" format="r1" tcFormat="NDF">
    Note:
    -on va travailler sur les 2 lignes qui suivent nécessairement cette ligne lorsqu'elle commence par <clip name:<clip name="ILL général" duration="236700/2500s" start="1813s" format="r1" tcFormat="NDF">
    <video name="Pocket_1_2014-05-28_0030_C0000 - v1" offset="1813s" ref="r2" duration="236700/2500s" start="1813s"/>
    <audio name="Pocket_1_2014-05-28_0030_C0000 - a1" lane="-1" offset="1813s" ref="r2" duration="4544640/48000s" start="1813s" srcCh="1, 2"/>


    4.
    On ajoute à la fin de la ligne suivante (la ligne commençant par "<video name=") le contenu "role=video." & P_ROLL & ">"<video name="Pocket_1_2014-05-28_0030_C0000 - v1" offset="1813s" ref="r2" duration="236700/2500s" start="1813s" role="video.ILL">
    Note:
    -les parties en bleu sont laissées telles quelle et la partie en violet est ajoutée, la partie en vert est tirée de la partie en vert dans la ligne précédente (commençant par "<clip name") qui est en fait la valeur P_ROLL.

    5. On insert dans la ligne suivante (la ligne commençant par "<audio name=") le contenu "role=audio." & P_ROLL & ">"
    (exemple: <audio name="Pocket_1_2014-05-28_0030_C0000 - a1" lane="-1" offset="1813s" ref="r2" duration="4544640/48000s" start="1813s" role="dialogue.audioILL" srcCh="1, 2"/>).
    Note:
    -les parties en bleu sont laissées telles quelle et la partie en violet est ajoutée, a partie en vert est tirée de la partie en vert dans la ligne précédente (commençant par "<clip name") qui est en fait là encore la valeur P_ROLL.


    EN OPTION:

    J'aimerais pour simplifier le travail de l'utilisateur, pouvoir controller FCP X. (Mais ce serait sûrement un petit luxe et cela peut sans problème être omis).

    Je m'explique:

    Le fichier "monfichierxml.xml" est en fait le fruit d'un export fait par l'utilisateur après avoir sélectionné une entité qu'on appelle "Événement" dans FCP X.
    Cet export est fait en choisissant le menu "Fichier" puis "Exporter" puis "XML".
    J'ai cru comprendre qu'on pouvait "implémenter" le sous-menu "Service" du menu "Final Cut Pro". Je me demandais donc si on ne pouvait pas permettre a l'utilisateur de lancer l'application depuis ce sous menu. L'app BOOMERANG se chargeant de l'export... je ne sais pas si cela complique fort la programmation !?
    L'idée serait aussi qu'en retour et une fois créé le fichier "monfichierxml_NEW.xml", on puisse controller FCP X pour qu'il importe ce nouveau fichier en passant par le menu "Fichier" puis "importer" puis "xml".

    Au total, l'utilisateur n'aurait donc qu'à choisir son événement dans Final Cut Pro X et lancer BOOMERANG depuis le sous-menu "Service".

    ------------------------------------------------------------------------------------
    MAJ 16 septembre 15h11:

    J'avais cru comprendre qu'on pouvait utiliser un commande (NSAppleScript) dans Xcode pour lancer un simple AppleScript. Peut-être la solution est elle là. Mais je n'y suis pas parvenu. Cela permettrait peut-être de ne pas tout réécrire ?
    ------------------------------------------------------------------------------------

    Voili voilà

    Je me remets seulement cette app après avoir un peu baisser les bras. Il y aura peut-être de tout petit ajouts qui ne me reviennent pas aujourd'hui mais je crois que je saurai m'en débrouiller avec la première version.

    En vous remerciant mille fois de votre aide éventuelle

    Cordialement

    Martin Gosset

  2. #2
    Membre à l'essai
    Homme Profil pro
    Enseignant
    Inscrit en
    Août 2014
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2014
    Messages : 50
    Points : 15
    Points
    15
    Par défaut
    ------------------------------------------------------------------------------------
    MAJ 17 septembre 09h09:

    J'ai repris ma tentative précédente dans Xcode et placé des petites fenêtres pour vérifier que ça tourne.
    Je mets la totalité de mon code tout en bas de ce post.

    Pour l'instant le programme semble tenir compte des différentes options cochées et champs nourris dans la fenêtre
    et sollicite ensuite l'utilisateur pour choisir son fichier xml.
    donc cette partie de code fonctionne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    
    on buttonClicked_(sender)
    -- pour verifier que les valeurs entrée dans les champs sont prise en compte ((à supprimer ensuite)
           display alert "Hello there " & textFieldITW & textFieldLIVE & textFieldAutre1 & textFieldAutre2 & textFieldAutre3 & textFieldAutre4 & textFieldAutre5 & textFieldCote & textFieldNiveauCote
    -- pour verifier que les cases cochées sont prise en compte (à supprimer ensuite)
            if cocherFav then
                display alert "les favoris sont cochés "
            end if
                if cocherMotcle then
                display alert "les Mots clés sont cochés "
            end if
                if cocherMarqueur then
                display alert "les Marquers sont cochés "
            end if
                if cocherRole then
                display alert "les Roles sont cochés "
            end if
    -- fenetre pour choisir le fichier xml
            set source to choose file of type {"fcpxml"} with prompt "Choissez le fichier .fcpxml:"
    -- lancer le programme principal
            ProgPrincipal_(source)
           
        end buttonClicked_
    Par contre la partie programme principale ne semble pas fonctionner

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    on ProgPrincipal_(source)
    -- créer le nouveau nom de fichier  "nom orginal _NEW"
    tell application"Finder"
            set Nom to name of source
            set NouvNom to (text 1 thru ((length of Nom) - 7) of Nom) & "_NEW.fcpxml"
    -- alerte pour dire que le nom du nouveau fichier est créé ( à supprimer ensuite)
        display alert "le nom du nouveau fichier xml est créé" giving up after 5
    end tell
        
    -- Initialisation des variables
     set MesLignes to paragraphs of (read source) -- lecture des lignes source
        
    try
    open for access file Destination with write permission -- crée le fichier destination et l'ouvre en écriture
    end try
        
    repeat with LaLigne in MesLignes -- boucle sur les lignes du fichier
            if (LaLigne contains "<rating start") then
                LRatingkeyword(LaLigne, Destination)
                LRatingmarker(LaLigne, Destination)
                else if LaLigne contains "</event>" then
                L_Events(LaLigne, Destination)
                else if LaLigne contains "<clip name=" then
                set PROLE to LClipName(LaLigne, Destination)
                else if LaLigne contains "<video name=" then
                LVideoName(LaLigne, Destination, PROLE)
                else if LaLigne contains "<audio name=" then
                L_Audio_Name(LaLigne, Destination, PROLE)
                set PROLE to ""
                else
                write (LaLigne & return) to file Destination starting at eof
    end if
            
    end repeat
        close access file Destination
        display alert "votre nouveau fichier xml est ok" giving up after 5
    end ProgPrincipal

    je n'ai en effet pas le message attendu "le nom du nouveau fichier xml est créé"


    donc j'en suis là pour l'instant. Pas bien loin donc !!!


    Le code en entier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    
    --
    --  AppDelegate.applescript
    --  BOOMERANG14AOUT2
    --
    --  Created by samy samy on 14/08/2014.
    --  Copyright (c) 2014 IN THE SOCKS OF FCP X. All rights reserved.
    --
    
    
    script AppDelegate
    propertyparent : class"NSObject"
        
    -- IBOutlets
        property window : missing value
        property textFieldITW : "ITW"
        property textFieldLIVE : "LIVE"
        property textFieldILL : "ILL"
        property textFieldAMB : "AMB"
       property textFieldAutre1 : ""
       property textFieldAutre2 : ""
       property textFieldAutre3 : ""
       property textFieldAutre4 : ""
       property textFieldAutre5 : ""
       property cocherFav : false
       property cocherMotcle : false
       property cocherMarqueur : false
       property cocherRole : false
       property textFieldCote : "*"
       property textFieldNiveauCote : "5"
       property source : ""
       property Guil : ASCII character 34 -- 34 est un guillement
       property CROCHET : ASCII character 60 -- 60 est un chevron <
       property PROLE : ""
     
       
        on buttonClicked_(sender)
    -- pour verifier que les valeurs entrée dans les champs sont prise en compte ((à supprimer ensuite)
           display alert "Hello there " & textFieldITW & textFieldLIVE & textFieldAutre1 & textFieldAutre2 & textFieldAutre3 & textFieldAutre4 & textFieldAutre5 & textFieldCote & textFieldNiveauCote
    -- pour verifier que les cases cochées sont prise en compte (à supprimer ensuite)
            if cocherFav then
                display alert "les favoris sont cochés "
            end if
                if cocherMotcle then
                display alert "les Mots clés sont cochés "
            end if
                if cocherMarqueur then
                display alert "les Marquers sont cochés "
            end if
                if cocherRole then
                display alert "les Roles sont cochés "
            end if
    -- fenetre pour choisir le fichier xml
            set source to choose file of type {"fcpxml"} with prompt "Choissez le fichier .fcpxml:"
    -- lancer le programme principal
            ProgPrincipal_(source)
           
        end buttonClicked_
    
    
    
    
    
    
    -- programme principal
    
    
    on ProgPrincipal_(source)
    -- créer le nouveau nom de fichier  "nom orginal _NEW"
    tell application"Finder"
            set Nom to name of source
            set NouvNom to (text 1 thru ((length of Nom) - 7) of Nom) & "_NEW.fcpxml"
    -- alerte pour dire que le fichier est créé ( à supprimer ensuite)
        display alert "your NEW fcpxml is ready" giving up after 5
            end tell
        
        
        
    -- Initialisation des variables
        
        set MesLignes to paragraphs of (read source) -- lecture des lignes source
        
    try
    open for access file Destination with write permission -- crée le fichier destination et l'ouvre en écriture
    endtry
        
    repeat with LaLigne in MesLignes -- boucle sur les lignes du fichier
            if (LaLigne contains "<rating start") then
                LRatingkeyword(LaLigne, Destination)
                LRatingmarker(LaLigne, Destination)
                else if LaLigne contains "</event>" then
                L_Events(LaLigne, Destination)
                else if LaLigne contains "<clip name=" then
                set PROLE to LClipName(LaLigne, Destination)
                else if LaLigne contains "<video name=" then
                LVideoName(LaLigne, Destination, PROLE)
                else if LaLigne contains "<audio name=" then
                L_Audio_Name(LaLigne, Destination, PROLE)
                set PROLE to ""
                else
                write (LaLigne & return) to file Destination starting at eof
    end if
            
    end repeat
        close access file Destination
        display alert "your NEW fcpxml is ready" giving up after 5
    end ProgPrincipal
    
    
    
    
    
    
    
    
    -- ********************************* traite les lignes commençant par "raiting start"
    on LRatingkeyword(Ligne, Fichier)
        set TStart to CROCHET & "rating start=" & Guil
        set TFavorite to "value=" & Guil & "favorite" & Guil
        set TNote to "note="
        set TName to "name="
        set Ligne2 to text of Ligne
        write (Ligne & return) tofile Fichier starting at eof -- on réécrit en premier la ligne telle qu'elle est
    -- rechercher si la ligne contient value="favorite", mais ne contient ni * ni ** ni *** dans une note
        if (Ligne contains TFavorite) then
            set Asterix to ""
            set PNote to (text ((offset of TNote in Ligne) + 6) thru ((length of Ligne) - 3) of Ligne)
    if (Ligne contains"name=") then
                set PStart to (text ((offset of TStart in Ligne) + 14) thru ((offset of TName in Ligne) - 1) of Ligne)
                else
                set PStart to (text ((offset of TStart in Ligne) + 14) thru ((offset of TFavorite in Ligne) - 1) of Ligne)
    end if
    if (PNote contains"***") then
                set Asterix to "***"
                else if (PNote contains "**") then
                set Asterix to "**"
                else if (PNote contains "*") then
                set Asterix to "*"
    end if
            if Asterix is not "" then
                set Ligne to CROCHET & "keyword start=" & PStart & "value=" & Guil & Asterix & Guil & " note=" & Guil & PNote & Guil & "/>"
                write (Ligne & return) to file Fichier starting at eof
    end if
    end if
    end LRatingkeyword
    
    
    
    
    -- ********************************* traite les lignes commençant par "raiting start"
    on L_Rating_marker(Ligne, Fichier)
        set T_Start to CROCHET & "rating start=" & Guil
        set T_Favorite to "value=" & Guil & "favorite" & Guil
        set T_Note to "note="
        set T_Name to "name="
        set T_Duration to "duration="
    --write (Ligne & return) to file Fichier starting at eof -- on réécrit en premier la ligne telle qu'elle est
    -- rechercher si la ligne contient value="favorite", mais ne contient ni * ni ** ni *** dans une note
        if (Ligne contains T_Favorite) then
            set Asterix to ""
            set P_Note to (text ((offset of T_Note in Ligne) + 6) thru ((length of Ligne) - 3) of Ligne)
            set P_Start to (text ((offset of T_Start in Ligne) + 14) thru ((offset of T_Duration in Ligne) - 1) of Ligne)
            
    if (Ligne contains"name=") then
                set P_FinP_Duration to (text ((offset of T_Name in Ligne) - 8) thru ((offset of T_Name in Ligne) - 1) of Ligne)
                else
                set P_FinP_Duration to (text ((offset of T_Favorite in Ligne) - 8) thru ((offset of T_Favorite in Ligne) - 1) of Ligne)
    end if
            if (P_Note contains "***") then
                set Asterix to "***"
                else if (P_Note contains "**") then
                set Asterix to "**"
                else if (P_Note contains "*") then
                set Asterix to "*"
    end if
            if Asterix is not "" then
                set Ligne to CROCHET & "marker start=" & P_Start & T_Duration & Guil & "100" & P_FinP_Duration & "value=" & Guil & P_Note & Guil & "/>"
                write (Ligne & return) to file Fichier starting at eof
    end if
    end if
    end L_Rating_marker
    
    
    -- ********************************* traite les lignes commençant par "</event>" en écrivant d'abord 3 lignes différentes, puis la ligne elle-même
    on L_Events(Ligne, Fichier)
    set L_Key to"<keyword-collection name=" & Guil & "*" & Guil & "/>"
        write (L_Key & return) to file Fichier starting at eof
    set L_Key to"<keyword-collection name=" & Guil & "**" & Guil & "/>"
        write (L_Key & return) to file Fichier starting at eof
    set L_Key to"<keyword-collection name=" & Guil & "***" & Guil & "/>"
        write (L_Key & return) to file Fichier starting at eof
        write (Ligne & return) to file Fichier starting at eof
    end L_Events
    
    
    
    
    -- ********************************* traite les lignes començant par "<clip name=" : les écrit en extrayant le code P_Role si il existe
    on L_Clip_Name(Ligne, Fichier)
        set T_INTERVIEW to Interview of Mes_pref
        set T_AMBIANCES to "AMB"
        set T_ILLUSTRATION to "ILL"
        set T_LIVE to "LIVE"
        set L_P_ROLE to ""
        if (Ligne contains T_INTERVIEW) then
            set L_P_ROLE to T_INTERVIEW
            else if (Ligne contains T_ILLUSTRATION) then
            set L_P_ROLE to T_ILLUSTRATION
            else if (Ligne contains T_AMBIANCES) then
            set L_P_ROLE to T_AMBIANCES
            else if (Ligne contains T_LIVE) then
            set L_P_ROLE to T_LIVE
    end if
        write (Ligne & return) to file Fichier starting at eof
    return L_P_ROLE -- renvoie la valeur L_P_Role (ITW, LIVE,ILL,AMB)
    end L_Clip_Name
    
    
    
    
    -- ********************************* traite les lignes commençant par <video name= et ajoute à la fin "role=video." & L_P_Roll & >
    on L_Video_Name(Ligne, Fichier, L_P_ROLE)
        set T_ROLE to "role="
        if L_P_ROLE is not "" then
            if (Ligne contains T_ROLE) then
                set Ligne to (text 1 thru ((offset of T_ROLE in Ligne) - 1) of Ligne) & T_ROLE & Guil & "video." & L_P_ROLE & Guil & ">"
                else
                set Ligne to (text 1 thru -2 of Ligne) & " " & T_ROLE & Guil & "video." & L_P_ROLE & Guil & ">"
    end if
    end if
        write (Ligne & return) to file Fichier starting at eof
    end L_Video_Name
    
    
    
    
    -- ********************************* traite les lignes commençant par <audio name= et ajoute à la fin "role=audio." & L_P_Roll & >
    on L_Audio_Name(Ligne, Fichier, L_P_ROLE)
        set T_ROLE to "role="
        set T_CANAUX to "srcCh="
        if L_P_ROLE is not "" then
            set T_FinoLigne to (text ((offset of T_CANAUX in Ligne) - 1) thru ((length of Ligne) - 2) of Ligne)
            set Ligne to (text 1 thru ((offset of "role=" in Ligne) + 4) of Ligne) & Guil & "dialogue" & "." & "audio" & L_P_ROLE & Guil & " " & T_FinoLigne & "/>"
    end if
        write (Ligne & return) to file Fichier starting at eof
    end L_Audio_Name
    
    
        on applicationWillFinishLaunching_(aNotification)
    -- Insert code here to initialize your application before any files are opened 
        end applicationWillFinishLaunching_
        
        on applicationShouldTerminate_(sender)
    -- Insert code here to do any housekeeping before your application quits 
            return current application's NSTerminateNow
        end applicationShouldTerminate_
        
    endscript
    

Discussions similaires

  1. Petit coup de main pour une meilleur compréhension
    Par b_sky dans le forum API standards et tierces
    Réponses: 1
    Dernier message: 22/06/2011, 18h51
  2. Un coup de main pour une requête ?
    Par kibla dans le forum Requêtes
    Réponses: 7
    Dernier message: 21/12/2010, 13h43
  3. Petit coup de main pour un petit script
    Par Baradhur dans le forum Linux
    Réponses: 4
    Dernier message: 11/11/2010, 00h38
  4. Cherche un coup de pouce pour une page portal
    Par Kernel_BE dans le forum Ext JS / Sencha
    Réponses: 0
    Dernier message: 19/11/2008, 12h25
  5. besoin d'un coup de main pour une requête ;)
    Par Fabouney dans le forum Requêtes
    Réponses: 3
    Dernier message: 14/11/2005, 23h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo