Comme demandé, je poste mon programme (enfin la jeune pousse de programme) LuaCS.
C'est un lien depuis ma dropbox, si le lien meurt un jour (ce qui arrivera probablement) envoyez moi simplement un MP et je restorerai le lien.
Télécharger LuaCS-Work In Progress (Archive avec le code et le fichier compilé)
Pour information, je code avec PSPad comme éditeur de texte, avec le fichier texte en ANSI, et je compile avec Luna0.2a de ExtendeD.
----------------------------------------------------------
J'ai encore des questions: peut-on faire en sorte qu'une fonction soit appelée lorse DEUX évènements sont appelés? Par exemple, une fonction qui serait appelée lorsque on.mouseMove ET on.tabKey sont appelés? Avec cela je pourrai utiliser le trackpad de la calto pour défiler dans l'éditeur de texte, ce qui serait vraiment pratique.
Autre chose: peut-on créer une seconde application (modélisée par les fenêtres 1.1, 1.2...) et y lancer un code en Lua? Ou alors, doit-on créer la 2e application déjà dans le fichier TNS et y inclure le code Lua qu'elle doit exécuter?
A défaut de créer une nouvelle application, peut-on faire en sorte de basculer automatiquement vers l'application d'à côté? J'aurais aimé mettre dans le menu une option: "compiler-exécuter" avec OClua, et lorsqu'on sélectionne l'option, on passe automatiquement sur la fenêtre d'à côté, la fenêtre d'à côté exécute le code avec OClua, et on peut rebasculer manuellement vers l'éditeur après...
[PROJET]LuaCS: l'éditeur du programmeur Lua sur calculatrice
Re: [PROJET]LuaCS: l'éditeur du programmeur Lua sur calculat
Last edited by yatto on 25 Oct 2011, 15:26, edited 1 time in total.
-
yattoPremium
Niveau 12: CP (Calculatrice sur Pattes)- Posts: 104
- Images: 1
- Joined: 05 Oct 2011, 12:46
- Location: IDF
- Gender:
- Calculator(s):→ MyCalcs profile
- Class: ENS Rennes - Mécatronique (1A)
Re: [PROJET]LuaCS: l'éditeur du programmeur Lua sur calculat
J'ai pas tout suivi/tout lu, mais j'ai vu qu'il y a des caractères accentués dans les commentaires de ton code. Je sais qu'avec le TI Nspire scripting tool, ça pose tout de suite problème.. Avec Luna, le classeur peut marcher en présence de caractères accentués, mais bizarement parfois.. D'où l'explication possible des caractères chinois.
Ainsi, il vaut mieux que tu enlèves tous les accents. (utilise la fonction chercher/remplacer de ton éditeur)
Si cependant tu veux afficher des accents dans une chaîne de caractères, tu peux par exemple te créer des variables globales du genre ee=string.uchar(233) que tu concatènes dans tes chaînes à la place du "é"..
a+
Ainsi, il vaut mieux que tu enlèves tous les accents. (utilise la fonction chercher/remplacer de ton éditeur)
Si cependant tu veux afficher des accents dans une chaîne de caractères, tu peux par exemple te créer des variables globales du genre ee=string.uchar(233) que tu concatènes dans tes chaînes à la place du "é"..
a+

Mes programmes => ici !
-
Loulou 54Premium
Niveau 13: CU (Calculateur Universel)- Posts: 1985
- Images: 8
- Joined: 02 Aug 2009, 00:00
- Location: 54, près de Metz
- Gender:
- Calculator(s):→ MyCalcs profile
- Class: Ingé Logiciel chez Amazon
Re: [PROJET]LuaCS: l'éditeur du programmeur Lua sur calculat
Ça peut être très intéressant...
As-tu implémenté les fonction undo/redo ?
Très bon travail, en tous cas !
As-tu implémenté les fonction undo/redo ?
Très bon travail, en tous cas !
Mes programmes en Lua pour TI-Nspire : Snake, Space invaders, Bobby Carrot, Minesweeper, Mazes 3D, nSpaint, FreeCell, Tiny3D-Viewer, CubeField
-
ChockostaPremium
Niveau 10: GR (Guide de Référence)- Posts: 213
- Joined: 24 Feb 2011, 00:00
- Gender:
- Calculator(s):→ MyCalcs profile
- Class: Math sup
Re: [PROJET]LuaCS: l'éditeur du programmeur Lua sur calculat
Quelques petites choses:
1- implémenter des fonctions undo-redo ce serait particulièrement lourd, je pense, parce que chaque action significative (entree, delete, et chaque touche espace, mettons) doit être enregistrée dans une table, et ensuite, pour y revenir ça sera la grande débacle... ou alors enregistrer absolument chaque action, mais ce serait trop lourd je pense. Donc pour les Undo-Redo, ce sera dans une autre vie (ou alors simplement plus tard)
2- Je pense plutôt implémenter un système de rechercher/remplacer, ça m'a l'air pas trop compliqué à faire et CA MANQUE ENORMEMENT à l'éditeur TI.
3- Personne n'a répondu, ou alors personne ne sait: peut-on récupérer deux évènements pour une fonction? Une fonction qui se déclencherait avec deux évènements, somme toute. Par exemple, un évènement peut-être utilisé comme une valeur (booléenne / réélle) pour être testée dans une condition?
4- J'ai des soucis avec mon Windows, LuaCS a donc un développement ralenti pour les prochains jours/prochaines semaines. Je verrai ce que je pourrai faire. Quoi qu'il en soit, le développement n'est pas (encore, je l'espère) interrompu.
1- implémenter des fonctions undo-redo ce serait particulièrement lourd, je pense, parce que chaque action significative (entree, delete, et chaque touche espace, mettons) doit être enregistrée dans une table, et ensuite, pour y revenir ça sera la grande débacle... ou alors enregistrer absolument chaque action, mais ce serait trop lourd je pense. Donc pour les Undo-Redo, ce sera dans une autre vie (ou alors simplement plus tard)
2- Je pense plutôt implémenter un système de rechercher/remplacer, ça m'a l'air pas trop compliqué à faire et CA MANQUE ENORMEMENT à l'éditeur TI.
3- Personne n'a répondu, ou alors personne ne sait: peut-on récupérer deux évènements pour une fonction? Une fonction qui se déclencherait avec deux évènements, somme toute. Par exemple, un évènement peut-être utilisé comme une valeur (booléenne / réélle) pour être testée dans une condition?
4- J'ai des soucis avec mon Windows, LuaCS a donc un développement ralenti pour les prochains jours/prochaines semaines. Je verrai ce que je pourrai faire. Quoi qu'il en soit, le développement n'est pas (encore, je l'espère) interrompu.
-
yattoPremium
Niveau 12: CP (Calculatrice sur Pattes)- Posts: 104
- Images: 1
- Joined: 05 Oct 2011, 12:46
- Location: IDF
- Gender:
- Calculator(s):→ MyCalcs profile
- Class: ENS Rennes - Mécatronique (1A)
Re: [PROJET]LuaCS: l'éditeur du programmeur Lua sur calculat
Luna devrait supporter n'importe quel caractère spécial du moment que le fichier .lua est correctement encodé en UTF-8.
yatto, si tu as toujours des soucis avec les caractères spéciaux, peux-tu poster un cours exemple de script posant problème (pas plus de quelques lignes) ?
yatto, si tu as toujours des soucis avec les caractères spéciaux, peux-tu poster un cours exemple de script posant problème (pas plus de quelques lignes) ?
-
ExtendeDPremium
Niveau 8: ER (Espèce Rare: nerd)- Posts: 204
- Joined: 30 Dec 2004, 00:00
- Gender:
- Calculator(s):→ MyCalcs profile
- Class: N/A
Re: [PROJET]LuaCS: l'éditeur du programmeur Lua sur calculat
Je pense pas qu'un undo/redo soit compliqué...
Quand une modification est faite, tu sauvegardes le texte précédant l'action dans un tableau et puis c'est tout.
Enfin bon, c'est toi qui vois.
Mais sans undo/redo, je continuerai à utiliser l'éditeur standard de TI.
Quand une modification est faite, tu sauvegardes le texte précédant l'action dans un tableau et puis c'est tout.
Enfin bon, c'est toi qui vois.
Mais sans undo/redo, je continuerai à utiliser l'éditeur standard de TI.
Mes programmes en Lua pour TI-Nspire : Snake, Space invaders, Bobby Carrot, Minesweeper, Mazes 3D, nSpaint, FreeCell, Tiny3D-Viewer, CubeField
-
ChockostaPremium
Niveau 10: GR (Guide de Référence)- Posts: 213
- Joined: 24 Feb 2011, 00:00
- Gender:
- Calculator(s):→ MyCalcs profile
- Class: Math sup
Re: [PROJET]LuaCS: l'éditeur du programmeur Lua sur calculat
3- Personne n'a répondu, ou alors personne ne sait: peut-on récupérer deux évènements pour une fonction? Une fonction qui se déclencherait avec deux évènements, somme toute. Par exemple, un évènement peut-être utilisé comme une valeur (booléenne / réélle) pour être testée dans une condition?
Pas compris

1- implémenter des fonctions undo-redo ce serait particulièrement lourd, je pense, parce que chaque action significative (entree, delete, et chaque touche espace, mettons) doit être enregistrée dans une table, et ensuite, pour y revenir ça sera la grande débacle... ou alors enregistrer absolument chaque action, mais ce serait trop lourd je pense. Donc pour les Undo-Redo, ce sera dans une autre vie (ou alors simplement plus tard)
Un système d'undo est implémentable sous forme de pile.
Rappels :
- Une pile :
P = pile-vide : []
empiler "c" dans P : ["c"]
empiler "a" dans P : ["c", "a"]
tête de P : "a"
dépiler P : ["c"] - Une file :
F = file-vide : []
enfiler "c" dans F : ["c"]
enfiler "a" dans F : ["c", "a"]
tête de F : "c"
défiler F : ["c"]
appuie de la touche "a"
-> incrément du buffer avec le charactère "a"
-> empiler la fonction deleteChar(cursorPos, "a") dans la pile des Undo
Undo
-> appeler tête(Undo) ce qui va en fait appeler deleteChar(cursorPos)
-> déplacer l'index de tête de Undo de -1 (donc sans supprimer la donnée)
-> empiler la fonction addChar(cursorPos, "a") dans la pile des Redo (extrait de la tête de Undo)
Redo
-> appeler tête(Redo) ce qui va en fait appeler addChar(cursorPos, "a")
-> dépiler Redo
Dans ce cas on peut très bien utiliser la puissance du Lua, c'est à dire faire des key-value-pair avec des fonctions :
Je te rappelle que :
- Code: Select all
function add(t, x) table.insert(x) end
function del(t, i) table.remove(i) end
t = {[add]=del}
t2 = {1, 2, 3}
add(t2, 4, 0} ---- t2 = {4, 1, 2, 3}
t[add](t2, 0} ---- t2 = {1, 2, 3}
Fonctionne (normalement)
-
LevakAdmin
Niveau 14: CI (Calculateur de l'Infini)- Posts: 6414
- Images: 22
- Joined: 27 Nov 2008, 00:00
- Location: 0x1AACC355
- Gender:
- Calculator(s):→ MyCalcs profile
- Class: BAC+5: Epita (ING3)
Re: [PROJET]LuaCS: l'éditeur du programmeur Lua sur calculat
1- Je tiens à rappeler que LuaCS est mon tout premier programme (un peu sérieux) en Lua. Avant d'avoir acheté ma Nspire, je n'ai jamais codé en Lua. Je n'ai donc quasiment aucune notion un peu avancée en Lua. J'avais fait du C, à une époque, ça aide pour l'algorithmie, et encore...
C'est quoi les key-value-pair? J'ai un peu compris ton exemple de code. Mais pas ton explication sur comment on peut coder le "undo-redo"... c'est un peu flou pour moi, tout ça ^^
Déjà avec la méthode de Chockosta, ça ferait des une table avec des valeurs faramineuses, non? c'est énorme de sauvegarder tout le texte à chaque fois. Ta méthode, Levak, me semble mieux (d'après ce que j'ai compris) mais je n'y ai pas compris grand chose...
2- Je me réexplique pour ma question:
Peut-on faire en sorte qu'une fonction soit appelée par deux évènements? Par exemple, l'évènement on.escapeKey et l'évènement on.mouseMove(mx, my) (exemple, hein) ?
Ou alors, si on ne peut pas, est-ce qu'un évènement peut être utilisé comme valeur booléenne, par exemple, dans une fonction: if on.enterKey=true then... ?
Je sais que j'ai des idées un peu bizarres (quoique) mais ça m'aiderait bien, ce truc.
EDIT: 3- Je bloque sur la recherche d'une chaîne dans le fichier... comment faire qu'on capte le texte dans une chaîne spécifique, pour définir le texte qu'on doit chercher ^^" ?
C'est quoi les key-value-pair? J'ai un peu compris ton exemple de code. Mais pas ton explication sur comment on peut coder le "undo-redo"... c'est un peu flou pour moi, tout ça ^^
Déjà avec la méthode de Chockosta, ça ferait des une table avec des valeurs faramineuses, non? c'est énorme de sauvegarder tout le texte à chaque fois. Ta méthode, Levak, me semble mieux (d'après ce que j'ai compris) mais je n'y ai pas compris grand chose...
2- Je me réexplique pour ma question:
Peut-on faire en sorte qu'une fonction soit appelée par deux évènements? Par exemple, l'évènement on.escapeKey et l'évènement on.mouseMove(mx, my) (exemple, hein) ?
Ou alors, si on ne peut pas, est-ce qu'un évènement peut être utilisé comme valeur booléenne, par exemple, dans une fonction: if on.enterKey=true then... ?
Je sais que j'ai des idées un peu bizarres (quoique) mais ça m'aiderait bien, ce truc.
EDIT: 3- Je bloque sur la recherche d'une chaîne dans le fichier... comment faire qu'on capte le texte dans une chaîne spécifique, pour définir le texte qu'on doit chercher ^^" ?
-
yattoPremium
Niveau 12: CP (Calculatrice sur Pattes)- Posts: 104
- Images: 1
- Joined: 05 Oct 2011, 12:46
- Location: IDF
- Gender:
- Calculator(s):→ MyCalcs profile
- Class: ENS Rennes - Mécatronique (1A)
Re: [PROJET]LuaCS: l'éditeur du programmeur Lua sur calculat
yatto wrote:1- Je tiens à rappeler que LuaCS est mon tout premier programme (un peu sérieux) en Lua. Avant d'avoir acheté ma Nspire, je n'ai jamais codé en Lua. Je n'ai donc quasiment aucune notion un peu avancée en Lua. J'avais fait du C, à une époque, ça aide pour l'algorithmie, et encore...
C'est quoi les key-value-pair? J'ai un peu compris ton exemple de code. Mais pas ton explication sur comment on peut coder le "undo-redo"... c'est un peu flou pour moi, tout ça ^^
Déjà avec la méthode de Chockosta, ça ferait des une table avec des valeurs faramineuses, non? c'est énorme de sauvegarder tout le texte à chaque fois. Ta méthode, Levak, me semble mieux (d'après ce que j'ai compris) mais je n'y ai pas compris grand chose...
C'est normal et je m'en doutais un peu. J'ai répondu très rapidement avec des termes pas forcément explicite, donc j'ai essayé de donner un exemple de code. Ces notions je les ai apprises l'année dernière en cours d'algo (école d'info).
Les principes de pile et file sont abstrait, et en Lua ça se traduit par des table.insert(t, x, 0) et table.remove(t, 0) (on ajoute et on retire toujours en tête, en "poussant" les autres valeurs, et ce n'est pas consommateur en Lua car les tables sont dynamiques - structure chainée). Après il faut bien gérer les cas particuliers, Undo, Redo, Undo (qu'est-on sensé faire ?). D'où mon idée d'index (mais ce n'était qu'un exemple, que normalement tu retrouves si tu te poses la question)
2- Je me réexplique pour ma question:
Peut-on faire en sorte qu'une fonction soit appelée par deux évènements? Par exemple, l'évènement on.escapeKey et l'évènement on.mouseMove(mx, my) (exemple, hein) ?
Ou alors, si on ne peut pas, est-ce qu'un évènement peut être utilisé comme valeur booléenne, par exemple, dans une fonction: if on.enterKey=true then... ?
Je sais que j'ai des idées un peu bizarres (quoique) mais ça m'aiderait bien, ce truc.
Officiellement on ne peut pas, tout simplement parce que c'est un lien évènementiel explicite. On définit des fonctions qui seront appelées, ou non, par un seul appel qu'on ne contrôle pas (côté framework). Dans d'autres procédés évènementiels, c'est l'utilisateur qui défini quelles fonctions appeler en fonction des évènements. En Qt4 par exemple c'est avec connect(); - on "connecte" la fonction à l'évènement.
Tu peux toujours te servir d'un booléen et dun timer.
- Code: Select all
e = false
function on.enterKey()
e = true
timer.start(0.1)
end
function on.charIn(ch)
if ch == "e" and e == true then
-- do something
end
end
function on.timer()
timer.stop()
e = false
end
EDIT: 3- Je bloque sur la recherche d'une chaîne dans le fichier... comment faire qu'on capte le texte dans une chaîne spécifique, pour définir le texte qu'on doit chercher ^^" ?
http://lua-users.org/wiki/PatternsTutorial
Attention : comme tu le verras, string.fing utilise les regex. Donc certains caractères spéciaux sont considérés comme des mots clés. Par exemple "." veut dire n'importe quel caractère.
-
LevakAdmin
Niveau 14: CI (Calculateur de l'Infini)- Posts: 6414
- Images: 22
- Joined: 27 Nov 2008, 00:00
- Location: 0x1AACC355
- Gender:
- Calculator(s):→ MyCalcs profile
- Class: BAC+5: Epita (ING3)
Re: [PROJET]LuaCS: l'éditeur du programmeur Lua sur calculat
L'undo-redo, je plancherai dessus plus tard, avec du papier (je peux être assez consommateur en papier quand je fais un programme...) En fait, l'idée, ce serait de faire une table qui contiendrait toutes les actions faites à la suite, et une autre, toutes les actions annulées? Un peu comme ça?:
L'idée du booléen et du timer, c'est chouette, surtout que ça peut régler mon 3e problème... d'ailleurs, je crois que tu as mal compris mon problème: je ne sais pas comment faire en sorte que on.charIn redirige le texte tapé non pas dans l'éditeur, mais dans une chaîne spécifique, chaîne qui contiendrait l'expression à retrouver.
Avec un booléen, c'est peut-être faisable: on lance la fonction capterMot, qui active un booléen, le booléen indique aux autres fonctions qu'on travaille non pas avec le texte de l'éditeur mais avec une autre chaîne, et une fois qu'on appuie sur Enter, une autre fonction est appelée, elle remet le booléen à false, puis recherche dans le buffer. j'ai été clair? mmh, pas trop, non? En tout cas, avec ça, je peux faire une fonctionnalité de rechercher/remplacement.
- Code: Select all
action={
[1]="a"
[2]="b"
...
[n]=5
}
undo={}
function undoit()
if action[n]=5 then --par exemple
--supprimer le saut de ligne
unevariable=5
end
if ...
...
table.insert(undo,table.getn(undo), unevariable)
end
function redoit()
if undo[n]=5 then --par exemple
--refaire le saut de ligne en même position (comment? mystère...)
unevariable=5
end
if ...
...
table.remove(undo,table.getn(undo))
end
L'idée du booléen et du timer, c'est chouette, surtout que ça peut régler mon 3e problème... d'ailleurs, je crois que tu as mal compris mon problème: je ne sais pas comment faire en sorte que on.charIn redirige le texte tapé non pas dans l'éditeur, mais dans une chaîne spécifique, chaîne qui contiendrait l'expression à retrouver.
Avec un booléen, c'est peut-être faisable: on lance la fonction capterMot, qui active un booléen, le booléen indique aux autres fonctions qu'on travaille non pas avec le texte de l'éditeur mais avec une autre chaîne, et une fois qu'on appuie sur Enter, une autre fonction est appelée, elle remet le booléen à false, puis recherche dans le buffer. j'ai été clair? mmh, pas trop, non? En tout cas, avec ça, je peux faire une fonctionnalité de rechercher/remplacement.
-
yattoPremium
Niveau 12: CP (Calculatrice sur Pattes)- Posts: 104
- Images: 1
- Joined: 05 Oct 2011, 12:46
- Location: IDF
- Gender:
- Calculator(s):→ MyCalcs profile
- Class: ENS Rennes - Mécatronique (1A)
Who is online
Users browsing this forum: ClaudeBot [spider] and 1 guest