<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Custom Search tool with Python Add-Ins in Python Questions</title>
    <link>https://community.esri.com/t5/python-questions/custom-search-tool-with-python-add-ins/m-p/159485#M12212</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;ArcScripts 2.0 (as it is currently being called) will surface sometime in the near-ish future, in the interim GitHub seems to be the place&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Fri, 15 Aug 2014 19:01:01 GMT</pubDate>
    <dc:creator>DanPatterson_Retired</dc:creator>
    <dc:date>2014-08-15T19:01:01Z</dc:date>
    <item>
      <title>Custom Search tool with Python Add-Ins</title>
      <link>https://community.esri.com/t5/python-questions/custom-search-tool-with-python-add-ins/m-p/159483#M12210</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;I have a search toolbar created in a different "GIS" software which runs via straight SQL. I am re-creating this tool in ArcGIS Desktop 10.2 with Python Add-Ins. The toolbar contains a toolpalette with 14 different buttons representing different layers to search.&amp;nbsp; The toolbar also has 2 comboboxes. 8 of these layers only need a single combobox to search. The other 6 layers require the use of 2 comboxes where the selection in combobox1 determines what's in the pick list in combobox2 and the 2 selections form the query. Most of these are dual combobox querys perform on several fields for value in combobox1 and several fields in combobox2.&amp;nbsp; I have the 8 layers working fine with the single combobox searches. Right now I am working on the Handhole (HH) search.&amp;nbsp; It populates the first combobox with a list of values from 3 different fields. Once I select that, its supposed to populate the second combobox with only those values in any of another 3 fields that have the first combobox value in any one of the first 3 fields. To make things simpler, here is the SQL from my other "GIS" software that's used for the Hanhole search:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;PRE class="plain" name="code"&gt;
SET_VARIABLE vROUTE {route: = select Route1 from Handholes where Route1 is not null union select Route2 from Handholes where Route2 is not null union select Route3 from Handholes where Route3 is not null}

SET_VARIABLE vHANDHOLE {handhole: = select HandholeID1 from Handholes where HandholeID1 is not null and Route1 = '{vROUTE}' union select HandholeID2 from Handholes where HandholeID2 is not null and Route2 = '{vROUTE}' union select HandholeID3 from Handholes where HandholeID3 is not null and Route3 = '{vROUTE}'}

FIND_SQL select * from Handholes where (Route1 = '{vROUTE}' and HandholeID1 = '{vHANDHOLE}') or (Route2 = '{vROUTE}' and HandholeID2 = '{vHANDHOLE}') or (Route3 = '{vROUTE}' and HandholeID3 = '{vHANDHOLE}')
&lt;/PRE&gt;&lt;DIV style="display:none;"&gt; &lt;/DIV&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Now here is the big code block of my Python Add-In.&amp;nbsp; I am focusing on the Handholes now.&amp;nbsp; I've eliminated the code for the tools that haven't been worked on yet because I am running out of space for this post:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="plain" name="code"&gt;
import os, pythonaddins, sys, arcpy
from arcpy import env

env.workspace = r"Database Connections\prod_GilaRiver.sde"
srchConn = env.workspace + "\GilaRiver.dbo."
mxd = arcpy.mapping.MapDocument("CURRENT")

def ClrLists():
&amp;nbsp;&amp;nbsp;&amp;nbsp; cboGotoList2.items = []
&amp;nbsp;&amp;nbsp;&amp;nbsp; cboGotoList2.value = ""
&amp;nbsp;&amp;nbsp;&amp;nbsp; cboGotoList2.refresh()
&amp;nbsp;&amp;nbsp;&amp;nbsp; cboGotoList2.enabled = False
&amp;nbsp;&amp;nbsp;&amp;nbsp; cboGotoList1.items = []
&amp;nbsp;&amp;nbsp;&amp;nbsp; cboGotoList1.value = ""
&amp;nbsp;&amp;nbsp;&amp;nbsp; cboGotoList1.refresh()

def PopulateCombobox1(layer,fields):
&amp;nbsp;&amp;nbsp;&amp;nbsp; global srchLyr
&amp;nbsp;&amp;nbsp;&amp;nbsp; global srchFlds1
&amp;nbsp;&amp;nbsp;&amp;nbsp; srchLyr = layer
&amp;nbsp;&amp;nbsp;&amp;nbsp; srchFlds1 = fields
&amp;nbsp;&amp;nbsp;&amp;nbsp; print "*** def PopulateCombobox1"
&amp;nbsp;&amp;nbsp;&amp;nbsp; print "srchLyr = " + srchLyr + ", srchFlds1 = " + str(srchFlds1)
&amp;nbsp;&amp;nbsp;&amp;nbsp; ClrLists()
&amp;nbsp;&amp;nbsp;&amp;nbsp; values = []
&amp;nbsp;&amp;nbsp;&amp;nbsp; for field in srchFlds1:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print "field: " + field
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; values = values + [row[0] for row in arcpy.da.SearchCursor(srchConn + srchLyr, (field))]
&amp;nbsp;&amp;nbsp;&amp;nbsp; uniqueValues = sorted(set(values))
&amp;nbsp;&amp;nbsp;&amp;nbsp; for uniqueValue in uniqueValues:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if uniqueValue is not None and uniqueValue != "":
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cboGotoList1.items.append(uniqueValue)
&amp;nbsp;&amp;nbsp;&amp;nbsp; cboGotoList1.enabled = True
 
def PopulateCombobox2():
&amp;nbsp;&amp;nbsp;&amp;nbsp; print "*** def PoplateCombobox2"
&amp;nbsp;&amp;nbsp;&amp;nbsp; print "srchLyr = " + srchLyr + ", srchFlds2 = " + str(srchFlds2)
&amp;nbsp;&amp;nbsp;&amp;nbsp; cboGotoList2.items = []
&amp;nbsp;&amp;nbsp;&amp;nbsp; cboGotoList2.value = ""
&amp;nbsp;&amp;nbsp;&amp;nbsp; cboGotoList2.refresh()
&amp;nbsp;&amp;nbsp;&amp;nbsp; values = []
&amp;nbsp;&amp;nbsp;&amp;nbsp; for field in srchFlds2:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print "field: " + field
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; values = values + [row[0] for row in arcpy.da.SearchCursor(srchConn + srchLyr, (field))]
&amp;nbsp;&amp;nbsp;&amp;nbsp; uniqueValues = sorted(set(values))
&amp;nbsp;&amp;nbsp;&amp;nbsp; for uniqueValue in uniqueValues:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if uniqueValue is not None and uniqueValue != "":
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cboGotoList2.items.append(uniqueValue)
&amp;nbsp;&amp;nbsp;&amp;nbsp; cboGotoList2.enabled = True
 
def ZoomToFeature():
&amp;nbsp;&amp;nbsp;&amp;nbsp; print "*** def ZoomToFeature"
&amp;nbsp;&amp;nbsp;&amp;nbsp; print "srchVal1: " + str(srchVal1) + ", srchFlds1: " + str(srchFlds1) + ", srchFlds2: " + str(srchFlds2)
&amp;nbsp;&amp;nbsp;&amp;nbsp; df = arcpy.mapping.ListDataFrames(mxd, mxd.activeDataFrame.name)[0]
&amp;nbsp;&amp;nbsp;&amp;nbsp; dfLyr = arcpy.mapping.ListLayers(mxd, srchLyr, df)[0]
&amp;nbsp;&amp;nbsp;&amp;nbsp; expr1 = ""
&amp;nbsp;&amp;nbsp;&amp;nbsp; print "len(srchFlds1): " + str(len(srchFlds1))
&amp;nbsp;&amp;nbsp;&amp;nbsp; for idx, field in enumerate(srchFlds1):
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; expr1 = expr1 + str(field) + " = '" + str(srchVal1) + "'"
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print "expr1(initial): " + expr1
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print "idx: " + str(idx)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if len(srchFlds1) &amp;gt; 1 and idx &amp;lt; (len(srchFlds1) - 1):
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; expr1 = " or " + expr1
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print "expr1(final): " + expr1
&amp;nbsp;&amp;nbsp;&amp;nbsp; if len(srchFlds2) == 0:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; arcpy.SelectLayerByAttribute_management(srchLyr,"NEW_SELECTION",expr1)
&amp;nbsp;&amp;nbsp;&amp;nbsp; else:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; arcpy.SelectLayerByAttribute_management(srchLyr,"NEW_SELECTION",str(srchFlds1) + " = '" + str(srchVal1) + "' and " + str(srchFlds2) + " = '" + str(srchVal2) + "'")
&amp;nbsp;&amp;nbsp;&amp;nbsp; df.extent = dfLyr.getSelectedExtent(False)
&amp;nbsp;&amp;nbsp;&amp;nbsp; if srchLyr == "zEXCHANGE":
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; df.scale = df.scale * 1.05
&amp;nbsp;&amp;nbsp;&amp;nbsp; else:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; df.scale = 600
&amp;nbsp;&amp;nbsp;&amp;nbsp; arcpy.SelectLayerByAttribute_management(srchLyr,"CLEAR_SELECTION")
&amp;nbsp; 
class GotoSubscriberE911(object):
&amp;nbsp;&amp;nbsp;&amp;nbsp; # implementation for GRTISearch_addin.btnGotoSubscriberE911 (Button)"""
&amp;nbsp;&amp;nbsp;&amp;nbsp; def __init__(self):
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; self.enabled = True
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; self.checked = False
&amp;nbsp;&amp;nbsp;&amp;nbsp; def onClick(self):
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; global srchFlds2
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; srchFlds2 = []
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if arcpy.Exists("zSUBSCRIBER") == True:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PopulateCombobox1("zSUBSCRIBER",["E911ID"])
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pythonaddins.MessageBox("Please add layer to use tool", "Missing Layer")

class GotoSubscriberAddress(object):
&amp;nbsp;&amp;nbsp;&amp;nbsp; # implementation for GRTISearch_addin.btnGotoSubscriberAddress (Button)"""
&amp;nbsp;&amp;nbsp;&amp;nbsp; def __init__(self):
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; self.enabled = True
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; self.checked = False
&amp;nbsp;&amp;nbsp;&amp;nbsp; def onClick(self):
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; global srchFlds2
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; srchFlds2 = []
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if arcpy.Exists("zSUBSCRIBER") == True:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PopulateCombobox1("zSUBSCRIBER",["Address"])
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pythonaddins.MessageBox("Please add layer to use tool", "Missing Layer")
&amp;nbsp;&amp;nbsp; 
class GotoCentralOffice(object):
&amp;nbsp;&amp;nbsp;&amp;nbsp; # implementation for GRTISearch_addin.btnGotoCentralOffice (Button)"""
&amp;nbsp;&amp;nbsp;&amp;nbsp; def __init__(self):
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; self.enabled = True
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; self.checked = False
&amp;nbsp;&amp;nbsp;&amp;nbsp; def onClick(self):
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; global srchFlds2
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; srchFlds2 = []
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if arcpy.Exists("zCENTRALOFFICE") == True:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PopulateCombobox1("zCENTRALOFFICE",["Name"])
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pythonaddins.MessageBox("Please add layer to use tool", "Missing Layer")

class GotoDLC(object):
&amp;nbsp;&amp;nbsp;&amp;nbsp; # implementation for GRTISearch_addin.btnGotoDLC (Button)"""
&amp;nbsp;&amp;nbsp;&amp;nbsp; def __init__(self):
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; self.enabled = True
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; self.checked = False
&amp;nbsp;&amp;nbsp;&amp;nbsp; def onClick(self):
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; global srchFlds2
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; srchFlds2 = []
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if arcpy.Exists("zDLC") == True:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PopulateCombobox1("zDLC",["Name"])
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pythonaddins.MessageBox("Please add layer to use tool", "Missing Layer")

class GotoExchange(object):
&amp;nbsp;&amp;nbsp;&amp;nbsp; # implementation for GRTISearch_addin.btnGotoExchange (Button)"""
&amp;nbsp;&amp;nbsp;&amp;nbsp; def __init__(self):
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; self.enabled = True
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; self.checked = False
&amp;nbsp;&amp;nbsp;&amp;nbsp; def onClick(self):
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; global srchFlds2
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; srchFlds2 = []
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if arcpy.Exists("zEXCHANGE") == True:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PopulateCombobox1("zEXCHANGE",["Exchange"])
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pythonaddins.MessageBox("Please add layer to use tool", "Missing Layer")

class GotoHandhole(object):
&amp;nbsp;&amp;nbsp;&amp;nbsp; # implementation for GRTISearch_addin.btnGotoHandhole (Button)"""
&amp;nbsp;&amp;nbsp;&amp;nbsp; def __init__(self):
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; self.enabled = True
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; self.checked = False
&amp;nbsp;&amp;nbsp;&amp;nbsp; def onClick(self):
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; global srchFlds2
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; srchFlds2 = ["HandholeID1","HandholeID2","HandholeID3"]
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if arcpy.Exists("zHANDHOLE") == True:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PopulateCombobox1("zHANDHOLE",["Route1","Route2","Route3"])
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pythonaddins.MessageBox("Please add layer to use tool", "Missing Layer")

class GotoList1(object):
&amp;nbsp;&amp;nbsp;&amp;nbsp; # implementation for GRTISearch_addin.cboGotoList1 (ComboBox)"""
&amp;nbsp;&amp;nbsp;&amp;nbsp; def __init__(self):
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; self.items = []
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; self.editable = True
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; self.enabled = False
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; self.dropdownWidth = 'WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW'
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; self.width = 'WWWWWWWW'
&amp;nbsp;&amp;nbsp;&amp;nbsp; def onSelChange(self, selection):
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; global srchVal1
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; srchVal1 = selection
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print "*** class cboGotoList1"
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print "srchVal1: " + str(srchVal1) + ", srchFlds1: " + str(srchFlds1) + ", srchFlds2: " + str(srchFlds2)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if len(srchFlds2) == 0:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ZoomToFeature()
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PopulateCombobox2()
&amp;nbsp;&amp;nbsp;&amp;nbsp; def onEditChange(self, text):
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pass
&amp;nbsp;&amp;nbsp;&amp;nbsp; def onFocus(self, focused):
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pass
&amp;nbsp;&amp;nbsp;&amp;nbsp; def onEnter(self):
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; global srchVal1
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; srchVal1 = cboGotoList1.value
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print "*** class cboGotoList1"
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print "srchVal1: " + str(srchVal1) + ", srchFlds1: " + str(srchFlds1) + ", srchFlds2: " + str(srchFlds2)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if srchVal1 != "None":
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if len(srchFlds2) == 0:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ZoomToFeature()
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PopulateCombobox2()
&amp;nbsp;&amp;nbsp;&amp;nbsp; def refresh(self):
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pass

class GotoList2(object):
&amp;nbsp;&amp;nbsp;&amp;nbsp; # implementation for GRTISearch_addin.cboGotoList2 (ComboBox)"""
&amp;nbsp;&amp;nbsp;&amp;nbsp; def __init__(self):
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; self.items = []
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; self.editable = True
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; self.enabled = False
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; self.dropdownWidth = 'WWWWWWWWWWWWWWWW'
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; self.width = 'WWWWWWWW'
&amp;nbsp;&amp;nbsp;&amp;nbsp; def onSelChange(self, selection):
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; srchVal2 = selection
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print "*** class cboGotoList2"
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print "srchVal2: " + str(srchVal2) + ", srchFlds2: " + srchFlds2
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ZoomToFeature()
&amp;nbsp;&amp;nbsp;&amp;nbsp; def onEditChange(self, text):
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pass
&amp;nbsp;&amp;nbsp;&amp;nbsp; def onFocus(self, focused):
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pass
&amp;nbsp;&amp;nbsp;&amp;nbsp; def onEnter(self):
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pass
&amp;nbsp;&amp;nbsp;&amp;nbsp; def refresh(self):
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pass
&lt;/PRE&gt;&lt;DIV style="display:none;"&gt; &lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 27 May 2014 20:01:13 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/custom-search-tool-with-python-add-ins/m-p/159483#M12210</guid>
      <dc:creator>PaulScipione1</dc:creator>
      <dc:date>2014-05-27T20:01:13Z</dc:date>
    </item>
    <item>
      <title>Re: Custom Search tool with Python Add-Ins</title>
      <link>https://community.esri.com/t5/python-questions/custom-search-tool-with-python-add-ins/m-p/159484#M12211</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I finally figured out the solution.&amp;nbsp; Got it to work.&amp;nbsp; I have layers that can be searched by a value in one field, and others by two fields, with the second value being filtered by what's selected in the first one.&amp;nbsp; Each time a layer is selected to query the pick lists populate/de-populate and enable/disable as needed.&amp;nbsp; But I haven't figured out how to share my Python add-in here.&amp;nbsp; Is there a different place than GeoNet to share code?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 15 Aug 2014 18:13:03 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/custom-search-tool-with-python-add-ins/m-p/159484#M12211</guid>
      <dc:creator>PaulScipione1</dc:creator>
      <dc:date>2014-08-15T18:13:03Z</dc:date>
    </item>
    <item>
      <title>Re: Custom Search tool with Python Add-Ins</title>
      <link>https://community.esri.com/t5/python-questions/custom-search-tool-with-python-add-ins/m-p/159485#M12212</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;ArcScripts 2.0 (as it is currently being called) will surface sometime in the near-ish future, in the interim GitHub seems to be the place&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 15 Aug 2014 19:01:01 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/custom-search-tool-with-python-add-ins/m-p/159485#M12212</guid>
      <dc:creator>DanPatterson_Retired</dc:creator>
      <dc:date>2014-08-15T19:01:01Z</dc:date>
    </item>
    <item>
      <title>Re: Custom Search tool with Python Add-Ins</title>
      <link>https://community.esri.com/t5/python-questions/custom-search-tool-with-python-add-ins/m-p/159486#M12213</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I couldn't figure out how to add the solution files here so I created a new post here &lt;A _jive_internal="true" href="https://community.esri.com/docs/DOC-2253"&gt;Python add-in Custom Search toolbar&lt;/A&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 11 Sep 2014 17:55:27 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/custom-search-tool-with-python-add-ins/m-p/159486#M12213</guid>
      <dc:creator>PaulScipione1</dc:creator>
      <dc:date>2014-09-11T17:55:27Z</dc:date>
    </item>
  </channel>
</rss>

