Création d'une zone de liste modifiable de complément Python

Création d'une zone de liste modifiable de complément

Une zone de liste modifiable contient un champ modifiable et une liste déroulante. L'utilisateur peut sélectionner une valeur dans la liste déroulante qui apparaît à la demande de l'utilisateur. Si la zone de liste est modifiable, elle inclut un champ modifiable dans lequel l'utilisateur peut saisir une valeur. La zone de liste modifiable d'échelle d'ArcMap est un bon exemple de zone de liste modifiable. Lorsque des données possédant un système de coordonnées connu sont ajoutées à ArcMap, la zone de liste modifiable d'échelle est activée, pour vous fournir un ensemble d'échelles prédéfinies à partir desquelles il peut faire son choix. Elle vous permet aussi de saisir une échelle voulue ne figurant pas dans la liste des options, et la carte s'affiche en fonction de la valeur ajoutée.

Cette rubrique vous guide dans le processus de création d'une zone de liste modifiable sur une nouvelle barre d'outils à l'aide de l'assistant de complément Python. Avant de commencer ce workflow, vérifiez que vous avez créé un projet de complément ArcMap et spécifié des paramètres de projet. Pour plus d'informations, reportez-vous à la rubrique Création d'un projet de complément. Ce workflow explique comment créer une zone de liste modifiable pour ArcMap, mais vous pouvez utiliser cette procédure pour ajouter une zone de liste modifiable à toute application ArcGIS for Desktop. Cette rubrique présente la procédure de création d'une zone de liste modifiable avec la liste des couches de la table des matières. La sélection d'une couche crée un quadrillage couvrant la vue générale de la couche. La classe Python créée par l'assistant de complément sera ensuite examinée afin d'étudier les propriétés et méthodes qui fournissent des fonctionnalités à votre zone de liste modifiable.

La création d'une zone de liste modifiable de complément est un processus impliquant les étapes suivantes :

Etapes :
  1. Création d'une barre d'outils.

    Après avoir saisi les paramètres du projet requis, cliquez sur l'onglet Contenu des compléments et commencez à déclarer vos personnalisations de complément. Une zone de liste modifiable peut se trouver sur une barre d'outils, mais pas dans un menu. Reportez-vous à la rubrique Création d'une barre d'outils de complément pour connaître la procédure de création d'une barre d'outils.

  2. Créez la zone de liste modifiable.

    Une fois que vous avez saisi les propriétés de la barre d'outils, vous pouvez créer une zone de liste modifiable. Cliquez avec le bouton droit sur une nouvelle barre d'outils et sélectionnez Nouvelle zone de liste modifiable.

    Définition des propriétés de la zone de liste modifiable dans l'assistant de complément

    Une zone de liste modifiable possède un certain nombre de propriétés que vous devez définir. Ces propriétés sont enregistrées dans le fichier config.xml du projet. La liste ci-dessous répertorie toutes les propriétés et en donne une explication.

    Propriété

    Description

    Caption (requise)

    Définit la légende de la zone de liste modifiable. L'illustration suivante présente la légende utilisée dans le Gestionnaire de compléments ArcGIS pour identifier les différents types de personnalisations disponibles (le type du complément est identifié entre parenthèses) :

    Propriétés de la zone de liste modifiable présentées dans le Gestionnaire de compléments

    Class (requise)

    La classe Python est l'endroit où vous écrivez la logique métier de la zone de liste modifiable. Cette classe est importante car elle est exécutée à chaque fois que la zone de liste modifiable est mise à jour ou que la sélection change. Utilisez la convention d'attribution de noms Python lorsque vous construisez la classe. Les classes Python utilisent la notation avec majuscules. Dans cet exemple nous allons créer une classe nommée "LayersComboBox".

    ID (requise)

    Nom unique permettant d'identifier la zone de liste modifiable. Vous pouvez créer plusieurs zones de liste modifiables pour un projet donné ; cet ID permet de distinguer les différentes zones de liste modifiables. Dans l'idéal, vous devriez remplacer l'ID par défaut par une valeur plus explicite. Cet ID ne doit pas contenir d'espace. Vous pouvez utiliser des traits de soulignement pour lier les mots. N'utilisez pas de mots-clés Python. Consultez la documentation Python pour connaître les mots réservés.

    Tooltip (facultative)

    Brève description qui s'affiche lorsque le pointeur de la souris s'immobilise au-dessus de la zone de liste modifiable dans une application bureautique.

    Message (facultative)

    Description détaillée de ce que fait la zone de liste modifiable. Le message apparaît sous l'info-bulle lorsque le pointeur de la souris s'immobilise sur la zone de liste modifiable.

    Texte de suggestion (facultatif)

    Texte qui apparaît dans la zone de liste modifiable lorsqu'elle n'est pas active dans l'application bureautique. Ce texte permet d'informer l'utilisateur sur les types d'éléments qu'il sélectionne ou sur le genre d'éléments qu'il doit sélectionner dans la zone de liste modifiable.

    La dernière section de la zone de liste modifiable est constituée de l'en-tête et du contenu de l'Aide. Ces propriétés vous permettent de fournir des informations qui seront utilisées lorsqu'un utilisateur appellera l'aide contextuelle. Ce sont des rubriques qui restent visibles à l'écran jusqu'à ce que l'utilisateur clique ailleurs.

    Les propriétés suivantes comprennent cette section d'Aide contextuelle :

    Propriété

    Description

    Heading (facultative)

    Indique la nature du contenu de l'aide.

    Content (facultative)

    Contenu de l'Aide pour la zone de liste modifiable.

    Lorsque vous avez terminé de saisir les propriétés, vous pouvez cliquer sur le bouton Enregistrer dans le bas de l'Assistant. Cela a pour effet de créer tous les fichiers et dossiers nécessaires dans le dossier de travail.

  3. Modification du script Python.

    À ce stade vous avez terminé d'ajouter les valeurs pour les propriétés nécessaires pour définir la zone de liste modifiable de complément. L'étape suivante de ce workflow consiste à modifier le script Python et à mettre à jour la classe Python de manière à inclure les fonctionnalités de création d'un quadrillage de polygones. La zone de liste modifiable est renseignée avec la liste des couches disponible dans le bloc de données actif. Lorsqu'une couche est sélectionnée à partir de la zone de liste modifiable, un quadrillage est créé à l'aide de l'étendue de la couche avec une taille définie sur 10 rangées par 10 colonnes. Pour ajouter des fonctionnalités à la zone de liste modifiable, procédez de la manière suivante :

    1. Modifiez le script Python dans le dossier Install contenu dans le dossier de travail que vous avez créé grâce à l'Assistant.

      Une classe portant le nom que vous avez saisi dans l'Assistant existe. Ne la renommez pas, car son nom est référencé dans le fichier config.xml. La classe se compose de plusieurs fonctions et propriétés, qui sont décrites dans la rubrique Classe Zone de liste modifiable.

    2. Mettez à jour les fonctions comme illustré ci-dessous :

      Ce code fournit les fonctionnalités requises pour créer un quadrillage de polygones doté de 10 rangées et de 10 colonnes à l'aide de l'étendue de la couche sélectionnée à partir de la zone de liste modifiable.

      # Business logic to implement the ComboBox
      def __init__(self):
              self.editable = True
              self.enabled = True
      
      def onSelChange(self, selection):
      
      	# When a new layer is selected, create a new fishnet using the extent of layer.
      	layer = arcpy.mapping.ListLayers(self.mxd, selection)[0]
      	desc = arcpy.Describe(layer.dataSource)
      	extent = desc.Extent
      	fishnet = arcpy.CreateFishnet_management(r'in_memory\fishnet',
      	                '%f %f' %(extent.XMin, extent.YMin),
      	                '%f %f' %(extent.XMin, extent.YMax),
      	                0, 0, 10, 10,
      	                '%f %f' %(extent.XMax, extent.YMax),
      	                'NO_LABELS',
      	                '%f %f %f %f' %(extent.XMin, extent.YMin, extent.XMax, extent.YMax), 'POLYGON')
      	arcpy.RefreshActiveView()
      
      def onFocus(self, focused):
      
        # When the combo box has focus, update the combo box with the list of layer names.
      	if focused:
      		self.mxd = arcpy.mapping.MapDocument('current')
      		layers = arcpy.mapping.ListLayers(self.mxd)
      		self.items = []
      		for layer in layers:
      			self.items.append(layer.name)
      
    3. Enregistrez le script.
  4. Test de la zone de liste modifiable.

    Une fois que la zone de liste modifiable est créée et que le code est ajouté, il est important de créer le fichier de complément et de le tester avant de le partager. La procédure correspondante est indiquée à la rubrique Test d'un complément.

  5. Partage du complément.

    Après avoir testé la zone de liste modifiable et confirmé qu'elle fonctionne comme prévu, vous êtes prêt à déployer et partager le complément. Pour plus d'informations, reportez-vous à la rubrique Partage des compléments.

Thèmes connexes

9/12/2013