Как предложили @Paul & @PolyGeo, я думаю, что попытка сделать эту надстройку Python имеет больше смысла, и я буду реализовывать эту идею позже.
Тем временем я собрал код, который будет добавлять / обновлять имя оглавления определяемых пользователем слоев в MXD с количеством функций. Для моих целей я просто создал это как инструмент GP, который будет принимать отдельные слои через многозначный ввод, который принимает «Слои» в инструменте сценария. Это позволяет мне обновлять несколько слоев «по требованию», просто обновляя количество функций этих слоев, представляющих интерес.
Я не придумал, как запустить этот процесс автоматически, однако при тестировании старых MXD это может оказаться нежелательным. Если у вас много слоев с множеством функций, это может быть медленным процессом.
import arcpy
LayerInput = arcpy.GetParameterAsText(0)
mxd = arcpy.mapping.MapDocument("CURRENT")
for lyr in arcpy.mapping.ListLayers(mxd):
#Skip over group layers, as they have no values to count
if lyr.isGroupLayer:
continue
#Determine basename of the layer, without the feature count
name = str(lyr.name)
#Determine if the layer is in the user-defined list
if name not in LayerInput:
continue
#Determine if the layer name already includes a COUNT
if "[" in name and "]" in name:
lpos = name.find("[")
basename = name[:lpos-1]
else:
basename = name
print " Updating feature count in TOC name for layer: " + str(basename)
arcpy.AddMessage(" Updating feature count in TOC name for layer: " + str(basename) )
# In 10.1, you may be able to use arcpy.da.SearchCursor to increase the speed.
#http://gis.stackexchange.com/questions/30140/fastest-way-to-count-the-number-of-features-in-a-feature-class
#fcount = 0
#cursor = arcpy.SearchCursor(lyr)
#for row in cursor:
# fcount += 1
#del cursor
#Get the feature count
fcount = int(arcpy.GetCount_management(lyr).getOutput(0))
#Update the lyr.name property
lyr.name = basename + " [n=" + str(fcount) + "]"
del fcount
arcpy.RefreshTOC()
#Garbage collection
del mxd