import arcpy
import pythonaddins
class TurnoutComboClass(object):
"""Implementation for Turnout_addin.combobox (ComboBox)"""
def __init__(self):
self.editable = True
self.enabled = True
self.dropdownWidth = 'WWWWWWWWWWWWWWWW'
self.width = 'WWWWWWWWWWWWWWWW'
def onSelChange(self, selection):
query = '"Station_ID" = ' + '\'' + str(selection) + '\''
arcpy.SelectLayerByAttribute_management("Turnouts", "NEW_SELECTION", query)
query = '"turnoutnumber" = ' + '\'' + str(selection) + '\''
arcpy.SelectLayerByAttribute_management("FarmFieldsE", "ADD_TO_SELECTION", query)
self.dataframe = arcpy.mapping.ListDataFrames(self.mxd, "Layers") [0]
self.dataframe.zoomToSelectedFeatures()
self.dataframe.scale = 10000
def onEditChange(self, text):
pass
def onFocus(self, focused):
# When the combo box has focus, update the combo box with the list of structure IDs.
if focused:
self.mxd = arcpy.mapping.MapDocument('current')
# Clear any previously selected layers
arcpy.SelectLayerByAttribute_management("Turnouts", "CLEAR_SELECTION")
arcpy.SelectLayerByAttribute_management("FarmFieldsE", "CLEAR_SELECTION")
# Paopulate the drop down list
layers = arcpy.mapping.ListLayers(self.mxd)
self.items = []
for layer in layers:
if layer.longName == "Turnouts":
number_records = arcpy.SearchCursor(layer)
for record_index in number_records:
self.items.append(record_index.Station_ID)
# Clean up
del record_index
del number_records
# Clean up
del layer
del layers
def onEnter(self):
query = '"Station_ID" = ' + '\'' + str(self.value) + '\''
arcpy.SelectLayerByAttribute_management("Turnouts", "NEW_SELECTION", query)
query = '"turnoutnumber" = ' + '\'' + str(self.value) + '\''
arcpy.SelectLayerByAttribute_management("FarmFieldsE", "ADD_TO_SELECTION", query)
self.dataframe = arcpy.mapping.ListDataFrames(self.mxd, "Layers") [0]
self.dataframe.zoomToSelectedFeatures()
self.dataframe.scale = 10000
def refresh(self):
pass
I have problems with addin's becoming corrupted. If I delete the addin, restart arcmap, install addin they work fine. I'm pretty bummed out about it. It's not a problem with my code.