wxColumnSorterMixin, XRC and subclass trouble

hi

print dir(self.list)
do not show any methods from wxColumnSorterMixin

I am not able to get data from self.itemDataMap
on col click! print "from wxColumnSorterMixin: ", self.itemDataMap
show nothing :((( why?

I am add data to self.itemDataMap doing: self.list.itemDataMap[x] = (rows[x][0], rows[x][1], rows[x][3], rows[x][4], rows[x][6])

But print "from App: ", self.list.itemDataMap show my data!

Using subclass at xrc I have always add module name before class name?

Thank You!

PhoneBook.py:

#!/usr/bin/env python

from wxPython.wx import *
from wxPython.xrc import *

···

#----------------------------------------------------------------------------

class wxColumnSorterMixin:
   def __init__(self):
     list = self.GetListCtrl()
     EVT_LIST_COL_CLICK(list, list.GetId(), self.OnColClick)

   def OnColClick(self, evt):
     print "from wxColumnSorterMixin: ", self.itemDataMap

#----------------------------------------------------------------------------

class EListCtrl(wxListCtrl, wxColumnSorterMixin):
   def __init__(self):
     value = wxPreListCtrl()
     self.this = value.this
     self.itemDataMap = {}
     wxColumnSorterMixin.__init__(self)

   def GetListCtrl(self): return self

class App(wxApp):
   def OnInit(self):
     self.res = wxXmlResource("PhoneBook.xrc")
     self.InitFrame()
     self.frame.Show(True)
     self.SetTopWindow(self.frame)
     self.keepGoing = True
     return True

   def InitFrame(self):
     self.frame = self.res.LoadFrame(None, "MainFrame")
     # init Button
     EVT_BUTTON(self.frame, XRCID("FindButton"), self.OnFindButton)
     # init ListCtrl
     self.list = XRCCTRL(self.frame, "ResultsListCtrl")
     self.list.InsertColumn(0, "Phone")
     self.list.InsertColumn(1, "Name")
     self.list.InsertColumn(2, "Street")
     self.list.InsertColumn(3, "House")
     self.list.InsertColumn(4, "Appartment")

   def OnFindButton(self, event):
     rows = [('a','b','c','d','e','f','g'),('b','c','d','e','f','g','h'),('c','d','e','f','g','h','i')]
     self.list.itemDataMap = {}
     for x in range(len(rows)):
       self.list.InsertStringItem(x, rows[x][0])
       self.list.SetStringItem(x, 1, rows[x][1])
       self.list.SetStringItem(x, 2, rows[x][3])
       self.list.SetStringItem(x, 3, rows[x][4])
       self.list.SetStringItem(x, 4, rows[x][6])
       self.list.SetItemData(x, x)
       self.list.itemDataMap[x] = (rows[x][0], rows[x][1], rows[x][3], rows[x][4], rows[x][6])

     print "from App: ", self.list.itemDataMap
     print dir(self.list)
    
def main():
   app = App()
   app.MainLoop()

if __name__ == "__main__":
   main()

PhoneBook.xrc:

<object class="wxListCtrl" subclass="PhoneBook.EListCtrl" name="ResultsListCtrl">
  <style>wxLC_REPORT|wxSUNKEN_BORDER</style>
</object>

--
WBR, sector119