import Tix, arcpy, re, sys
from Tkinter import *
L = list()
sde = "C:\Users\\coylema\\AppData\\Roaming\\ESRI\\Desktop10.0\\ArcCatalog\\Connection to winms-wooddb.sde"
fmu_field = "FMU"
fmu_idfield = "OBJECTID"
fmu = None
pu = None
fmu_lyr = sde+"\\TFM.TFM_FeatureDataset\\TFM.TFM_FMU"
pu_lyr = sde+"\\TFM.TFM_FeatureDataset\\TFM.TFM_PlanningUnit"
pu_field = "PLANNINGUNIT"
pu_idfield = "FMUOID"
arcpy.OverWriteOutput = True

print "Starting tool, please wait..."
    
class MyApp(object):
    def __init__(self, root):
        self.root = root
        self.makeCheckList()
        
        self.cl.bind("<Button-1>", self.selectItem)

        self.myContainer = Frame(root)
        self.myContainer.pack()

        self.button1 = Button(self.myContainer)
        self.button1.configure(text="Close")
        self.button1.pack(side=RIGHT)
        self.button1.bind("<Button-1>", self.button1Click)

        self.button2 = Button(self.myContainer)
        self.button2.configure(text="Export")
        self.button2.pack(side=RIGHT)
        self.button2.bind("<Button-1>", self.button2Click)

    def makeCheckList(self):
        print "Reading inputs, setting variables..."
        self.cl = Tix.CheckList(self.root, browsecmd=self.selectItem)
        self.cl.pack(side=LEFT, expand=NO, padx=0, pady=0, ipadx=5, ipady=50)

        rows = arcpy.SearchCursor(fmu_lyr, "OBJECTID < 32 AND FMU LIKE '%J'", "", "", "FMU A")
        row = rows.next()
        count = 0
        

        print "Creating list..."
        while row:
            fmu = row.getValue(fmu_field)
            fmuid = row.getValue(fmu_idfield)
            if re.match('...J',fmu) and len(fmu)==4:
                count = count+1
                self.cl.hlist.add(fmu, text=str(fmu))
                #self.cl.setstatus(fmu, "off")
                plan_unit = arcpy.SearchCursor(pu_lyr, "", "", "", "PLANNINGUNIT A")
            
                for unit in plan_unit:
                    puid = unit.getValue(pu_idfield)
                    if puid==fmuid:
                        pu = unit.getValue(pu_field)
                        if len(pu)==6:
                            self.cl.hlist.add(fmu+"."+str(pu), text=str(pu))
                            self.cl.setstatus(fmu+"."+str(pu), "off")
                self.cl.autosetmode()
            row = rows.next()

    def selectItem(self, item):
        print "Selection made"
        selection = self.cl.getstatus(item)
        if len(item[5:11])==6 and selection == "on":            
            L.append(item[5:11])
            print "Added "+item[5:11]+" to list"
        elif len(item[5:11])==6 and selection == "off":            
            L.remove(item[5:11])
            print "Removed "+item[5:11]+" from list"
            
        for obj in L:
            print obj
        
    def button1Click(self, event):
        
        self.root.destroy()
        sys.exit()
    def button2Click(self, event):
        #export
        #set = Set(L)
        #return L(set)
        
        for sel in L:
            print "Export me "+sel
            arcpy.FeatureClassToFeatureClass_conversion(pu_lyr, "C:\\GIS\\Exports\\",
                                                        str(sel), "\""+pu_field+"\" = \'"+sel+"\'")
            
            #arcpy.SelectLayerByAttribute_management(pu_lyr,"ADD_TO_SELECTION",pu_field+"="+sel)
            
        
def main():
    root = Tix.Tk()
    myapp = MyApp(root)
    root.update()
    root.mainloop()

if __name__ == '__main__':
    sys.exit(main())
