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.