Salut les mecs !

Juste pour vous faire un état de mes travaux concernant le 6pad.

Il s'agit:

1. De la création d'un éditeur accessible et assisté pour le langage lua et le 
scripting dans 6pad appelé LuaEditor.

2. Du développement du module pybrace pour le 6pad.

3. Et d'une petite idée que j'ai eu, pas encore mise en oeuvre qui permettra de 
contourner le problème de l'absence de moyen d'impression dans le 6pad. Hé hé 
hé ! Un véritable pied de nez à Quentin.

Allons y ! Tayau ! Bansaï ! A l'attaque et pas de quartier !

1. LuaEditor- environnement de scripting dans le 6pad

x. Raisons qui m'ont poussé à son développement:

* volonté de pouvoir coder plus vite;
* vouloir m'entraîner au développement d'un EDI (avant d'attaquer le plus gros 
morceau qu'est le langage python);
* parce que le lua, est un bon langage, mais est chiant à coder dans un 
block-note;
* parce que je n'ai pas trouvé d'équivalant;
* pour faire comme dans l'éditeur de texte microsoft word, qui possède en 
arrière-plan un éditeur de code VBA pour le scripter.

x. Technologie choisie

Fait en vb6 (décidément je n'arrive pas à m'en passer).
Notamment parce que j'avais déja des bouts de code que j'ai reppris.
Les regexp sont du PCRE et ne devrait pas être trop dificile à convertir pour 
un éventuel transport dans le luaScripting.

x. Description de l'application et de ses fonctionnalités

Il s'agit d'un éditeur de texte, avec une barre des menus contenant la plupart 
des commandes.

J'envisage au final de placer cette application dans un sous dossier du dossier 
plugin du 6pad. Et il serait appelé par le 6pad par la combinaison de touche 
"alt+F11" ou par un menu comme cela se fait dans les applications microsoft 
office pour appeler le VBA.

A son ouverture, il devrait détecter tous les fichiers lua présent dans le 
dossier 6pad et les proposer dans  le menu module.

Il devrait permettre dans la même lancée de savoir quels sont les fichiers  lua 
chargés au démarrage par le 6pad en affichant une case à cocher devant leur nom 
et ainsi donner la possibilité d'exclure ou inclure un fichier en simplement 
faisant entrer sur son nom.


Les menus principaux sont:

* fichier
* edition
* affichage
* insertion (qui doit notamment contenir les commandes d'insertion de fonctions 
et bien d'autres)
* modules
* outils
* aide

On retrouve dans cet éditeur les fonctionnalités classiques d'un éditeur, à 
savoir:

* nouveau
* ouvrir
* enregistrer;
* enregistrer sous;
* quitter;
* couper, copier, coller, tout sélectionner;
* rechercher;
* atteindre une ligne...
* rechercher suivant;
* rechercher précédent;
* remplacer;
* options...
* fichier d'aide (F1)
* A propos...
x. les fonctionnalités propres au langage lua et au 6pad_scripting

*  sélectionner la fonction courante (ctrl+r) comme dans le jaws script;
* fonction suivante (ctrl+pageDown) pour se déplacer au début de la fonction 
suivante
* fonction précédente (ctrl+pageUp) pour se déplacer au début de la fonction 
précédente;
* liste des fonctions (ctrl+l) pour  faire apparaître une liste des fonctions 
présentes dans le document courant et pouvoir s'y rendre en faisant entrer sur 
le nom de l'une d'entre elles;

Dans le menu insertion, on aura:
* nouvelle fonction (ctrl+e) pour ouvrir un assistant permettant de créer une 
nouvelle fonction. pourrait être particulièrement utile pour créer sans trop 
chercher les fonctions évènementielles, de déterminer si la fonction doit être 
globale ou locale, etc;
*  fonction intégrée (ctrl+i) pour insérer une fonction du langage ou une 
fonction déclarée précédemment. Ce n'est pas encore le cas, mais je compte même 
aller chercher les fonctions contenues dans les fichiers appelés par un require 
ou une autre fonction d'importation. J'ai fait l'effort d'essayer de reproduire 
la fenêtre d'insertion de fonction du jaws script, avec une zone d'édition du 
nom de la fonction, une zone de liste de toutes les fonction, et une zone de 
description où apparaît la définition de la fonction actuellement sélectionnée;
* fonction évènementielle, pour ouvrir un assistant proposant des fonctions 
évènementielles;
* complétion de code (ctrl+space), pour ouvrir une zone de liste déroulante 
proposant  des fonctions ou autres éléments de langage pour compléter le mot 
courant. Pour ce que j'ai déja réussi à réaliser, j'en suis très fiert du 
comportement. Ce devrait être l'une des fonctionnalités les plus utilisées. 
Elle Devrait être en mesure de proposer des variables déclarées précédemment, 
ou des méthodes d'un objet après le point.
* importer..., qui ouvre une boîte de dialogue standard ouvrir pour aller 
chercher dans le dossier du 6pad le fichier de script à importer par un require;
* commentaire, pour mettre des portions de code sélectionnées en commentaire.


comme dit précédemment, le menu module devrait contenir la liste des modules 
présents dans le 6pad et proposer soit de les ouvrir, soit de les activer ou 
les désactiver.

Le menu outils contient  la commande "tester le code (F5)" pour tester et 
vérifier si le code du module est valide. Et je viens tout juste d'avoir 
l'idée, une commande pour ouvrir un fichier vierge du 6pad devrait également 
être judicieux.

Le menu "aide" contient la commande pour appeler le fichier d'aide avec F1. 
Fichier qui n'est rien d'autre que le document chm produit à partir du 
remarquable travail en visunote de mon vénérable homonyme Yannick.

J'ai aussi pensé à des comportements de complétion de code lors de la frappe 
dans le document comme par exemple l'ajout de l'instruction "end--function" 
lorsqu'on appuie sur entrer  à la fin de la ligne d'une nouvelle fonction. Mais 
il faudrait encore que je précise cette idée.

Voilà pour le luaEditor !
Son développement est plutôt avancé. 
Je n'ai pas fait de magie, et la source des fonction et autres éléments de 
langage sont des simples fichiers texte situés dans un dossier datas à la 
racine du projet.
les fonctions standard du langage lua ont été repertoriés dans ces fichiers, 
mais pas encore les autres instructions et constantes globales.
J'ai également commencé le repertoriage des fonctions propres au 6pad.
L'idéal aurait été que j'emploi le format xml pour conserver ces reférences de 
langage, mais à cause de mon manque d'expérience et de temps, j'ai paré au plus 
pressé en utilisant une simple écriture séquentielle.
Rassurez-vous, avant même que je ne puisse terminer tout ça, je vous ferai voir 
ce qu'il en est en vous envoyant une première version.









2. développement du module pybrace pour le 6pad.

x. rôle de cette application

1. enlever les indentations au langage python et les remplacer par un système 
d'accolade de blocks comme cela se fait dans les langage de type c.

2. Retirer le système d'accolades de blocks et restorer les indentations 
classiques du code python.


Et en perspective, je prévoi également pouvoir créer un mode de délimitation 
des block de code par des instructions de fin de block comme cela se fait dans 
les langages de type basic.
Exemple "end class", "end if", "end while".



x. technologie choisie

VB6, regexp PCRE. Ho mon Dieu ! Encore ?

x. raison de ce choix

Pour avoir trimer comme un chien à améliorer la première version du pybrace, de 
l'avoir mis en stand by, et d'y revenir quelques temps plus tard pour me rendre 
compte que plus rien ne fonctionne parce que l'API des regexp du 6pad avait été 
modifié, et ayant par ailleurs un projet en vb6 qui lui était également pas mal 
avancé, je me suis dit pourquoi ne pas le reprendre, dans l'optique de 
l'intégrer au 6pad comme processus ou dll, cela en attendant que l'API des 
regexp de ce logiciel soit enfin stable.

x. stade de développement

dans un éditeur que j'ai créé pour les tests, il fonctionne aujourd'hui pas 
trop mal.
J'en suis à traquer les bugs et à trouver les moyens de les résoudre.
Pour ce faire, décortiquer la documentation du langage python est primordiale. 
Or, actuellement cela ne peut se faire qu'au coup par coup à cause de mes 
multiples autres activités.

Je ne sais pas trop encore quand je vous le rendrait, car je concentre 
actuellement presque exclusivement mes efforts au luaEditor.


3. Idée pour permettre au 6pad d'imprimer.

Simplement créer une dll comportant un control richTextbox standard qu'on va 
cacher et qui lui, va simplement prendre le texte du fichier ouvert dans le 
6pad, le formatter, et ouvrir une fenêtre d'impression.

Tu l'as dans l'os Quentin ! Toi qui ne veux absolument pas d'impression.

Voilà voilà !

Les journées n'ayant malheureusement que 24 heures j'espère finir tout ceci 
vers noël prochain. Ou peut-être un peu avant.

A plus !

Yannick Daniel Youalé
La programmation est une religion, et Dieu est le plus grand de tous les 
programmeurs.

Progliste :
Pour se désinscrire de la liste : 
mailto:progliste-requ...@ml.free.fr?subject=unsubscribe

Pour voir les archives de la liste :
http://www.mail-archive.com/progliste@ml.free.fr/       

Pour accéder aux fichiers de la liste
http://outils.archive-host.com/partage.php?id=2Qar9Hy6ftzr
Pour y ajouter des fichiers demandez-moi le ou sur la liste ou en privé, je 
vous répondrez en privé.

Répondre à