Python アドイン タイプのステートの管理

アドイン タイプ間の通信と調整

場合によって、1 つのカスタマイズが起動したり他のカスタマイズのステートを取得したりするために、アドイン タイプ間での通信手段が必要になります。たとえば、特定のアドイン ボタンをクリックすると、ツールのアドインのステートが無効から有効に変更される場合があります。

以下の Python コードは、アドインの通信の管理方法を示しています。ボタンの onClick() 関数でツールの ID(変数名)を使用して、ステートを無効から有効に変更します。ID の一部として名前空間の接頭辞を指定する必要はありません。

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

ツールの [ID](変数名)は、アドイン タイプの作成時に Python アドイン ウィザードを使用して指定され、config.xml ファイルに保存されます。[ID] にはアドインの名前空間の接頭辞を指定します。これは、アドイン間で名前が競合するのを防ぐためです。ただし、スクリプト内で使用する場合は、ID に名前空間の接頭辞を指定する必要はありません。次の例をご参照ください。

ほとんどの場合、アドイン タイプのステートはアドインのエクステンションによって管理されます。アドイン タイプのステートは、さまざまなアプリケーション イベントに応じてここで更新および保存されます。たとえば、マップ ドキュメントがデータ ビューにある場合にのみ、ツールまたはツール セットを有効にする場合があります。

以下の Python コードは、アクティブ ビューがレイアウト ビューに変更される際に、エクステンション クラスを使用してツールを無効にする方法を示しています。名前空間の接頭辞を含めないでください。

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

有効なプロパティとオンになっているプロパティ

アドイン タイプ(ボタン、ツール、コンボ ボックス)は、有効なステートとオンになっているステートを更新するために定期的に確認されます。Python では、アドイン タイプに enabledchecked のブール値プロパティが含まれます。たとえば、初期化のときに、アドインの有効または無効の設定およびオンまたはオフの設定を行うことができます。

以下の Python コードは、アドイン タイプの有効またはオンのステートを設定する方法を示しています。

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

checked プロパティは、ボタン タイプにのみ使用できます。enabled プロパティは、ボタン、ツール、およびコンボ ボックスに使用できます。

5/10/2014