Page 1 of 5

[TUTO] Syntaxe du fichier *.TNS

Unread postPosted: 22 Dec 2009, 01:21
by Levak
Bon, alors je crée un nouveau topic pour présenter les découvertes que j'ai fait grâce à celles de GeoGeo et de CiWtron :D:
...concernant la syntaxe des fichier *.tns, le fichier source !!

Alors, GeoGeo a dit ici : http://tibank.forumactif.com/programmat ... .htm#74148
comment la syntaxe globale s'organise.

Pré-requis :
- Pour l'instant, on ne peut pas éditer les fichiers *.tns crées avec un OS supérieur ou égal à la version 1.2
- Connaître le langage (X)HTML
- Une "bonne" maîtrise des logiciels WinRAR, TI nSpire Computer Software 1.0.50 (la version est importante), Editeur (X)HTML tel que DreamWaver
___________________________________________________________________________________________
[color=brown]Tutoriel sur la syntaxe d'un fichier *.tns

___________________________________________________________________________________________
Voici les grands axes :
I. Ouvrir et éditer un fichier *.tns
II. Comprendre la syntaxe
III. Glossaire des variables


I. Ouvrir et éditer un fichier *.tns

 
Show/Hide spoilerAfficher/Masquer le spoiler
  1. Télécharger la version 1.0 de l'émulateur CAS sur TI-bank (attention, c'est une version de 30 jours d'utilisation !!)
  2. Créer un fichier avec l'application géométrie, et créer un simple point en plein milieu (pour commencer)
  3. Enregistrer le ficher sur le Bureau (par exemple) nommé "point.tns" (pour nous y retrouver)
  4. Ouvrir le fichier point.tns avec 7zip, WinRAR, WinZIP ou autres...car en fait, c'est un ficher *.zip !!
  5. Ouvrir le fichier "Problem1.xml" avec DreamWaver (par exemple)
  6. Là les choses sérieuses commencent :
  • Quitter l'émulateur CAS 1.0
  • modifier le fichier Problem1.xml
  • Enregistrer le fichier Problem1.xml, puis répondre "Oui" à la question que pose WinRAR : "Oui, mettre à jour l'archive"


II. Comprendre la syntaxe

_A. La structure générale d'un fichier *.tns
 
Show/Hide spoilerAfficher/Masquer le spoiler
  • Document.xml
  • Problem1.xml
  • Problem2.xml
  • etc...
Les fichiers "ProblemX.xml" correspondent aux activités, en remplaçant X par un nombre.


_B. La structure générale du fichier "Document.xml"

On reporte le nombre d'activités dans Document.xml comme suit (XXX)
 
Show/Hide spoilerAfficher/Masquer le spoiler
Code: Select all
?xml version="1.0" encoding="UTF-8" ?
<doc ver="1.0">
  <settings>
    <lang>64</lang>
    <dfmt>283783068</dfmt>
    <tfmt>270613925</tfmt>
    <curr>283783156</curr>
    <devfontsize>1</devfontsize>
    <expf>1</expf>
    <ddig>7</ddig>
    <angf>1</angf>
    <exapp>1</exapp>
    <cplxf>1</cplxf>
    <unit>1</unit>
    <vectf>1</vectf>
    <base>1</base>
  </settings>

  <nps>XXX</nps>

</doc>



_C. La structure générale du fichier "Problem1.xml"

___a) Exemple
Voici un exemple de code "Problem1.xml" non indenté :
 
Show/Hide spoilerAfficher/Masquer le spoiler
Code: Select all
?xml version="1.0" encoding="UTF-8" ?prob xmlns="urn:TI.Problem" ver="1.0"sym/symcard clay="0"flag0/flagwdgt xmlns:gg="urn:TI.GeoGrapher" type="TI.GeoGrapher" ver="1.0"gg:mFlags0/gg:mFlagsgg:value1/gg:valuegg:figgg:objsgg:pointgg:id1/gg:idgg:point_/gg:point_gg:x50/gg:xgg:y50/gg:ygg:acol0/gg:acolgg:adst3/gg:adstgg:asho1/gg:ashogg:aloc0/gg:alocgg:lbl/gg:lblgg:stat0/gg:stat/gg:pointgg:axes_systemgg:id2/gg:idgg:par1 /gg:pargg:axes_p/gg:axes_pgg:xuni1/gg:xunigg:yuni1/gg:yunigg:xmin−4/gg:xmingg:xmax16.2/gg:xmaxgg:ymin−4/gg:ymingg:ymax12.2/gg:ymaxgg:acol0/gg:acolgg:aast0/gg:aastgg:aazm1/gg:aazmgg:apth0/gg:apthgg:asho1/gg:ashogg:lbl/gg:lblgg:stat0/gg:stat/gg:axes_systemgg:axisgg:id3/gg:idgg:par2 /gg:pargg:xaxis/gg:xaxisgg:smrt2/gg:smrtgg:sm1−4/gg:sm1gg:sm216.2/gg:sm2gg:alco0/gg:alcogg:acst0/gg:acstgg:apst0/gg:apstgg:apth0/gg:apthgg:asho1/gg:ashogg:ales0/gg:alesgg:lblx/gg:lblgg:stat16/gg:stat/gg:axisgg:labelgg:id4/gg:idgg:par3 /gg:pargg:lbl_agg:t0.5/gg:tgg:dx0/gg:dxgg:dy0/gg:dy/gg:lbl_agg:chrs1 1 3 0 0 0 x/gg:chrsgg:deta0/gg:detagg:atta1/gg:attagg:x66.77500005/gg:xgg:y50.42499995/gg:ygg:atco0/gg:atcogg:afon0/gg:afongg:asho1/gg:ashogg:lbl/gg:lblgg:stat0/gg:stat/gg:labelgg:axisgg:id5/gg:idgg:par2 /gg:pargg:yaxis/gg:yaxisgg:smrt2/gg:smrtgg:sm1−4/gg:sm1gg:sm212.2/gg:sm2gg:alco0/gg:alcogg:acst0/gg:acstgg:apst0/gg:apstgg:apth0/gg:apthgg:asho1/gg:ashogg:ales0/gg:alesgg:lbly/gg:lblgg:stat16/gg:stat/gg:axisgg:labelgg:id6/gg:idgg:par5 /gg:pargg:lbl_agg:t0.5/gg:tgg:dx0/gg:dxgg:dy0/gg:dy/gg:lbl_agg:chrs1 1 3 0 0 0 y/gg:chrsgg:deta0/gg:detagg:atta1/gg:attagg:x49.82500005/gg:xgg:y63.37499995/gg:ygg:atco0/gg:atcogg:afon0/gg:afongg:asho1/gg:ashogg:lbl/gg:lblgg:stat0/gg:stat/gg:labelgg:gridgg:id7/gg:idgg:par2 /gg:pargg:grid_as/gg:grid_asgg:acol10066329/gg:acolgg:agst0/gg:agstgg:apth0/gg:apthgg:asho0/gg:ashogg:lbl/gg:lblgg:stat16/gg:stat/gg:gridgg:pointgg:id8/gg:idgg:point_/gg:point_gg:x53.45/gg:xgg:y55.8/gg:ygg:acol0/gg:acolgg:adst1/gg:adstgg:asho1/gg:ashogg:aloc0/gg:alocgg:lbl/gg:lblgg:stat0/gg:stat/gg:point/gg:objsgg:toolgg:ToolGraphergg:vis1/gg:vis/gg:ToolGrapher/gg:toolgg:anim1/gg:animgg:w200/gg:wgg:h200/gg:hgg:vpx40/gg:vpxgg:vpy64.85/gg:vpy/gg:fig/wdgt/card/prob


Voici le même code indenté :
 
Show/Hide spoilerAfficher/Masquer le spoiler
Code: Select all
<?xml version="1.0" encoding="UTF-8" ?>
<prob xmlns="urn:TI.Problem" ver="1.0">
  <sym></sym>
  <card clay="0">
    <flag>0</flag>
    <wdgt xmlns:gg="urn:TI.GeoGrapher" type="TI.GeoGrapher" ver="1.0">
      <gg:mFlags>0</gg:mFlags>
      <gg:value>1</gg:value>
      <gg:fig>
        <gg:objs>
          <gg:point>
            <gg:id>1</gg:id>
            <gg:point_></gg:point_>
            <gg:x>50</gg:x>
            <gg:y>50</gg:y>
            <gg:acol>0</gg:acol>
            <gg:adst>3</gg:adst>
            <gg:asho>1</gg:asho>
            <gg:aloc>0</gg:aloc>
            <gg:lbl></gg:lbl>
            <gg:stat>0</gg:stat>
          </gg:point>
          <gg:axes_system>
            <gg:id>2</gg:id>
            <gg:par>1</gg:par>
            <gg:axes_p></gg:axes_p>
            <gg:xuni>1</gg:xuni>
            <gg:yuni>1</gg:yuni>
            <gg:xmin>−4</gg:xmin>
            <gg:xmax>16.2</gg:xmax>
            <gg:ymin>−4</gg:ymin>
            <gg:ymax>12.2</gg:ymax>
            <gg:acol>0</gg:acol>
            <gg:aast>0</gg:aast>
            <gg:aazm>1</gg:aazm>
            <gg:apth>0</gg:apth>
            <gg:asho>1</gg:asho>
            <gg:lbl></gg:lbl>
            <gg:stat>0</gg:stat>
          </gg:axes_system>
          <gg:axis>
            <gg:id>3</gg:id>
            <gg:par>2</gg:par>
            <gg:xaxis></gg:xaxis>
            <gg:smrt>2</gg:smrt>
            <gg:sm1>−4</gg:sm1>
            <gg:sm2>16.2</gg:sm2>
            <gg:alco>0</gg:alco>
            <gg:acst>0</gg:acst>
            <gg:apst>0</gg:apst>
            <gg:apth>0</gg:apth>
            <gg:asho>1</gg:asho>
            <gg:ales>0</gg:ales>
            <gg:lblx></gg:lbl>
            <gg:stat>16</gg:stat>
          </gg:axis>
          <gg:label>
            <gg:id>4</gg:id>
            <gg:par>3</gg:par>
            <gg:lbl_a>
              <gg:t>0.5</gg:t>
              <gg:dx>0</gg:dx>
              <gg:dy>0</gg:dy>
            </gg:lbl_a>
            <gg:chrs>1 1 3 0 0 0 x</gg:chrs>
            <gg:deta>0</gg:deta>
            <gg:atta>1</gg:atta>
            <gg:x>66.77500005</gg:x>
            <gg:y>50.42499995</gg:y>
            <gg:atco>0</gg:atco>
            <gg:afon>0</gg:afon>
            <gg:asho>1</gg:asho>
            <gg:lbl></gg:lbl>
            <gg:stat>0</gg:stat>
          </gg:label>
          <gg:axis>
            <gg:id>5</gg:id>
            <gg:par>2</gg:par>
            <gg:yaxis></gg:yaxis>
            <gg:smrt>2</gg:smrt>
            <gg:sm1>−4</gg:sm1>
            <gg:sm>212.2</gg:sm2>
            <gg:alco>0</gg:alco>
            <gg:acst>0</gg:acst>
            <gg:apst>0</gg:apst>
            <gg:apth>0</gg:apth>
            <gg:asho>1</gg:asho>
            <gg:ales>0</gg:ales>
            <gg:lbl>y</gg:lbl>
            <gg:stat>16</gg:stat>
          </gg:axis>
          <gg:label>
            <gg:id>6</gg:id>
            <gg:par>5</gg:par>
            <gg:lbl_a>
              <gg:t>0.5</gg:t>
              <gg:dx>0</gg:dx>
              <gg:dy>0</gg:dy>
            </gg:lbl_a>
            <gg:chrs>1 1 3 0 0 0 y</gg:chrs>
            <gg:deta>0</gg:deta>
            <gg:atta>1</gg:atta>
            <gg:x>49.82500005</gg:x>
            <gg:y>63.37499995</gg:y>
            <gg:atco>0</gg:atco>
            <gg:afon>0</gg:afon>
            <gg:asho>1</gg:asho>
            <gg:lb><l/gg:lbl>
            <gg:stat>0</gg:stat>
          </gg:label>
          <gg:grid>
            <gg:id>7</gg:id>
            <gg:par>2</gg:par>
            <gg:grid_as></gg:grid_as>
            <gg:acol>10066329</gg:acol>
            <gg:agst>0</gg:agst>
            <gg:apth>0</gg:apth>
            <gg:asho>0</gg:asho>
            <gg:lbl></gg:lbl>
            <gg:stat>16</gg:stat>
          </gg:grid>
          <gg:point>
            <gg:id>8</gg:id>
            <gg:point_></gg:point_>
            <gg:x>53.45</gg:x>
            <gg:y>55.8</gg:y>
            <gg:acol>0</gg:acol>
            <gg:adst>1</gg:adst>
            <gg:asho>1</gg:asho>
            <gg:aloc>0</gg:aloc>
            <gg:lbl></gg:lbl>
            <gg:stat>0</gg:stat>
          </gg:point>
        </gg:objs>
        <gg:tool>
          <gg:ToolGrapher>
            <gg:vis>1</gg:vis>
          </gg:ToolGrapher>
        </gg:tool>
        <gg:anim>1</gg:anim>
        <gg:w>200</gg:w>
        <gg:h>200</gg:h>
        <gg:vpx>40</gg:vpx>
        <gg:vpy>64.85</gg:vpy>
      </gg:fig>
    </wdgt>
  </card>
</prob>

Nous pouvons voir qu'il s'agit d'un document XML très basique, d'une syntaxe telle que :
 
Show/Hide spoilerAfficher/Masquer le spoiler
variable valeur variable

Par exemple, ma première expérience a été de changer l'apparence d'un point, il s'agit de la variable "adst"
Donc : adst 1 adst
Voici les options :

Par défaut : 0. Gros Point noir
  1. Gros Point blanc
  2. Petit Carré noir
  3. Petit Carré blanc
  4. Croix noire
  5. Plus noir
  6. Pixel noir
ps : Si la variable n'a pas l'une de ces 7 valeur, la nSpire mettra par défaut "0" soit "Gros Point noir"


___b) La structure Globale d'un fichier "Problem1.xml"

 
Show/Hide spoilerAfficher/Masquer le spoiler
Code: Select all
<?xml version="1.0" encoding="UTF-8" ?>
<prob xmlns="urn:TI.Problem" ver="1.0">
  <card clay="0">
    <wdgt xmlns:gg="urn:TYPE DE PAGE" type="TYPE DE PAGE" ver="1.0">

Variables   

    </wdgt>
  </card>
</prob>


Il existe différents types de page :
  • TI.Scratchpad Page de Calcul
  • TI.GeoGrapher Géométrie
  • tabulator Classeur "Excel"
  • TI.Notepad Editeur Mathématique
- Pour créer plusieurs pages dans une activité, il suffit de rajouter un ensemble après le précédent.
- Pour créer plusieurs affichages (4 au maximum) on change la valeur de .
/! Si le nombre d'affichage ne correspond pas au nombre d'ensemble , l'OS plantera et rebootera ! /!

Exemple de code correct avec 2 pages et sur la deuxième page, un double affichage de type 1
 
Show/Hide spoilerAfficher/Masquer le spoiler
Code: Select all
<?xml version="1.0" encoding="UTF-8" ?>
prob xmlns="urn:TI.Problem" ver="1.0">
  <card clay="0">
    <wdgt xmlns:sp="urn:TI.Scratchpad" type="TI.Scratchpad" ver="1.0">
    </wdgt>
  </card>

  <card clay="1">
    <wdgt xmlns:sp="urn:TI.Scratchpad" type="TI.Scratchpad" ver="1.0">
    </wdgt>
    <wdgt xmlns:sp="urn:TI.Scratchpad" type="TI.Scratchpad" ver="1.0">
    </wdgt>
  </card>
</prob>



___c) Les Variables dans "Problem1.xml"
Les variables sont exprimées dans le "Problem1.xml", c'est pour cela que les variables ne sont pas globales entre les activités !
Elles sont placées dans l'élément juste après son élément parent
Chaque variable est définie dans un élément différent.
- Chaque élément contient plusieurs éléments renseignant sur la variable.
-- Nom de la variable
-- Arguments nécessaires (pour les fonctions et programmes)
-- Valeur de la Variable

Exemple de fichier "Problem1.xml" ayant une variable integer (simple variable) :
 
Show/Hide spoilerAfficher/Masquer le spoiler
Code: Select all
<?xml version="1.0" encoding="UTF-8" ?>
<prob xmlns="urn:TI.Problem" ver="1.0">
  <sym>

    <e t="3" f="0">
      <n>vint</n>
      <v>1</v>
    </e>

  </sym>

  <card clay="0">
    <wdgt xmlns:sp="urn:TI.Scratchpad" type="TI.Scratchpad" ver="1.0">

    </wdgt>
  </card>
</prob>

Je suppose que la variable "t" correspond au type de variable, ainsi :
  1. List (ex : {1})
  2. Matrix (ex : [1])
  3. Integer (ex : 1)
  4. Inconnu Programme ?
  5. String (ex : "1" avec " s'écrivant " q u o t ;"sans les espaces et sans les guillements)
  6. Function (ex : Func:Return x*y:EndFunc)
Exemple d'élément définissant une fonction :  
Show/Hide spoilerAfficher/Masquer le spoiler
Code: Select all
  <e t="6" f="0">

      <n>vprog</n>

      <p>x,y</p>

      <v>Func:Return x*y:EndFunc</v>

    </e>


La suite très prochainement :#tritop#: [/color]

Re: [TUTO] Syntaxe du fichier *.TNS

Unread postPosted: 22 Dec 2009, 01:27
by critor
:#top#:

La suite! La suite! La suite!

Tu nous tenais en haleine, et tu nous laisses sur notre faim . . . :#ouin#:

Re: [TUTO] Syntaxe du fichier *.TNS

Unread postPosted: 22 Dec 2009, 09:20
by ioraito
waw c'est beau à voir !!!!! allez vivement le 2eme chapitre de l'histoire de la nspire ^^

bon courage levak

Re: [TUTO] Syntaxe du fichier *.TNS

Unread postPosted: 22 Dec 2009, 09:52
by Ciwtron
Levak wrote:
  1. Télécharger la version 1.0.50 de l'émulateur CAS sur TI-bank (attention, c'est une version de 30 jours d'utilisation !!)
  2. Créer un fichier avec l'application géométrie, et créer un simple point en plein milieu
  3. Enregistrer le ficher sur le Bureau (par exemple) nommé "point.tns" (pour nous y retrouver)
  4. Ouvrir le fichier point.tns avec 7zip, WinRAR, WinZIP ou autres...car en fait, c'est un ficher *.zip !!
  5. Ouvrir le fichier "Problem1.xml" avec DreamWaver (par exemple)
  6. Là les choses sérieuses commencent :
  • Quitter l'émulateur CAS 1.0.50
  • modifier le fichier Problem1.xml
  • Enregistrer le fichier, puis répondre "Oui" à la question que pose WinRAR : "Oui, mettre à jour l'archive"


Je fais pas comme ca moi.
  1. Installer la version 1.1 sur la calto
  2. Créer un fichier avec l'application géométrie, et créer un simple point en plein milieu OU alors une liste X et Y
  3. Enregistrer le ficher sur le Bureau (par exemple) nommé "point.tns" (pour nous y retrouver)
  4. Ouvrir le fichier point.tns avec 7zip, WinRAR, WinZIP ou autres...car en fait, c'est un ficher *.zip !!
  5. Extraire PUIS ouvrir le fichier "Problem1.xml" avec DreamWaver (par exemple)
  6. Modifier le fichier Problem1.xml
  7. Enregistrer le fichier, ET zipper le tout avec 7zip.


Levak wrote:Par exemple, ma première expérience a été de changer l'apparence d'un point, il s'agit de la variable "adst"
Donc : adst 0 adst
Voici les options :
0 Gros Point noir
1 Gros Point blanc
2 Petit Carré noir
3 Petit Carré blanc
4 Croix noire
5 Plus noir
6 Pixel noir

Moi c'est de 1 à 7...

Quand j'aurais un peu plus de temps, je te met la syntaxe d'un point expliquée sur la 1.1 .

Re: [TUTO] Syntaxe du fichier *.TNS

Unread postPosted: 22 Dec 2009, 12:22
by Levak
Ciwtron wrote:Je fais pas comme ca moi.
  1. Installer la version 1.1 sur la calto
  2. Créer un fichier avec l'application géométrie, et créer un simple point en plein milieu OU alors une liste X et Y
  3. Enregistrer le ficher sur le Bureau (par exemple) nommé "point.tns" (pour nous y retrouver)
  4. Ouvrir le fichier point.tns avec 7zip, WinRAR, WinZIP ou autres...car en fait, c'est un ficher *.zip !!
  5. Extraire PUIS ouvrir le fichier "Problem1.xml" avec DreamWaver (par exemple)
  6. Modifier le fichier Problem1.xml
  7. Enregistrer le fichier, ET zipper le tout avec 7zip.

Moi c'est de 1 à 7...

Quand j'aurais un peu plus de temps, je te met la syntaxe d'un point expliquée sur la 1.1 .


Ok, merci de l'info, effectivement j'avais oublié que la version 1.1 n'était pas compressée au niveau des fichiers *.tns
J'édite mon premier post :#top#:

Sinon, moi j'édite directement le fichier *.tns avec WinRAR, il ne dit absolument rien contre et ça va plus vite quand on veut voir si quelque chose change ! :%):

Re: [TUTO] Syntaxe du fichier *.TNS

Unread postPosted: 22 Dec 2009, 12:46
by critor
Levak wrote:
  1. Télécharger la version 1.1 de l'émulateur CAS sur TI-bank (attention, c'est une version de 30 jours d'utilisation !!)



Non Levak...
Hélas nous n'avons pas l'émulateur 1.1 sur TI-Bank...

Et je ne le mettrai pas, tout simplement parce que je ne l'ai pas.


Donc laisse plutôt le choix à tes lecteurs:
- ou télécharger l'émulateur CAS 1.0
- ou installer le système CAS 1.1 sur leur calculatrice

Re: [TUTO] Syntaxe du fichier *.TNS

Unread postPosted: 22 Dec 2009, 12:49
by Levak
critor2000 wrote:- ou télécharger l'émulateur CAS 1.0
- ou installer le système CAS 1.1 sur leur calculatrice


:#gol#: Allez, soyons fou, je te le up sur mon ftp, et je te le passe par MP :D:

Re: [TUTO] Syntaxe du fichier *.TNS

Unread postPosted: 22 Dec 2009, 12:50
by Ciwtron
Et l'avantage de l'OS 1.1 est surtout de n'être pas limité à 30jours^^. :#love#:

Re: [TUTO] Syntaxe du fichier *.TNS

Unread postPosted: 22 Dec 2009, 12:52
by critor
Levak wrote:
critor2000 wrote:- ou télécharger l'émulateur CAS 1.0
- ou installer le système CAS 1.1 sur leur calculatrice


:#gol#: Allez, soyons fou, je te le up sur mon ftp, et je te le passe par MP :D:


OUI!!!!!!!!!!!!!! :#top#: :#tritop#:

Re: [TUTO] Syntaxe du fichier *.TNS

Unread postPosted: 22 Dec 2009, 15:22
by Levak
Premier Post édité