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