Управление состоянием типов надстроек Python

Cвязь и координация между типами надстроек

В некоторых случаях требуется средство для установления связи между типами надстроек с тем, чтобы одна пользовательская настройка могла активировать или получать состояние от другой. Например, может потребоваться, чтобы нажатие определенной кнопки надстройки изменяло состояние надстройки инструмента на активное.

В приведенном ниже коде Python показано, как управлять связью между надстройками. В функции onClick() кнопки, для изменения ее состояния с выключенного на включенное используется идентификатор инструмента tool ID (имя переменной). Префикс пространства имен (namespace) в идентификаторе не требуется.

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) имеет префикс пространства имен (namespace) надстройки. Он нужен для предотвращения конфликтов имен в различных надстройках. Однако, при использовании идентификатора внутри скрипта снабжать его префиксом пространства имен не требуется. См. приведенный ниже пример.

В большинстве случаев состояние типа надстройки определяется расширением надстройки, в котором она обновляется и сохраняется в ответ на различные события приложения. Например, вы можете захотеть, чтобы инструмент или набор инструментов активировались, только когда документ карты находится в Виде данных.

В приведенном ниже коде Python показано, как использовать класс расширения для отключения инструмента при смене активного вида на вид компоновки. Не добавляйте префикс пространства имен (namespace).

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 типы надстроек содержат Булевы свойства типа включена и отмечена. Например, вы можете задать состояние настройки во время инициализации "включена" или "выключена" и "отмечена" или "не отмечена".

В приведенном ниже коде Python показано, как задать состояние "включена" или "выключена" типа надстройки.

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

Свойство "отмечена" доступно только для кнопочных типов надстроек. Свойство "включена" доступно для кнопок, инструментов и комбинированных окон.

5/10/2014