Salut à tous,

J'ai créé des fonctions de parcours de quelques endroits stratégiques des 
disques durs à la recherche des versions de python installés sur l'ordinateur 
courant.

J'arrive à faire lister ces versions dans un sous menu du menu outils, mais mon 
problème est que je ne sais pas comment déterminer que l'utilisateur à cliqué 
sur tel ou tel élément de menu représentant une version du python.

Dans la documentation, il n'ya que l'attribut "action" qui peut permettre 
d'associer un élément de menu à une fonction qui s'exécutera lors du click.
Or, cette association ne me convient pas parce que lors de ce processus de 
génération, je ne peux et ne veux décemment pas créer à l'avance une fonction 
pour chaque élément de menu.

Je remarque que cela aurait pu être résolu par un évènement lié aux menus par 
lequel on peut capter qu'un click a été fait sur les menus, et que le name de 
celui sur lequel on a cliqué est celui-ci.

Comment puis-je faire   pour contourner/solutionner le problème ?

De plus, j'ai fait l'expérience que dans d'autres langage, en plus des 
attributs "name" et "ID" à l'objet menu, il est proposé un attribut  "tag" qui 
sert de fourre-tout ou si vous voulez de container dans lequel on peut stoquer 
une valeur à réutiliser plus tard.
Hé bien, cela n'existant pas ou pas encore dans le 6pad++, j'ai du comme qui 
dirait me débrouiller.

Pour illustrer cette limitation, j'en viendrais toujours à mon code de 
génération des menus, où en l'absence d'un attribut "tag", et l'attribut ID 
étant strictement numérique, j'ai été obligé de stoquer le chemin vers le 
dossier de chaque version du python dans 
l'attribut "name".
Ce qui est passé, mais n'est pas du tout élégant comme vous le conviendrez avec 
moi.

Bon, je ne m'en irais pas sans vous coller ce fameux code dont je vous rabache 
les oreilles depuis le début.

Début du code python

def addListOfPythonInstalledInMenu (mnu):
 # liste les versions de python installés et les référence dans le menu 
'versions de python'
 # dans tous les repertoires où elles peuvent se trouver.
 searchPythonInstalledInDirectory(mnu, "c:\\")
 searchPythonInstalledInDirectory(mnu, "c:\\Programs\\")
 searchPythonInstalledInDirectory(mnu, "C:\\Program Files\\")
 searchPythonInstalledInDirectory(mnu, "d:\\")
 searchPythonInstalledInDirectory(mnu, "d:\\Programs\\")
 searchPythonInstalledInDirectory(mnu, "d:\\Program Files\\")
 searchPythonInstalledInDirectory(mnu, "e:\\")
 searchPythonInstalledInDirectory(mnu, "e:\\Programs\\")
 searchPythonInstalledInDirectory(mnu, "e:\\Program Files\\")
# end def

def searchPythonInstalledInDirectory(mnu, sPath):
 # Liste les versions de python pour un repertoire particulier.
 i=-1
 f=""
 l=[]
 sFld=""
 if os.path.isdir(sPath)==False: return
 found=os.listdir(sPath)
 for f in found:
  if re.match("^python\d\.*\d", f, re.I):
   #  on détermine si il existe un fichier python.exe
   if os.path.isfile(sPath+f+"\\python.exe"):
    i=i+1
    sFld=sPath+f
    mnu.add(f+" de "+sFld, None, -1, "", sFld)
   # end if
  # end if
 # end for
# end def

Fin du code python

Amicalement,

Yannick Daniel Youalé
La programmation est une religion. Aimez-la, ou quittez-la.
www.visuweb.net

Répondre à