Salut Yannick,
Début de citation
Mais petit bémol à cette fonctionnalité, à cause du fait qu'il ne
peut y avoir que des fonctions figées à l'attribut action des
menus, je suis obligé de créer à l'avance un nombre déterminé de
fonctions qui exécuteront le choix fait sur les menus suivant leur
position.
Plus concrètement, je suis obligé de faire à l'avance des fonctions
comme suit:
def choosePythonVersion1():
def choosePythonVersion2():
def choosePythonVersion3():
def choosePythonVersion4():
def choosePythonVersionX():
Fin de citation
Ah tu crois?
Eh bien j'ai une très bonne nouvelle à t'annoncer.
Sache qu'avec Python, tu peux ne créer qu'une seule fonction
callback pour tous tes sous-menus, quel que soit leur nombre.
Si tu veux, je te fournis plus bas un petit exemple, où l'on crée
plusieurs sous-menus dynamiquement grâce à une boucle et où l'on
interagit avec chacun d'entre eux, avec une seule et unique fonction
callback.
Concrètement, ce sera beaucoup plus simple pour toi lol !
Je serai intéressé que l'on intègre cette fonctionnalités
d'exécution de script Python dans la nouvelle version du forPython
si tu veux.
Pour l'étude des décorateurs, je t'invite à lire le super tuto du
site OpenClassrooms, ex site du zero, ou celui de Sam & Max:
Tuto d'OpenClassrooms :
https://openclassrooms.com/courses/apprenez-a-programmer-en-python/les-decorateurs
Tuto de Sam & Max, en 2 parties :
http://sametmax.com/comprendre-les-decorateurs-python-pas-a-pas-partie-1/
http://sametmax.com/comprendre-les-decorateur-python-pas-a-pas-partie-2/
Je t'invite aussi à regarder le travail de notre ami Cyrille, qui
pourrait être source d'inspiration...
Voici donc mon exemple de création d'un seul callback pour plusieurs
sous-menus créés dynamiquement grâce à une boucle :
Début du code
# Création de la fonction make_f en tant que décorateur, ce sera
notre seul et unique callback.
def make_f(i):
# Création de la fonction f, à l'intérieur de la fonction make_f.
def f():
# On récupère le nom du sous-menu sur lequel on vient de valider
myMenuName = "menu%d" % i
sp.window.alert(myMenuName, "Nom du menu")
# On décoche tous les sous-menus sauf le sous-menu en cours
for x in range(myMenu.length):
if not myMenu[x].name == myMenuName:
myMenu[x].checked = False
else:
myMenu[x].checked = True
# On retourne la fonction f.
return f
# Création du menu comme sous menu du menu outils
toolsMenu = sp.window.menus.tools
myMenu = toolsMenu.add(label = "M&on menu", submenu = True)
# Création de la boucle permettant de créer les sous-menu dynamiquement
for i in range(1, 6):
# on affecte f à l'action du callback
f =make_f(i)
myMenu.add(label = "menu &%d" % i, index = -1, action=f,
name="menu%d" % i)
Fin du code
Bien amicalement,
Abdel.
----- Original Message ----- From: "Yannick Youalé"
<[email protected]>
To: <[email protected]>
Sent: Monday, February 08, 2016 9:26 AM
Subject: [progliste] Re: Extension forPython : bugs et améliorations
Salut Abdel,
Début de citation
Autrement, je suis en train d'étudier comment intégrer la possibilité
d'exécuter un script Python.
Fin de citation
Dans cette optique, j'ai travaillé sur une fonctionnalité de
listage des différentes versions de python installées sur
l'ordinateur courant.
Elles sont énumérées comme sous-menus à un menu intitulé "Versions
de python". dans le menu outil.
La version choisie par défaut est cochée, et ce choix est
sauvegardé dans le fichier de configuration.
Dans le code, on peut retrouver la version de python sélectionnée
par la variable globale curPythonPath qui renvoit le chemin vers le
dossier du python choisi.
Et dans tous les cas, l'exécutable du python choisi est:
curPythonPath+\\python.exe
Mais petit bémol à cette fonctionnalité, à cause du fait qu'il ne
peut y avoir que des fonctions figées à l'attribut action des
menus, je suis obligé de créer à l'avance un nombre déterminé de
fonctions qui exécuteront le choix fait sur les menus suivant leur
position.
Plus concrètement, je suis obligé de faire à l'avance des fonctions
comme suit:
def choosePythonVersion1():
def choosePythonVersion2():
def choosePythonVersion3():
def choosePythonVersion4():
def choosePythonVersionX():
Ce qui n'est pas très commode vous le remarquerez.
Cela m'a obligé à limiter le nombre de versions du python à prendre
en compte à 5 pour le moment.
Certes, je pourrais plutôt employer une liste de choix pour choisir
la version du python, mais ça semble tellement moins naturel que
les menus qui peuvent être cochés ou décochés...
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: Monday, February 08, 2016 8:23 AM
Subject: [progliste] Re: Extension forPython : bugs et améliorations
Resalut les scripteurs !
Voici une dernière mouture du module forPython, qui tient compte
du niveau
d'indentation, lors de l'utilisation de la touche backSpace
lorsqu'on est en
début de ligne.
Pour les mises à jour de l'extension, la priorité sera bien sûr ce
que vous
souhaiteriez améliorer ou corriger.
Autrement, je suis en train d'étudier comment intégrer la possibilité
d'exécuter un script Python.
J'explore également les nouveautés de la version alpha pour
intégrer le plan
du module en cours d'implémentation ou d'exploration sous la forme
d'une
treeView.
Toute aide ou suggestion sera la bienvenue les amis.
Bien amicalement,
Abdel.
----- Original Message ----- From: "_Abdel_"
<[email protected]>
To: <[email protected]>
Sent: Sunday, February 07, 2016 11:56 PM
Subject: [progliste] Re: Extension forPython : bugs et améliorations
Merci Quentin,
En fait, pour ma part, c'est toujours dans un dossier "plugins" que
j'inserts mes extensions pour 6pad++.
Mais Yannick nous a dit dans l'un de ses précédents posts, que
parfois, il
avait tendance à les introduire dans d'autres répertoires.
Qu'à cela ne tienne, le problème est désormais bel et bien résolu.
Sans plus tarder les amis, je vous communique la nouvelle mouture de
l'extension forPython.
Elle comporte les améliorations suivantes :
1. Désormais, vous disposez d'un nouveau mode de lecture des
entêtes de
lignes, il s'agit de la lecture des indentations, ainsi que la
lecture des
numéros de lignes et des indentations.
2. Le menu Outils est bien ciblé pour l'ajout du sous-menu
forPython,
comme
nous l'avait demandé Cyrille.
3. Désormais, dans la liste des fonctions dont on va souhaiter
modifier
les
raccourcis-clavier, la liste recueille désormais les noms de
chaque item
en
français, en allant les rechercher dans les labels des menus
correspondant,
comme nous l'a demandé Cyrille.
4. La fonction getCurScriptFolderPath a bien été corrigée et devrait
fonctionner quel que soit le contexte du répertoire où figurera
l'extension
forPython.
Modalité d'installation :
Étant-donné que notre ami Yannick nous a gratifié d'un nouveau
fichier
"statements.txt" pour l'insertion des directives d'encodage,
l'extension
forPython dispose désormais de 2 fichiers et ils ont été insérés
dans un
répertoire "forPython".
C'est 2 fichiers sont le fichier "__init__.py" et le fameux fichier
"statements.txt" de Yannick.
Pour l'installation, la ligne a insérer dans le fichier de
configuration
"6pad++.ini" devra être la suivante :
extension=plugins/forPython/__init__.py
Testez-la et faites nous part de vos remarques et suggestions...
Bien amicalement,
Abdel.
----- Original Message ----- From: "QuentinC" <[email protected]>
To: <[email protected]>
Sent: Sunday, February 07, 2016 10:16 PM
Subject: [progliste] Re: Extension forPython : bugs e t am
éliorations
> Celui-ci pouvant être "plugins", "lib", "extension" ou autre,
Yannick
avait créé un algorithme qui, en utilisant des conditions, teste
lequel
est utilisé.
C'est censé toujours être plugins pour les plugins python de
6pad++.
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é.