Gestion de l'état des différents types de compléments Python

Communication et coordination entre les types de compléments

Dans certains cas, un moyen de communication s'avère indispensable entre les différents types de compléments pour faire en sorte qu'une personnalisation permette d'en activer une autre ou d'obtenir son état. Un clic sur le bouton associé à un complément spécifique, par exemple, peut faire passer le complément d'un outil de l'état désactivé (disabled) à activé (enabled).

Le code Python suivant indique comment est gérée la communication entre les compléments. Dans la fonction onClick() du bouton, l'ID de l'outil (Nom de variable) est utilisé pour le faire passer de l'état désactivé à activé. Il n'est pas nécessaire de spécifier le préfixe d'espace de noms dans l'ID.

class ButtonClass(object):
    def __init__(self):
        self.enabled = True
        self.checked = False
    def onClick(self):
        # tool1 is the tool ID
        tool1.enabled = True

L'ID (Nom de variable) de l'outil est spécifié au moment de la création du type de complément dans l'Assistant de complément Python et il est stocké dans le fichier config.xml. L'espace de noms du complément est ajouté à l'ID en tant que préfixe. Ceci permet d'éviter les conflits de nom entre les compléments. Il n'est cependant pas nécessaire d'ajouter l'espace de noms en tant que préfixe à l'ID lorsque vous l'utilisez à l'intérieur du script. Voir l'exemple ci-dessous.

La plupart du temps, l'état du type de complément est géré par l'extension du complément, dans laquelle il est mis à jour et stocké en réponse à différents événements de l'application. Vous souhaitez peut-être qu'un outil ou ensemble d'outils s'active uniquement lorsqu'un document ArcMap s'affiche en mode Données, par exemple.

Le code Python suivant illustre l'utilisation d'une classe d'extension pour désactiver un outil lorsque la vue active passe en mode Mise en page. N'incluez pas le préfixe d'espace de noms.

class AVExtension(object):

    def activeViewChanged(self):
        mxd = arcpy.mapping.MapDocument('current')
        active_view = mxd.activeView
        # tool1 is the tool ID (without the namespace prefix)
        if active_view == 'PAGE_LAYOUT':
            tool1.enabled = False
        else:
            tool1.enabled = True
        arcpy.RefreshActiveView()
        return

Propriétés enabled et checked

Les types de compléments (boutons, outils et zones de listes modifiables) sont régulièrement invités à procéder à la mise à jour de leur état enabled et checked. Dans Python, les types de compléments contiennent des propriétés booléennes pour les états enabled et checked. Vous pouvez spécifier que le complément passe à l'état enabled ou disabled et checked ou unchecked au moment de son initialisation, par exemple.

Le code Python suivant explique comment définir l'état enabled ou checked d'un type de complément.

class MyButton(object):
  def __init__(self):
    self.checked = False
    self.enabled = True

La propriété checked n'est disponible que pour les types de bouton. La propriété enabled est disponible pour les boutons, les outils et les zones de listes modifiables.

5/10/2014