Écriture de script pour XINX

Table of Contents

  1. Documentation de XINX
  2. Sommaire
  3. Installation de XINX
    1. Installation de XINX à partir des sources
      1. Récupérer les sources
      2. Compilation
      3. Installation des prérequis sous MS/Windows (depuis la version 0.8.1)
    2. Installation à partir du binaire
      1. Sous windows
      2. Sous Gnu/Linux
  4. Démarrage rapide
    1. Présentation de l'interface
    2. Le menu fichier
    3. Le menu édition
    4. Le menu chercher
    5. Le menu signet
    6. Le menu projet
    7. Le menu fenêtre
    8. Le menu Outils
    9. Le menu Aide
  5. Le mode projet
    1. Création d'un projet
      1. Page 1 : Définition du projet
      2. Page 1 bis : Définition des propriétés spécifiques
      3. Page 2 : Définition des services
      4. Page 3 : Définition du gestionnaire de version
    2. Modification d'un projet
    3. Fermeture d'un projet
  6. La complétion sous XINX
    1. Fichier de donnée pour la complétion
    2. Editeur
  7. Spécifique
    1. Projet multi-préfixe
    2. Sauvegade
  8. Les Services Internet
    1. Configuration des services
    2. Éditer un flux
    3. Execution du Service
  9. Utilisation du gestionnaire de version
    1. Mise à jour globale
    2. Validation globale
    3. Opération locale
  10. Personnalisation de XINX
    1. Général
    2. Projet
    3. Révision
    4. Éditeur
    5. Police
    6. Syntaxe
    7. Présentation
    8. Snipet
    9. Outils
    10. Modules
  11. Liste des raccourcis disponibles dans XINX
    1. Fonctions de Navigation
    2. Fonctions d'édition XINX
    3. Gestion des signets
    4. Gestion des Webservices
    5. Fonctions d'édition classiques
    6. Fonctions de recherche
  12. Écriture de Plugins Pour XINX
    1. Préface
    2. Les bases
    3. Le plugin de gestion de version
      1. Partie gestionnaire de version
      2. Partie plugin
  13. Écriture de script pour XINX
    1. Présentation de ECMAScript
    2. Les objets
    3. Propriété de l'objet Global
    4. Etendre l'application
  14. Écriture de Snipets
    1. Configuration
      1. Boite de configuration
      2. Propriété du Snipet
      3. Script dans les snipets

XINX propose le langage standardisé ECMASCript Edition 3 pour permettre l'extention des ses fonctionnalités. Ce langage est fortement similaire au JavaScript(Mozilla) et JScript(Microsoft) utilisé dans les navigateurs modernes.

Afin d'interagir plus facilement avec l'interface utilisateur, quelques fonctions ont été ajoutées par rapport aux standards ECMAScript purs.

Présentation de ECMAScript

Vous pouvez trouver un tutoriel sur l'ECMAScript sur Internet à l'adresse  suivante.

Les bases du JavaScript sont les mêmes que celles du C et du Java : if pour les conditions, for, while pour les boucles, .... Ci-dessous un exemple de programme calculant le factoriel d'un nombre.

const NOMBRE = 10;

function factoriel( val ) {
  var result = val;
  for( i = val - 1, i > 0; i-- ) {
    result *= i;
  }
  return result;
}

alert( factoriel( NOMBRE ) );

La fonction alert n'appartient pas au standard ECMAScript mais a été ajoutée pour son utilité. En ECMAScript, les variables ne sont pas typées et sont automatiquement déclarées à l'utilisation.

Les objets

En ECMASCript il est possible de définir des objets. La définition d'objet passe par la définition de propriété, comme suite :

function Shape( x, y ) {
  this.x = x;
  this.y = y;
}

Shape.prototype.manhattanPos = function() {
  return Math.abs( this.x ) + Math.abs( this.y );
};

Shape.prototype.translate = function( dx, dy ) {
  this.x += dx;
  this.y += dy;
}

/* Exemple tiré du livre "C++ Gui Programming with Qt4" contenant entre autre une très bonne explication sur le ECMAScript */

Propriété de l'objet Global

Constantes
NaN Valeur IEEE 754 Not-a-Number (Pas un nombre)
undefined Valeur par défaut pour les variables non initialisées
Fonctions
alert(x)* Affiche le texte dans une boite de dialogue
confirm(x)* Affiche le texte dans une boite de dialogue et demande confirmation (Oui ou Non)
input(x,y)* Demande d'entrer un texte ou une valeur numérique
eval(str) Exécute un programme ECMAScript
parseInt(str, base)Convertit une chaine en entier
parseFloat(str) Convertit une chaine en flottant
Classes
Object Contient les fonctionnalités communes à tous les objets.
Function Encapsule une fonction ECMAScript
Array Représente un tableau redimensionnable
String Représente une chaine de caractère
Boolean Enregistre une Boolean (true ou false)
Number Enregistre un nombre flottant
Date Enregistre une date
RegExp Permet d'utiliser des expressions régulières
Objets
Math Fournit des fonctions mathématiques et des constantes

La liste est non-exhaustive.

Etendre l'application

L'extention de l'application se fait par l'écriture d'un script retournant un objet. C'est la méthode run de cet objet qui sera alors appelée.

var obj = new Object;

obj.text = "Mon texte";

obj.run = function() {
  alert( "Roulez jeunesse" );
}

return obj;

Depuis le script l'objet this.textEdit est accessible. Cet objet représentant l'éditeur de texte courant dans XINX. Cette variable peut être indéfinie si aucun onglet n'est ouvert dans l'éditeur ou l'onglet courant n'est pas un éditeur de texte.

Pour récupérer le texte de l'éditeur :

var text = this.textEdit.plainText;

Pour remplacer le texte de l'éditeur :

this.textEdit.plainText = text;
this.textEdit.document.modified = true; // Cette ligne permet de rafraîchir l'indicateur de l'état du document.

A terme d'autres objets pourront être accessibles.


* Non spécifié dans le standard ECMAScript