Verwalten des Status von Python-Add-In-Typen

Kommunikation und Koordination zwischen Add-In-Typen

In manchen Fällen wird ein Kommunikationsmittel zwischen Add-In-Typen benötigt, um mit einer Anpassung den Status eines anderen aktivieren oder abrufen zu können. Beispielsweise kann beim Klicken auf eine bestimmte Add-In-Schaltfläche der Add-In-Status eines Werkzeugs von "disabled" in "enabled" geändert werden.

Im folgenden Python-Code wird das Verwalten der Add-In-Kommunikation veranschaulicht. In der onClick()-Funktion der Schaltfläche wird die Werkzeug-ID (der Variablenname) verwendet, um den Status von "disabled" in "enabled" zu ändern. Sie müssen das Namespace-Präfix nicht als Teil der ID angeben.

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

Die ID (der Variablenname) des Werkzeugs wird beim Erstellen des Add-In-Typs mit dem Python Add-In-Assistenten angegeben und in der Datei config.xml gespeichert. Der ID ist der Namespace des Add-Ins vorangestellt. Somit werden Namenskonflikte zwischen Add-Ins vermieden. Im Skript müssen Sie der ID den Namespace jedoch nicht voranstellen. Siehe folgendes Beispiel.

In den meisten Fällen wird der Status des Add-In-Typs über die Erweiterung des Add-Ins verwaltet. Darin kann er aktualisiert und bei verschiedenen Anwendungsereignissen gespeichert werden. Möglicherweise möchten Sie ein Werkzeug oder eine Gruppe von Werkzeugen aktivieren, wenn sich ein Kartendokument in der Datenansicht befindet.

Der folgende Python-Code veranschaulicht die Verwendung einer Erweiterungsklasse zum Deaktivieren des Werkzeugs, wenn als aktive Ansicht die Layout-Ansicht gewählt wird. Geben Sie den Namespace-Präfix nicht an.

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

Eigenschaften "enabled" und "checked"

Add-In-Typen wie Schaltflächen, Werkzeuge und Kombinationsfelder werden regelmäßig aufgefordert, ihre enabled- und checked-Status zu aktualisieren. In Python enthalten Add-In-Typen boolesche Eigenschaften für enabled und checked. Beispielsweise können Sie das Add-In bei der Initialisierung als "enabled" oder als "disabled" und "checked" oder als "unchecked" festlegen.

Mit dem folgenden Python-Code wird veranschaulicht, wie der enabled- oder checked-Status eines Add-In-Typs festgelegt wird.

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

Die Eigenschaft checked ist nur für Schaltflächentypen verfügbar. Die Eigenschaft enabled ist für Schaltflächen, Werkzeuge und Kombinationsfelder verfügbar.

9/11/2013