--- nfo/projects/netfraggle/bin/FraggleListFrame.py 2004/08/31 02:21:04 1.1 +++ nfo/projects/netfraggle/bin/FraggleListFrame.py 2004/09/17 09:44:50 1.4 @@ -2,6 +2,7 @@ from wxPython.wx import * from wxPython.stc import * +import FraggleItemFrame def create(parent): return FraggleListFrame(parent) @@ -32,8 +33,10 @@ self.listViewMain = wxListView(id=wxID_FRAGGLELISTFRAMELISTVIEWMAIN, name=u'listViewMain', parent=self.panel1, pos=wxPoint(8, 40), size=wxSize(376, 168), style=wxLC_REPORT) + EVT_LEFT_DCLICK(self.listViewMain, self.OnListViewMainLeftDclick) def __init__(self, parent): + self.parent = parent self._init_ctrls(parent) # get engine-instance (singleton) import __main__ @@ -43,43 +46,106 @@ def OnButtoncloseButton(self, event): self.Destroy() event.Skip() - - def load_content(self): - topicid = int(self.GetName()) - topicdata = self.engine.query_remote(topicid) - - if topicdata: + + def load_content(self,contentkey): + self.payload = self.engine.listItems(contentkey) + self.columns = self.payload['2'] + if self.payload: + load3 = self.columns + colid = 0 + for i in load3: + self.listViewMain.InsertColumn( + col=colid, + format=wxLIST_FORMAT_LEFT, + heading=load3[i], + width=-1 + ) + colid += 1 + #print self.payload + + entries = self.payload['1'] - # 1. generate columns - row0 = topicdata[0] - colid = 0 - for column in row0.keys(): - self.listViewMain.InsertColumn( - col=colid, - format=wxLIST_FORMAT_LEFT, - heading=column, - width=-1 - ) - colid += 1 - - # 2. fill entries itemid = 0 - for entry in topicdata: - self.listViewMain.InsertStringItem(itemid, entry.keys()[0]) + + columnlist = self.columns + + for entry in entries: colid = 0 - columnlist = entry.keys() - columnlist.pop() + #print columnlist + #columnlist.pop() for column in columnlist: - #print column - #item = wxListItem() - #item.SetText(entry[column]) - #item.SetId(itemid) - #item.SetColumn(colid) - - #item.se - #self.listViewTopics.SetItem(item) - #self.listViewTopics.InsertItem(item) - self.listViewMain.SetStringItem(itemid, colid, entry[column]) + if column == '1' and entries[entry][column] == '1': + self.listViewMain.InsertStringItem(itemid, 'English') + elif column == '1' and entries[entry][column] == '2': + self.listViewMain.InsertStringItem(itemid, 'Deutsch') + #print entries[entry][column] + #print "column: "+column + if column != '1': + self.listViewMain.SetStringItem(itemid, colid, entries[entry][column]) + print "colid: "+str(colid) colid += 1 + + #set custom data + self.listViewMain.SetItemData(itemid, itemid) itemid += 1 + + + #def load_content(self): + # self.topicid = int(self.GetName()) + # self.topicmeta = self.engine.getTopicById(self.topicid) + # self.payload = self.engine.query_remote(self.topicmeta) + + # if self.payload: + + # 1. generate columns + # row0 = self.payload[0] + # colid = 0 + # for column in row0.keys(): + # self.listViewMain.InsertColumn( + # col=colid, + # format=wxLIST_FORMAT_LEFT, + # heading=column, + # width=-1 + # ) + # colid += 1 + + # 2. fill entries + #itemid = 0 + #for entry in self.payload: + # self.listViewMain.InsertStringItem(itemid, entry.keys()[0]) + # colid = 0 + # columnlist = entry.keys() + # columnlist.pop() + # for column in columnlist: + # self.listViewMain.SetStringItem(itemid, colid, entry[column]) + # colid += 1 + # set custom data + #self.listViewMain.SetItemData(itemid, itemid) + + #itemid += 1 + + def OnListViewMainLeftDclick(self, event): + #event.Skip() + list_selection = self.listViewMain.GetFocusedItem() + list_item = self.listViewMain.GetItem(list_selection) + #wxMessageBox(str(item.GetData())) + idx = list_item.GetData() + item = self.payload[idx] + + # create new MDI frame + frame = FraggleItemFrame.create(self.parent) + frame.SetName(str(idx)) + frame.SetTitle(item['keyname']) + + # calculate new position (right lower offset of 15px to us) + pos = self.GetPosition() + wxPoint(25, 25) + frame.Move(pos) + self.parent.Fit() + + # patch topic metadata to point to an item instead of a list + # use keyname as query argument + topicmeta = self.topicmeta + topicmeta['result'] = 'item' + topicmeta['target']['arguments'] = item['keyname'] + frame.load_content(topicmeta)