--- nfo/projects/netfraggle/bin/FraggleTopicFrame.py 2004/08/27 03:13:50 1.2 +++ nfo/projects/netfraggle/bin/FraggleTopicFrame.py 2004/08/27 21:14:02 1.4 @@ -1,7 +1,16 @@ #Boa:MDIChild:FraggleTopicFrame -# $Id: FraggleTopicFrame.py,v 1.2 2004/08/27 03:13:50 joko Exp $ +# $Id: FraggleTopicFrame.py,v 1.4 2004/08/27 21:14:02 xabbu Exp $ # $Log: FraggleTopicFrame.py,v $ +# Revision 1.4 2004/08/27 21:14:02 xabbu +# TopicDetails can now be closed. +# GUI change on Preferences Dialog in order to prepare multiple server profiles. +# Small bugfixes to get the new topic windows working on posix platform. +# +# 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 # @@ -12,6 +21,8 @@ from wxPython.wx import * from wxPython.stc import * +import FraggleTopicDetailFrame + def create(parent, config): return FraggleTopicFrame(parent, config) @@ -23,8 +34,9 @@ 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(177, 219), + parent=prnt, pos=wxPoint(494, 328), size=wxSize(169, 192), style=wxSIMPLE_BORDER | wxDEFAULT_FRAME_STYLE, title='Topics') + self._init_utils() self.SetClientSize(wxSize(169, 192)) self.updateButton = wxButton(id=wxID_FRAGGLETOPICFRAMEUPDATEBUTTON, @@ -36,19 +48,58 @@ 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_utils(self): + # generated method, don't edit + pass 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() - import __main__ - engine = __main__.engine # todo: make fraggleEngine read config on its own - engine.fraggleSync(self.config) - topics = engine.getTopics() + 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