George McCown wrote:
ok. I will attach a 2 column dbf database also. Note: if you try to
open a 2 column dbf db with over 2000 rows, the processing bogs down.
I’m sorry, this is way to long and entangled for any of us to look at,
and you depend on numerous third-party packages (pydispatch, dbfpy,
xlwt, dbf). In addition, you have THREE different messaging systems in
here (wx window messages, dispatcher signals, and Publisher
subscriptions), and I’m not going to take a guess at how they all
interact. I would not be at all surprised to learn that’s where your
difficulty lies. You don’t need both PyDispatcher and pubsub.
On an entirely separate note, this entire sequence, which occurs twice
for inexplicable reasons, can be replaced with 5 lines:
for key, data in items:
self.idx = self.lc.InsertStringItem(sys.maxint, data[0])
self.lc.SetStringItem(self.idx, 1, data[1])
if len(data) == 3:
self.lc.SetStringItem(self.idx, 2, data[2])
if len(data) == 4:
self.lc.SetStringItem(self.idx, 2, data[2])
self.lc.SetStringItem(self.idx, 3, data[3])
if len(data) == 5:
self.lc.SetStringItem(self.idx, 2, data[2])
self.lc.SetStringItem(self.idx, 3,
data[3])
self.lc.SetStringItem(self.idx, 4, data[4])
if len(data) == 6:
self.lc.SetStringItem(self.idx, 2, data[2])
self.lc.SetStringItem(self.idx, 3,
data[3])
self.lc.SetStringItem(self.idx, 4, data[4])
self.lc.SetStringItem(self.idx, 5, data[5])
if len(data) == 7:
self.lc.SetStringItem(self.idx, 2, data[2])
self.lc.SetStringItem(self.idx, 3,
data[3])
self.lc.SetStringItem(self.idx, 4, data[4])
self.lc.SetStringItem(self.idx, 5, data[5])
self.lc.SetStringItem(self.idx, 6, data[6])
if len(data) == 8:
self.lc.SetStringItem(self.idx, 2, data[2])
self.lc.SetStringItem(self.idx, 3,
data[3])
self.lc.SetStringItem(self.idx, 4, data[4])
self.lc.SetStringItem(self.idx, 5, data[5])
self.lc.SetStringItem(self.idx, 6, data[6])
self.lc.SetStringItem(self.idx, 7, data[7])
if len(data) == 9:
self.lc.SetStringItem(self.idx, 2, data[2])
self.lc.SetStringItem(self.idx, 3,
data[3])
self.lc.SetStringItem(self.idx, 4, data[4])
self.lc.SetStringItem(self.idx, 5, data[5])
self.lc.SetStringItem(self.idx, 6, data[6])
self.lc.SetStringItem(self.idx, 7, data[7])
self.lc.SetStringItem(self.idx, 8, data[8])
if len(data) == 10:
self.lc.SetStringItem(self.idx, 2, data[2])
self.lc.SetStringItem(self.idx, 3,
data[3])
self.lc.SetStringItem(self.idx, 4, data[4])
self.lc.SetStringItem(self.idx, 5, data[5])
self.lc.SetStringItem(self.idx, 6, data[6])
self.lc.SetStringItem(self.idx, 7, data[7])
self.lc.SetStringItem(self.idx, 8, data[8])
self.lc.SetStringItem(self.idx, 9, data[9])
if len(data) == 11:
self.lc.SetStringItem(self.idx, 2, data[2])
self.lc.SetStringItem(self.idx, 3,
data[3])
self.lc.SetStringItem(self.idx, 4, data[4])
self.lc.SetStringItem(self.idx, 5, data[5])
self.lc.SetStringItem(self.idx, 6, data[6])
self.lc.SetStringItem(self.idx, 7, data[7])
self.lc.SetStringItem(self.idx, 8, data[8])
self.lc.SetStringItem(self.idx, 9, data[9])
self.lc.SetStringItem(self.idx, 10, data[10])
if len(data) == 12:
self.lc.SetStringItem(self.idx, 2, data[2])
self.lc.SetStringItem(self.idx, 3,
data[3])
self.lc.SetStringItem(self.idx, 4, data[4])
self.lc.SetStringItem(self.idx, 5, data[5])
self.lc.SetStringItem(self.idx, 6, data[6])
self.lc.SetStringItem(self.idx, 7, data[7])
self.lc.SetStringItem(self.idx, 8, data[8])
self.lc.SetStringItem(self.idx, 9, data[9])
self.lc.SetStringItem(self.idx, 10, data[10])
self.lc.SetStringItem(self.idx, 11, data[11])
if len(data) == 13:
self.lc.SetStringItem(self.idx, 2, data[2])
self.lc.SetStringItem(self.idx, 3,
data[3])
self.lc.SetStringItem(self.idx, 4, data[4])
self.lc.SetStringItem(self.idx, 5, data[5])
self.lc.SetStringItem(self.idx, 6, data[6])
self.lc.SetStringItem(self.idx, 7, data[7])
self.lc.SetStringItem(self.idx, 8, data[8])
self.lc.SetStringItem(self.idx, 9, data[9])
self.lc.SetStringItem(self.idx, 10, data[10])
self.lc.SetStringItem(self.idx, 11, data[11])
self.lc.SetStringItem(self.idx, 12, data[12])
if len(data) == 14:
self.lc.SetStringItem(self.idx, 2, data[2])
self.lc.SetStringItem(self.idx, 3,
data[3])
self.lc.SetStringItem(self.idx, 4, data[4])
self.lc.SetStringItem(self.idx, 5, data[5])
self.lc.SetStringItem(self.idx, 6, data[6])
self.lc.SetStringItem(self.idx, 7, data[7])
self.lc.SetStringItem(self.idx, 8, data[8])
self.lc.SetStringItem(self.idx, 9, data[9])
self.lc.SetStringItem(self.idx, 10, data[10])
self.lc.SetStringItem(self.idx, 11, data[11])
self.lc.SetStringItem(self.idx, 12, data[12])
self.lc.SetStringItem(self.idx, 13, data[13])
if len(data) == 15:
self.lc.SetStringItem(self.idx, 2, data[2])
self.lc.SetStringItem(self.idx, 3,
data[3])
self.lc.SetStringItem(self.idx, 4, data[4])
self.lc.SetStringItem(self.idx, 5, data[5])
self.lc.SetStringItem(self.idx, 6, data[6])
self.lc.SetStringItem(self.idx, 7, data[7])
self.lc.SetStringItem(self.idx, 8, data[8])
self.lc.SetStringItem(self.idx, 9, data[9])
self.lc.SetStringItem(self.idx, 10, data[10])
self.lc.SetStringItem(self.idx, 11, data[11])
self.lc.SetStringItem(self.idx, 12, data[12])
self.lc.SetStringItem(self.idx, 13, data[13])
self.lc.SetStringItem(self.idx, 14,
data[14])
That can be replaced by this:
for key, data in items:
idx = self.lc.InsertStringItem(sys.maxint, data[0])
for i, item in enumerate(data[1:]):
self.lc.SetStringItem(idx, i+1, item)
self.lc.SetItemData(idx, key)
–
Tim Roberts, ti...@probo.com
Providenza & Boekelheide, Inc.