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é.