--- nfo/projects/netfraggle/bin/FraggleTopicFrame.py 2004/08/27 03:13:50 1.2 +++ nfo/projects/netfraggle/bin/FraggleTopicFrame.py 2004/09/15 22:31:27 1.7 @@ -1,7 +1,27 @@ #Boa:MDIChild:FraggleTopicFrame -# $Id: FraggleTopicFrame.py,v 1.2 2004/08/27 03:13:50 joko Exp $ +# $Id: FraggleTopicFrame.py,v 1.7 2004/09/15 22:31:27 xabbu Exp $ # $Log: FraggleTopicFrame.py,v $ +# Revision 1.7 2004/09/15 22:31:27 xabbu +# + in function OnUpdateButtonButton call to fraggleSync replaced with syncTopics +# + topics are being recieved from the server now +# +# Revision 1.6 2004/08/31 02:25:34 joko +# U removed FraggleTopicDetailFrame in favor of FraggleItemFrame and FraggleListFrame +# U now clearing topicListBox before updating it +# +# Revision 1.5 2004/08/30 13:06:16 joko +# U now gets config via self.engine +# +# 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,8 +32,11 @@ from wxPython.wx import * from wxPython.stc import * -def create(parent, config): - return FraggleTopicFrame(parent, config) +import FraggleItemFrame +import FraggleListFrame + +def create(parent): + return FraggleTopicFrame(parent) [wxID_FRAGGLETOPICFRAME, wxID_FRAGGLETOPICFRAMETOPICLISTBOX, wxID_FRAGGLETOPICFRAMEUPDATEBUTTON, @@ -23,8 +46,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 +60,64 @@ 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): + self.parent = parent - def __init__(self, parent, config): - self.config = config + # render widgets self._init_ctrls(parent) + # get engine-instance (singleton) + 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.syncTopics() + topics = self.engine.getTopics() + #print topics + self.topicListBox.Clear() i = 0 for topic in topics: - self.topicListBox.Append(topic['name'], i) + self.topicListBox.Append(topics[topic], 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[str(seldata)] + #print title + + frame = FraggleListFrame.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() + + frame.load_content() + + \ No newline at end of file