Salut !

Début de citation

1.tu enregistre ton fichier au format utf-8
2. en début de code tu ajoutes la directives :
#coding:utf-8
3.tu fais précédé tes strings par la lettre u comme unicode :

Fin de citation

Problème N°2 résolu.
En fait il s'agissait de l'encodage du fichier. Je le faisait en ansci. et dès 
que je suis passé à l'UTF8 c'est passé.

Cependant, le problème N° 1 persiste.

Je vous ai mis en pièce jointe le code à problème.
Il s'agit de fonctionnalité d'insertion de point de début et de fin de 
sélection, qui créent des raccourcis clavier et s'intègrent au menu édition.
.

C'est lors de la pose du point de fin de sélection que l'erreur se produit.

NB: cette fonctionnalité a été intégrée de façon native par Quentin. C'est plus 
un exercice de convertion de mes anciens code que je me suis donné.

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






----- Original Message ----- 
  From: yannick 
  To: [email protected] 
  Sent: Monday, January 25, 2016 10:29 AM
  Subject: [progliste] Re: 6pad++- quelques préoccupation de sc ripting


  salut pour le pb 1 voici un exemple :
  class test ():
      'iSelectionPointStart' =1
      def test (self):
          print (self.'iSelectionPointStart' )

  pour le ppb 2 :
  1.tu enregistre ton fichier au format utf-8
  2. en début de code tu ajoutes la directives :
  #coding:utf-8
  3.tu fais précédé tes strings par la lettre u comme unicode :
  text =u"pépé "

  Le 25/01/2016 10:10, Yannick Youalé a écrit :

    Salut à tous,

    M'étant récemment mis au scripting pour le 6pad++, je rencontre quelques 
préoccupations que je voudrais vous soumettre.


    1. j'ai une variable locale au module qui ne semble pas être reconnue dans 
le corps d'une des fonctions.

    l'erreur affichée est la suivante:
    >>> Traceback (most recent call last):
      File "E:\applications\6pad++\lib\yannick\common.py", line 47, in 
SelectionPointEnd
    UnboundLocalError: local variable 'iSelectionPointStart' referenced before 
assignment

    Pourtant, la variable iSelectionPointStart est bien déclarée avant les 
fonctions et à laquelle la valeur "-1" est attribuée.

    Et j'ai bien vérifié plusieurs fois, il n'y a pas d'erreur dans l'écriture 
du nom de cette variable.

    Qu'est-ce qui cloche ?

    2. je rencontre un problème de reconnaissance d'encodage de caractères.

    En effet, lorsque je met des triples guillemets (""") ou des caractères 
accentués dans mon code, cela produit l'erreur suivante:
    Syntax error. Unicode UTF8 codeck can not decode xxxxxx.


    Cela même si j'ajoute des instruction d'en-tête tels que: import sys, 
import os, et import string.
    Ce qui m'oblige pour le moment à ne pas mettre de caractères accentués et à 
ne pas utiliser les triples guillemets.

    Où est-ce que je merde ?

    Maintenant j'aurais quelques questions et avis sur le logiciel.

    1. Dans la documentation j'ai remarqué qu'il y avait une fonction pour 
charger des fichiers de langue.

    Est-ce que les fichiers de langue se cumulent ou s'écrasent

    A mon avis étant donné que le 6pad++ est désormais un logiciel 
international, l'utilisation de cette fonction serait un bon moyen de faire en 
sorte que des scripts puissent venir avec leurs propres fichiers de langue pour 
permettre de traduire leurs textes dans les autres sans pour autant toucher au 
code source.

    2. Il faut se poser la question de savoir: Si on fait des script/plugin 
pour mieux développer en langage python, ce sera pour quelle version du python ?

    Il faudra prendre en compte que les utilisateurs auront sur leur ordinateur 
telle ou telle version du python et voudront développer pour cette version. Ce 
qui fait que le 6pad++ devra trouver le moyen de communiquer avec ces versions 
installées de python (probablement par ligne de commande) pour effectuer des 
actions propres à elles.

    C'est pourquoi je pense qu'il faut déja une fonction de listage des pythons 
installés sur l'ordinateur en cours et une proposition d'effectuation de choix 
par les menus.

    3. Qu'en est-il de l'idée de créer des profils propres à des langages 
particuliers ?

    Parce que je peux vouloir que suivant le type de fichier, les raccourcis 
soient les mêmes, mais les comportements différents.

    4. Est-il possible à l'heure actuelle de créer des interfaces ?

    En wx ou autre ?
    Ce serait intéressant par script de pouvoir proposer soi-même ses fenêtre 
et recueillir les réponses.

    Ce qui me fait subitement penser comme alternative à un petit logiciel de 
création de formulaire nommé iniform je crois, et qui proposait des 
communications par ligne de commande et des réponses dans un fichier ini.  


    5. J'entrevois l'ajout (par moi ou par d'autres):

    * de l'intégration de fonction PyBraces pour insérer et enlever des 
accolades du code source affiché. J'avais envoyé ici-même deux fonction 
extraites du edsharp. Il faudra les convertir en pythons et ça fera l'affaire.

    * d'un système d'aide pour les mots clé sous le curseur: je l'ai déja fait 
pour mon python Editor et ça marche plutôt bien. Faut juste que je convertisse 
le code du vb6 au python.


    * d'un menu pour compiler le projet  si présence du py2exe et si choix de 
la bonne version du python installé.
    Ca aussi je l'ai déja fait par ailleurs, et il me faut seulement le 
convertir.

    * d'un menu pour recharger les scripts sans avoir  à fermer et réouvrir 
6pad++. Est-ce qu'un tel moyen n'existe pas déja ?

    * d'un système d'intellicence, c'est-à-dire la proposition de mots clé dans 
une liste déroulante suivant les premières lettres tapées sous le curseur.
    Pour ce faire, (le code de Maan Aloun de son logiciel d'exploration des 
modules python peut  nous être utile.

    Et maintenant, le temps pour faire tout ça. Mon Dieu le temps pour faire 
tout ça !!!
    Et mon boulot qui me tient toujours par la gorge.

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


# -*- coding: utf-8 -*-
import sixpad
import sys
import string

# variable globale pour retenir le point de début de la sélection
iSelectionPointStart=0

def SelectionPointStart ():
        # pose un point de début de sélection dans le document"""
        iSelectionPointStart=sixpad.window.curPage.selectionStart
        sixpad.say(u"Point de début de sélection")
# end--function

def SelectionPointEnd ():
        # pose un point de fin de sélection
        # et sélectionne tout le texte jusqu'au point de début de 
sélection"""
        iEnd=0
        iTmp=0
        # vérification si point de début de sélection assigné
        if iSelectionPointStart<=0:
                sixpad.window.alert(u"Vous ne pouvez poser de point de fin de 
sélection si vous n'avez pas poser un point de début de sélection au 
préalable.", "Point de début de sélection introuvable")
                return
        # end--if
        # pose du point de fin de sélection
        iEnd=sixpad.window.curPage.selectionStart
        if iEnd < iSelectionPointStart:
                # on interchange les positions
                iTmp=iEnd
                iEnd=iSelectionPointStart
                iSelectionPointStart=iTmp
        # end--if
        # sélection
        sixpad.window.curPage.selectionStart=iSelectionPointStart
        sixpad.window.curPage.selectionEnd=iEnd
        sixpad.say(u"Point de fin de sélection")
# end--function

# ajout de nouveaux éléments à la barre des menus (edition)
mnu = sixpad.window.menus[1]

#  ajout d'un menu "point de début de sélection" dans ce menu Edition
mnu.add(u"Point de début de sélection", SelectionPointStart, -1, "f8")

#  ajout d'un menu "point de fin de sélection" dans ce menu Edition
mnu.add(u"Point de fin de sélection", SelectionPointEnd, -1, "shift+f8")

Répondre à