--- nfo/projects/netfraggle/bin/FraggleTopicFrame.py 2004/08/26 17:23:30 1.1 +++ nfo/projects/netfraggle/bin/FraggleTopicFrame.py 2004/08/27 04:47:35 1.3 @@ -1,25 +1,95 @@ #Boa:MDIChild:FraggleTopicFrame -# $Id: FraggleTopicFrame.py,v 1.1 2004/08/26 17:23:30 joko Exp $ +# $Id: FraggleTopicFrame.py,v 1.3 2004/08/27 04:47:35 joko Exp $ # $Log: FraggleTopicFrame.py,v $ +# Revision 1.3 2004/08/27 04:47:35 joko +# instance of FraggleEngine now available in self.engine +# added event handler "OnTopicListBoxListboxDclick" and logic to open "FraggleTopicDetailFrame"s +# +# Revision 1.2 2004/08/27 03:13:50 joko +# added listbox for topics and button for update/sync +# # Revision 1.1 2004/08/26 17:23:30 joko # initial commit # from wxPython.wx import * +from wxPython.stc import * -def create(parent): - return FraggleTopicFrame(parent) +import FraggleTopicDetailFrame -[wxID_FRAGGLETOPICFRAME] = map(lambda _init_ctrls: wxNewId(), range(1)) +def create(parent, config): + return FraggleTopicFrame(parent, config) + +[wxID_FRAGGLETOPICFRAME, wxID_FRAGGLETOPICFRAMETOPICLISTBOX, + wxID_FRAGGLETOPICFRAMEUPDATEBUTTON, +] = map(lambda _init_ctrls: wxNewId(), range(3)) class FraggleTopicFrame(wxMDIChildFrame): def _init_ctrls(self, prnt): # generated method, don't edit wxMDIChildFrame.__init__(self, id=wxID_FRAGGLETOPICFRAME, name='', - parent=prnt, pos=wxPoint(352, 280), size=wxSize(138, 215), + parent=prnt, pos=wxPoint(352, 280), size=wxSize(177, 219), style=wxSIMPLE_BORDER | wxDEFAULT_FRAME_STYLE, title='Topics') - self.SetClientSize(wxSize(130, 188)) + self.SetClientSize(wxSize(169, 192)) - def __init__(self, parent): + self.updateButton = wxButton(id=wxID_FRAGGLETOPICFRAMEUPDATEBUTTON, + label=u'&Update', name=u'updateButton', parent=self, + pos=wxPoint(0, 168), size=wxSize(168, 23), style=0) + EVT_BUTTON(self.updateButton, wxID_FRAGGLETOPICFRAMEUPDATEBUTTON, + self.OnUpdateButtonButton) + + self.topicListBox = wxListBox(choices=[], + id=wxID_FRAGGLETOPICFRAMETOPICLISTBOX, name=u'topicListBox', + parent=self, pos=wxPoint(0, 0), size=wxSize(168, 168), style=0) + EVT_LISTBOX_DCLICK(self.topicListBox, + wxID_FRAGGLETOPICFRAMETOPICLISTBOX, + self.OnTopicListBoxListboxDclick) + + def __init__(self, parent, config): + self.parent = parent + self.config = config self._init_ctrls(parent) + import __main__ + self.engine = __main__.engine + + def OnUpdateButtonButton(self, event): + #event.Skip() + # todo: make fraggleEngine read config on its own + self.engine.fraggleSync(self.config) + topics = self.engine.getTopics() + i = 0 + for topic in topics: + self.topicListBox.Append(topic['name'], i) + i = i + 1 + + def OnTopicListBoxListboxDclick(self, event): + #event.Skip() + #print event + + # get "ClientData" of current selected entry from widget + sel = self.topicListBox.GetSelection() + seldata = self.topicListBox.GetClientData(sel) + + # determine if to activate an existing window or if to create a new one + win = self.parent.FindWindowByName(str(seldata)) + if win: + win.Raise() + win.SetFocus() + return + + # resolve associated topic entry + topics = self.engine.getTopics() + title = topics[seldata]['name'] + + frame = FraggleTopicDetailFrame.create(self.parent) + frame.SetName(str(seldata)) + frame.SetTitle(title) + + # calculate new position (right beside the TopicFrame (us)) + pos = self.GetPosition() + wxPoint(self.GetSize().GetWidth() + 5, 0) + frame.Move(pos) + self.parent.Fit() + + + \ No newline at end of file