import idaapi
import idautils
import idc

class MyChoose2(Choose2):

    def __init__(self, title):
        Choose2.__init__(self, title, [ ["Address", 10 | Choose2.CHCOL_HEX], ["Name", 30 | Choose2.CHCOL_PLAIN] ])
        self.n = 0
        self.icon = 41
        self.PopulateItems()

    def PopulateItems(self):
        self.items = [ [hex(x), GetFunctionName(x), x] for x in idautils.Functions() ]
        
    def OnClose(self):
        print "closed ", self.title

    def OnSelectLine(self, n):
        idc.Jump(self.items[n][2])

    def OnGetLine(self, n):
        return self.items[n]

    def OnGetSize(self):
        return len(self.items)

    def OnDeleteLine(self, n):
        ea = self.items[n][2]
        idc.DelFunction(ea)
        return n

    def OnRefresh(self, n):
        self.PopulateItems()
        return n

c = MyChoose2("My functions list")
c.Show()