X9 script de sélection de calque

Les problèmes visibles et identifiés, et les autres...
Règles du forum
Important : Indiquez la version de PaintShop Pro dans le titre du sujet.
Exemple : PaintShop Pro X7 problème d'affichage de la palette couleur
Répondre
Avatar du membre
fs999
entraideur expérimenté
entraideur expérimenté
Messages : 346
Enregistré le : sept. 2015
Sexe : Homme
Localisation : Luxembourg
OS : Windows 10
OS 64 bits : Oui
Version PSP : 2023 64 bits
Contact :

X9 script de sélection de calque

Message par fs999 »

Bonsoir,

Je viens de m'apercevoir qu'il y a un bug dans les scripts pour sélectionner un calque.

Voilà ce que propose le Corel PaintShop Pro Scripting guide :

Ce fragment de code va permettre de sauvegarder le calque actif et de sélectionner tous les calques en partant du bas, puis de sélectionner le calque de départ :

Code : Tout sélectionner

def Do(Environment):
    # get the path from the bottom from the active layer so we can restore it when done
    Props = App.Do( Environment, 'ReturnLayerProperties' )
    PathBack = Props[ 'Path' ]
    # start by selecting the bottommost layer in the image.
    App.Do( Environment, 'SelectLayer', { 'Path': (9999,-9999, [], False ) } )
    FoundLayer = True
    while FoundLayer == True:
         LayerName = GetCurrentLayerName( Environment, App.TargetDocument)
         # go to the next layer
         FoundLayer = App.Do( Environment, 'SelectNextLayer' )
     # now that the loop is done, select the bottom layer and then
     # use the pathback to restore the layer that was active when we started
     App.Do( Environment, 'SelectLayer',  { 'Path': (9999,-9999, [], False ) } )
    App.Do( Environment, 'SelectLayer', { 'Path': PathBack } )
C'est l'élément App.Do( Environment, 'SelectLayer', { 'Path': (9999,-9999, [], False ) } ) qui ne fonctionne pas. Il devrait sélectionner le calque le plus bas mais à l'exécution le calque actif est désélectionné et la commande GetCurrentLayerName( Environment, App.TargetDocument) renvoie le nom du calque précédemment actif...

Si quelqu'un a une idée pour contourner cette erreur...
Avatar du membre
Zen-Luck
entraideur amiral
entraideur amiral
Messages : 5742
Enregistré le : juil. 2015
Sexe : Homme
Localisation : Belgique
OS : Windows 10
OS 64 bits : Oui
Version PSP : 2023 64 bits
Contact :

Re: X9 script de sélection de calque

Message par Zen-Luck »

Je ne comprends pas ce que veut dire le premier commentaire du script:
# get the path from the bottom from the active layer so we can restore it when done
Si au départ (au moment du lancement du script) le calque actif est le premier en haut ou le dernier en bas, l'exécution du script produit-elle un résultat différent ? N'ai pas testé...
Avatar du membre
fs999
entraideur expérimenté
entraideur expérimenté
Messages : 346
Enregistré le : sept. 2015
Sexe : Homme
Localisation : Luxembourg
OS : Windows 10
OS 64 bits : Oui
Version PSP : 2023 64 bits
Contact :

Re: X9 script de sélection de calque

Message par fs999 »

C'est pour pouvoir sauvegarder le calque sélectionné au départ (avant l'exécution du script).

Le script fonctionne si le dernier calque est sélectionné.
Donc App.Do( Environment, 'SelectLayer', { 'Path': (9999,-9999, [], False ) } ) ne le fait pas...
Avatar du membre
Zen-Luck
entraideur amiral
entraideur amiral
Messages : 5742
Enregistré le : juil. 2015
Sexe : Homme
Localisation : Belgique
OS : Windows 10
OS 64 bits : Oui
Version PSP : 2023 64 bits
Contact :

Re: X9 script de sélection de calque

Message par Zen-Luck »

fs999 a écrit :C'est pour pouvoir sauvegarder le calque sélectionné au départ (avant l'exécution du script).

Le script fonctionne si le dernier calque est sélectionné.
Donc App.Do( Environment, 'SelectLayer', { 'Path': (9999,-9999, [], False ) } ) ne le fait pas...
Et si on écrit +9999,-9999 au lieu de 9999,-9999 (ajouter le signe +)
ça fonctionne ?
Dans Excel, il faut parfois entrer certaines valeurs avec le signe +
Je me suis dit que c'était peut-être simplement une formulation non reconnue qui posait problème dans ce script...
Avatar du membre
fs999
entraideur expérimenté
entraideur expérimenté
Messages : 346
Enregistré le : sept. 2015
Sexe : Homme
Localisation : Luxembourg
OS : Windows 10
OS 64 bits : Oui
Version PSP : 2023 64 bits
Contact :

Re: X9 script de sélection de calque

Message par fs999 »

Non ça ne change rien. Mais je pense avoir trouvé. 9999 ou -9999 ne fonctionne pas.

Je fais une itération jusqu'au premier calque et ça marche, il faut naturellement revenir en arrière quand il ne trouve plus de calque :

Code : Tout sélectionner

      # Vector Selection Update
      #App.Do( Environment, 'VectorSelectionUpdate', {
      #       'Path': (+9999,-9999,[],False),
      #       'Type': App.Constants.ObjectSelection.Select 
      #} )
      FoundLayer = True
      while FoundLayer == True: 
        FoundLayer = App.Do( Environment, 'SelectPreviousLayer' )
      FoundLayer = App.Do( Environment, 'SelectNextLayer' )
Répondre