Salut Yannick,
Mais bien sûr que tu es pleinement autorisé à modifier le
forPython,
car tu contribues à son amélioration.
Tu vois, moi j'aime bien le travail collaboratif, surtout lorsque
chaque participant apporte quelque chose qui pourrait aider les
autres scripteurs ou programmeurs qui ne seraient pas bien
familiers
avec certaines commandes ou instructions.
Cependant, je souhaitais juste attirer ton attention sur les points
suivants :
Lorsqu'on assigne à plusieurs variables une même valeur, on peut
très bien écrire :
variable1 = variable2 = variable3 = 0
Donc je remplacerais bien des instructions comme :
iLineStart, iLineEnd, j = 0, 0, 0
Par :
iLineStart = iLineEnd = j = 0
Autre chose, Quentin a prévu un attribut pour la classe Page, qui
retourne le nombre total de lignes.
Donc, je remplacerais bien des instructions comme :
nb = sp.window.curPage.lineOfOffset (len(sp.window.curPage.text))
Par :
nb = sp.window.curPage.lineCount
Autre chose, je pensais au Backspace, il ne supprime pas forcément
un niveau d'indentation.
Si l'utilisateur prévoit que ce soit des espaces, le Backspace ne
supprimera qu'un espace à la fois.
Alors que pour Tab et Shift Tab, Quentin a bien prévu le coup, quel
que soit le nombre d'espace que l'utilisateur aura définit comme
symbole d'indentation, ils seront bien considérés lors de
l'ajout ou
de la diminution d'un niveau.
Donc, je te suggère que l'on retire le Backspace de la fonction
onKeyUp, qu'en penses-tu?
Je souhaitais aussi te demander, si tu n'y vois aucun inconvénient,
de bien vouloir regarder avec moi les fonctions de sélections de la
fonction courante et de la classe courante que j'ai moi-même
créées.
Je ne sais pas, mais j'ai l'impression que je n'ai pas bien ciblé
chirurgicalement l'emplacement où une fonction ou classe serait
susceptible de se terminer.
Si tu as des idées, elles seront les bienvenues.
Merci à toi.
Bien amicalement,
Abdel.
----- Original Message ----- From: "Yannick Youalé"
<[email protected]>
To: <[email protected]>
Sent: Friday, February 05, 2016 4:01 PM
Subject: [progliste] Re: 6pad++- amélioration de l'extension
forPython
Recoucou Abdel,
Autre proposition d'amélioration pour l'extension forPython.
Le but en réalisant ce qui s'approche le plus possible d'un IDE
pour le langage pour python par les extension pour le 6pad++ est
d'éviter aux utilisateurs de chercher ailleurs ce qu'ils peuvent
directement trouver dans l'IDE.
C'est pourquoi je propose peut-être la première fonctionnalité
d'insertion, l'insertion des instructions d'en-tête de fichier.
Plus précisément les commandes d'encodage du fichier.
Exemple:
# -*- coding: utf-8 -*-
Mais pour ce faire, il faudrait que le forPython se distribue
désormais avec un dossier dans lequel seront regroupés tous les
fichiers annexes dont il aura besoin pour fonctionner.
En pièce jointe à ce mail, je propose d'ailleurs le fichier
"statements.txt" à mettre dans le même dossier que le script
forPython), et qui contient une liste d'instruction d'en-tête de
fichier que j'ai déja pu regrouper. Seulement six pour l'instant.
Pour localiser le chemin vers l'extension en cours d'exécution,
j'ai créé la fonction getCurScriptFolderPath() que tu veras
plus bas.
La fonction insertHeaderStatement(): se sert de tout ça et
affiche
une liste dans laquelle on doit choisir l'instruction à insérer à
l'emplacement du curseur.
Voici le code:
Début du code python
def insertHeaderStatement():
# propose une instruction d'en-tête de fichier à insérer
sFile = getCurScriptFolderPath()+"\\statements.txt"
if os.path.isfile(sFile):
path = open(sFile,'r')
s = path.read() # Récupération du contenu du fichier
path.close() # Fermeture du fichier
lignes=s.split("\n")
lignes.remove("") # retrait des éléments vides
i = sp.window.choice("Veuillez sélectionner une instruction
d'en-tête de fichier à insérer", "Instructions d'en-tête de
fichier", lignes, 1)
if i>=0:
sp.window.curPage.insert(sp.window.curPage.selectionStart,
lignes[i])
# end if
else:
sp.window.alert("Le fichier statements.txt est introuvable
près de
l'extension 'forPython' \nVeuillez l'y installer et recommencer
cette action.", "Fichier introuvable")
return
# end if
# end def
def getCurScriptFolderPath():
# renvoi le chemin vers le dossier contenant le script courant
sPath = __name__
l = sPath.split(".")
if len(l)>1: del l[-1]
sPath=sp.appdir+"\\lib\\"+"\\".join(l)
# si pas dans le dossier lib, on essai le dossier plugin
if os.path.isdir(sPath)==False:
sPath=sp.appdir+"\\plugin\\"+"\\".join(l)
# si toujours pas trouvé, on ressort
if os.path.isdir(sPath)==False: return ""
return sPath
# end def
# création du menu associé
mnu.add(label="Insérer une instruction d'en-tête de fichier",
action=insertHeaderStatement, name="insertHeaderStatement")
Fin du code python
Si tu trouves tout ça trop compliqué, donne moi l'autorisation et
je les intègrerai dans la dernière version que tu as envoyé tout à
l'heure.
Amicalement,
Yannick Daniel Youalé
La programmation est une religion. Aimez-la, ou quittez-la.
www.visuweb.net
----- Original Message ----- From: "_Abdel_"
<[email protected]>
To: <[email protected]>
Sent: Thursday, February 04, 2016 11:24 PM
Subject: [progliste] Re: 6pad++- amélioration de l'extension
forPython
Bonsoir la ML,
Sans plus tarder, j'ai le plaisir de vous communiquer la nouvelle
version de
l'extension "forPython", réalisée avec 6pad++ version beta.
Grâce aux suggestions de Yannick, nous avons intégré la
possibilité de
pouvoir vocaliser les changements de niveaux avec tab, shift +
tab, ou
backSpace, lorsqu'on est en début de ligne.
La seconde amélioration, que je qualifierais de plutôt
importante,
c'est que
désormais, en réalisant le raccourci clavier "CTRL+M", chacune et
chacun
pourra modifier les raccourcis-claviers des différentes
commandes,
selon les
préférences.
Idées d'amélioration.
Je pense qu'il serait intéressant d'intégrer 2 autres modes de
lecture des
entêtes de lignes, "Lire les indentations" et "Lire les
numéros de
lignes et
les indentations".
Ca permettrait de reconnaître la mixité des caractères
d'indentation s'il y
en a et de pouvoir se corriger si on a fait une erreur en
mélangeant des
tabs et des espaces.
La seconde idée, ce serait d'isoler les regexp ayant permis de
retrouver les
classes et fonctions dans un dictionnaire.
En effet, je trouve personnellement que les dictionnaires sont
beaucoup plus
souples à manier que les variables globales, mais ça reste un
avis
personnel.
Autre idée, mais je pense qu'elle aura plus sa place lorsque
j'aurais mieux
compris comment implémenter une treeView avec la version
alpha, ce
serait de
pouvoir construire un plan du module en cours d'implémentation
ou de
consultation, pour mieux reconnaître les relations
classes/sous-classes et
classes/fonctions et attributs, etc.
Mais ce n'est pour le moment qu'un rêve bien entendu.
Ah j'oubliais, il faudrait aussi essayer d'intégrer la
possibilité
d'exécuter du code comme dans le module de Cyrille, mais je n'ai
pas encore
bien compris comment implémenter cette partie.
Toute aide sera la bienvenue les amis.
Je vous souhaite une agréable soirée.
Bien amicalement,
Abdel.
----- Original Message ----- From: "Cyrille"
<[email protected]>
To: <[email protected]>
Sent: Thursday, February 04, 2016 10:30 PM
Subject: [progliste] Re: 6pad++- amélioration de l'extens ion
forPython
Salut Abdel,
Merci, c'était bien ça !
Cyrille
-----Message d'origine-----
De : [email protected]
[mailto:[email protected]] De la
part de _Abdel_
Envoyé : jeudi 4 février 2016 20:13
À : [email protected]
Objet : [progliste] Re: 6pad++- amélioration de l'extens ion
forPython
Salut Cyrille,
Sauf erreur de ma part, il me semble que tu dois copier le
répertoire lib
figurant dans ton 6pad++ beta, dans le répertoire de ta version
alpha, et
le
module ctypes sera alors importable sans PB.
Je l'ai fait ici, et ça marche nickel.
Bien amicalement,
Abdel.
----- Original Message ----- From: "Cyrille"
<[email protected]>
To: <[email protected]>
Sent: Wednesday, February 03, 2016 11:13 PM
Subject: [progliste] Re: 6pad++- amélioration de l'extens ion
forPython
Salut Quentin,
J'ai essayé de tester ton nouveau 6pad++.
Mais il est incapable d'exécuter la ligne :
import ctypes
dans une de mes extensions, alors que la version beta le
faisait
bien.
Sais-tu à quoi ça pourrait être dû ?
Voici le traceback Python :
Traceback (most recent call last):
File
"D:\Applications\_test\6pad++_beta1_test2\plugins\perso.py",
line
6,
in <module>
import ctypes
File "C:\MinGW\ProgQ\9pad++\lib\ctypes\__init__.py", line
7, in
<module>
ImportError: No module named '_ctypes'
>>> >>>
Merci d'avance.
Cyrille
-----Message d'origine-----
De : [email protected]
[mailto:[email protected]] De la
part de QuentinC
Envoyé : lundi 1 février 2016 20:53
À : [email protected]
Objet : [progliste] Re: 6pad++- amélioration de l'extens ion
forPython
Bonsoir,
Je vous mets ce soir en ligne en avant première une nouvelle
version
alpha de 6pad++.
J'ai notamment enrichi l'API avec les task dialogs.
J'y ai aussi ajouté les 3 plugins que j'avais commencé, si vous
voulez
les reprendre/continuer ce serait avec plaisir. Vous pouvez
aussi vous
contenter de commenter bien sûr.
Téléchargement ici:
https://dl.dropboxusercontent.com/u/25797488/6pad%2B%2B.zip
Les 3 plugins expérimentaux inclus sont :
* audio_indent: un plugin qui sonorise les changements
d'indentation
* dialogs: un plugin qui va proposer des boîtes de dialogue
additionnelles et d'autres outils relatifs aux dialogues. Pour
le moment
je vous propose uniquement la TreeViewDialog. Vous pouvez
déjà vous
amuser pas mal avec !
* developer: un plugin dont le but était de regrouper des
fonctionnalités utiles pour les développeurs. Ce qui est
proposé
pour le
moment, c'est juste une petite démo qui ne fait pas grand
chose.
L'idée
est d'identifier le type de fichier en cours d'édition d'une
part, et
d'autre part le type de projet et son dossier racine. But du
jeu,
proposer des items de menus disponibles de manière globale mais
réagissant différemment selon le type de fichier et le type de
projet
ouvert. Si on veut proposer des fonctionnalités pour aller à la
fonction/classe précédente/suivante, commenter/décommenter une
ligne,
etc. multilangage, on peut partir de cette base.
La détection de projet pourrait permettre d'ajouter des
items genre
compiler, exécuter, lancer les tests, le débogueur, etc.
Conscient qu'on ne peut rien faire avec de concret pour
l'instant, je
voulais surtout avoir votre avis.
Voilà, have fun !
Progliste :
Pour se désinscrire de la liste :
mailto:[email protected]?subject=unsubscribe
Pour voir les archives de la liste :
http://www.mail-archive.com/[email protected]/
Je vous rappelle que les pièces jointe sont activés leur
taille est
limité
à
2 MO
Pour accéder aux fichiers de la liste
http://outils.archive-host.com/partage.php?id=2Qar9Hy6ftzr
Ou en utilisant la nouvelle page de partage :
http://outils-n.archive-host.com/partage-fm0m7b947vglikp9Efpso94gt
Pour y ajouter des fichiers demandez-moi le ou sur la liste ou
en privé,
je
vous répondrez en privé.
---
L'absence de virus dans ce courrier électronique a été vérifiée
par le
logiciel antivirus Avast.
https://www.avast.com/antivirus
Progliste :
Pour se désinscrire de la liste :
mailto:[email protected]?subject=unsubscribe
Pour voir les archives de la liste :
http://www.mail-archive.com/[email protected]/
Je vous rappelle que les pièces jointe sont activés leur
taille est
limité
à 2 MO
Pour accéder aux fichiers de la liste
http://outils.archive-host.com/partage.php?id=2Qar9Hy6ftzr
Ou en utilisant la nouvelle page de partage :
http://outils-n.archive-host.com/partage-fm0m7b947vglikp9Efpso94gt
Pour y ajouter des fichiers demandez-moi le ou sur la liste ou
en privé,
je vous répondrez en privé.
Progliste :
Pour se désinscrire de la liste :
mailto:[email protected]?subject=unsubscribe
Pour voir les archives de la liste :
http://www.mail-archive.com/[email protected]/
Je vous rappelle que les pièces jointe sont activés leur taille
est limité
à
2 MO
Pour accéder aux fichiers de la liste
http://outils.archive-host.com/partage.php?id=2Qar9Hy6ftzr
Ou en utilisant la nouvelle page de partage :
http://outils-n.archive-host.com/partage-fm0m7b947vglikp9Efpso94gt
Pour y ajouter des fichiers demandez-moi le ou sur la liste
ou en
privé,
je
vous répondrez en privé.
---
L'absence de virus dans ce courrier électronique a été vérifiée
par le
logiciel antivirus Avast.
https://www.avast.com/antivirus
Progliste :
Pour se désinscrire de la liste :
mailto:[email protected]?subject=unsubscribe
Pour voir les archives de la liste :
http://www.mail-archive.com/[email protected]/
Je vous rappelle que les pièces jointe sont activés leur taille
est limité
à 2 MO
Pour accéder aux fichiers de la liste
http://outils.archive-host.com/partage.php?id=2Qar9Hy6ftzr
Ou en utilisant la nouvelle page de partage :
http://outils-n.archive-host.com/partage-fm0m7b947vglikp9Efpso94gt
Pour y ajouter des fichiers demandez-moi le ou sur la liste
ou en
privé,
je vous répondrez en privé.
Progliste :
Pour se désinscrire de la liste :
mailto:[email protected]?subject=unsubscribe
Pour voir les archives de la liste :
http://www.mail-archive.com/[email protected]/
Je vous rappelle que les pièces jointe sont activés leur taille
est
limité à 2 MO
Pour accéder aux fichiers de la liste
http://outils.archive-host.com/partage.php?id=2Qar9Hy6ftzr
Ou en utilisant la nouvelle page de partage :
http://outils-n.archive-host.com/partage-fm0m7b947vglikp9Efpso94gt
Pour y ajouter des fichiers demandez-moi le ou sur la liste ou en
privé, je vous répondrez en privé.
Progliste :
Pour se désinscrire de la liste :
mailto:[email protected]?subject=unsubscribe
Pour voir les archives de la liste :
http://www.mail-archive.com/[email protected]/
Je vous rappelle que les pièces jointe sont activés leur taille est
limité à 2 MO
Pour accéder aux fichiers de la liste
http://outils.archive-host.com/partage.php?id=2Qar9Hy6ftzr
Ou en utilisant la nouvelle page de partage :
http://outils-n.archive-host.com/partage-fm0m7b947vglikp9Efpso94gt
Pour y ajouter des fichiers demandez-moi le ou sur la liste ou en
privé, je vous répondrez en privé.