[Bio] / PyGUI / Catalogpanel.py Repository:
ViewVC logotype

Annotation of /PyGUI/Catalogpanel.py

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.15 - (view) (download) (as text)

1 : hwang 1.1 from wxPython.wx import *
2 :     from FaST.BssFactory import BssFactory
3 : efrank 1.4 from FaST.WitFactory import WitFactory
4 : efrank 1.12 from FaST.SeedDataFactory import SeedDataFactory
5 :     from FaST.SeedDataFactory import SeedOrganism
6 : hwang 1.1 from FaST.RecoElem import RecoElem
7 :     from RecoElempanel import RecoElemWindow
8 :    
9 : efrank 1.12
10 :    
11 : hwang 1.1 class CatalogWindow:
12 : efrank 1.10 # def __init__(self, parent):
13 :     # def initCatEvents(self ):
14 :     # def initCatData( self ):
15 :     # def loadBssCatalog(self, bssItemId):
16 :     # def loadWitCatalog(self, witItemId):
17 : efrank 1.12 # def loadSeedCatalog(self, witItemId):
18 : efrank 1.10 # def onLeftClick(self,treeEvent):
19 :     # def onLoadBtnPress(self, event):
20 :     # def bssLoader( self, bssCatEntry ):
21 :     # def witOrgLoader(self, orgName ):
22 :     # def witPwyLoader(self, pwyName ):
23 :    
24 : efrank 1.4 #------------------------------------------------------------------------
25 : hwang 1.1 def __init__(self, parent):
26 : efrank 1.4 #------------------------------------------------------------------------
27 : efrank 1.13 self.parent = parent
28 :    
29 :     self.to_re = parent.re
30 : efrank 1.2 self.selected = None #remember last selected catalog entry
31 :     #..is used when LOAD button is hit.
32 : efrank 1.4
33 : efrank 1.14 # seedItemId is the wxPython id for the "Seed" node
34 :     # in the catalog tree under which all specific Seed servers
35 :     # are listed
36 :    
37 :     self.seedItemId = None
38 :    
39 : efrank 1.4 self.initCatEvents()
40 :     self.initCatData()
41 : efrank 1.14
42 :    
43 :     self.seedServerMenu = wxMenu()
44 :     self.seedServerAddId = wxNewId()
45 :     self.setupSeedServerMenu()
46 :    
47 : efrank 1.4 return
48 :    
49 :    
50 :     #------------------------------------------------------------------------
51 :     def initCatEvents(self ):
52 :     #------------------------------------------------------------------------
53 : efrank 1.2 button1= self.parent.OK_button
54 :     EVT_BUTTON(self.parent, self.parent.loadbtn.GetId(),
55 :     self.onLoadBtnPress)
56 : efrank 1.6 EVT_TREE_SEL_CHANGED(self.parent.catalog_tree,
57 :     self.parent.catalog_treeId,
58 :     self.onLeftClick)
59 : efrank 1.14
60 :     # Right click on List item for Seed will let you connect to
61 :     # another Seed server
62 :    
63 :     EVT_RIGHT_DOWN(self.parent.catalog_tree, self.onRightClickCatalogTree)
64 :    
65 :    
66 :     # doesn't work...
67 :     # EVT_LEFT_DCLICK (self.parent.catalog_tree, self.onLeftDClick)
68 : efrank 1.6
69 : efrank 1.4 return
70 :    
71 :     #------------------------------------------------------------------------
72 :     def initCatData( self ):
73 :     #------------------------------------------------------------------------
74 : efrank 1.5 self.parent.catalogRootId = self.parent.catalog_tree.AddRoot("Data Sources")
75 : hwang 1.1
76 : efrank 1.4 bssItemId=self.parent.catalog_tree.AppendItem(self.parent.catalogRootId,
77 :     "BioSimScratch" )
78 :     witItemId=self.parent.catalog_tree.AppendItem(self.parent.catalogRootId,
79 :     "WIT3" )
80 : efrank 1.14 self.seedItemId=self.parent.catalog_tree.AppendItem(self.parent.catalogRootId,
81 : efrank 1.12 "Seed" )
82 : efrank 1.4
83 :     self.loadBssCatalog( bssItemId )
84 : efrank 1.9 self.loadWitCatalog( witItemId )
85 : efrank 1.6
86 : efrank 1.14 localSeedServer = "http://localhost/FIG/"
87 :     self.loadSeedCatalog( localSeedServer)
88 : efrank 1.13
89 : efrank 1.6 self.parent.catalog_tree.Expand( self.parent.catalogRootId)
90 : efrank 1.2 return
91 : efrank 1.4
92 : efrank 1.14 #------------------------------------------------------------------
93 :     def setupSeedServerMenu(self):
94 :     #------------------------------------------------------------------
95 :     self.seedServerAddId = wxNewId()
96 :    
97 :     self.seedServerMenu.Append( self.seedServerAddId,
98 :     "Add Seed Server", "New seed server arg3" )
99 :     EVT_MENU(self.parent, self.seedServerAddId, self.doSeedServerAdd)
100 :    
101 : efrank 1.4 #------------------------------------------------------------------------
102 :     def loadBssCatalog(self, bssItemId):
103 :     #------------------------------------------------------------------------
104 : hwang 1.1 b=BssFactory()
105 : efrank 1.4 for catEntryTuple in b.getLsCat():
106 :     id=self.parent.catalog_tree.AppendItem(bssItemId, catEntryTuple[0])
107 : efrank 1.6 self.parent.catalog_tree.SetPyData(id, (self.bssLoader, catEntryTuple) )
108 : efrank 1.4
109 :     return
110 : hwang 1.1
111 : efrank 1.4 #------------------------------------------------------------------------
112 :     def loadWitCatalog(self, witItemId):
113 :     #------------------------------------------------------------------------
114 :     w=WitFactory()
115 : efrank 1.6
116 :     pwyItemId=self.parent.catalog_tree.AppendItem(witItemId, "Pathways" )
117 :    
118 : efrank 1.4 pwyList = w.listPathways( )
119 :     for pwy in pwyList:
120 : efrank 1.6 id=self.parent.catalog_tree.AppendItem(pwyItemId, pwy)
121 :     self.parent.catalog_tree.SetPyData(id, (self.witPwyLoader,pwy) )
122 :    
123 :     orgItemId=self.parent.catalog_tree.AppendItem(witItemId, "Organisms" )
124 :    
125 :     orgList = w.listOrganisms( )
126 :     for org in orgList:
127 :     id=self.parent.catalog_tree.AppendItem(orgItemId, org)
128 :     self.parent.catalog_tree.SetPyData(id, (self.witOrgLoader, org ))
129 : hwang 1.3
130 : efrank 1.4 return
131 : hwang 1.3
132 : efrank 1.4 #------------------------------------------------------------------------
133 : efrank 1.14 def loadSeedCatalog(self, seedServer ):
134 : efrank 1.12 #------------------------------------------------------------------------
135 : efrank 1.14 wxBeginBusyCursor()
136 :    
137 :     # The SeedDataFactory ctor is slow and actually reads a bunch of
138 :     # data from the server
139 :    
140 :     seedFactory = SeedDataFactory( seedServer )
141 :    
142 :     # make an entry in the tree for it
143 :     #
144 :     newSeedItemId=self.parent.catalog_tree.AppendItem(self.seedItemId, seedServer )
145 :    
146 :     # jam in the data
147 :     #
148 :     orgList = seedFactory.listOrganisms( )
149 : efrank 1.13 if ( orgList== None ):
150 : efrank 1.14 orgItemId=self.parent.catalog_tree.AppendItem(newSeedItemId,
151 :     "Could not get Org list from "+ seedServer )
152 : efrank 1.15 wxEndBusyCursor()
153 : efrank 1.13 return
154 :    
155 : efrank 1.14 orgItemId=self.parent.catalog_tree.AppendItem(newSeedItemId, "Organisms" )
156 : efrank 1.12 for org in orgList:
157 :     id=self.parent.catalog_tree.AppendItem(orgItemId, org.figOrgName )
158 : efrank 1.14 self.parent.catalog_tree.SetPyData(id, (self.seedOrgLoader,
159 :     (seedFactory.getRecoElemByOrg, org) ))
160 : efrank 1.12
161 : efrank 1.14 wxEndBusyCursor()
162 : efrank 1.12 return
163 :    
164 :     #------------------------------------------------------------------------
165 : efrank 1.6 def onLeftClick(self,treeEvent):
166 : efrank 1.4 #------------------------------------------------------------------------
167 : efrank 1.5 item = treeEvent.GetItem()
168 : hwang 1.11
169 : efrank 1.4 catEntryTuple = self.parent.tree_ctr.GetPyData(item)
170 : efrank 1.5 if (catEntryTuple == None ):
171 :     return
172 : efrank 1.6 self.selected = catEntryTuple
173 : efrank 1.4
174 :     return
175 : efrank 1.14
176 :     #------------------------------------------------------------------------
177 :     def onRightClickCatalogTree(self, event):
178 :     #------------------------------------------------------------------------
179 :    
180 :     goober = event.GetEventObject()
181 :     goober.PopupMenu(self.seedServerMenu, event.GetPosition())
182 :    
183 :     return
184 :    
185 :     #------------------------------------------------------------------------
186 :     def doSeedServerAdd(self, event):
187 :     #------------------------------------------------------------------------
188 :     prompt = "Name of Seed server"
189 :     dlg = wxTextEntryDialog(self.parent, message=prompt, style=wxOK)
190 :    
191 :     if ( dlg.ShowModal() == wxID_OK):
192 :     serverName = dlg.GetValue()
193 :     if ( serverName=="" ): return
194 :     dlg.Destroy()
195 :     else:
196 :     #didn't get a kid name
197 :     dlg.Destroy()
198 :     return
199 :    
200 :     self.loadSeedCatalog( serverName )
201 :    
202 :     return
203 :    
204 : hwang 1.11 #------------------------------------------------------------------------
205 :     def onLeftDClick(self,treeEvent):
206 :     #------------------------------------------------------------------------
207 : efrank 1.12 self.onLoadBtnPress(treeEvent)
208 :    
209 :     pt = treeEvent.GetPosition()
210 :     item = self.parent.tree_ctr.HitTest(pt)
211 :     print item
212 :     catEntryTuple = self.parent.tree_ctr.GetPyData(item)
213 : efrank 1.14 apply(catEntryTuple[0], catEntryTuple[1])
214 : efrank 1.12 return
215 :    
216 : hwang 1.11 pt = treeEvent.GetPosition()
217 :    
218 :     item = self.parent.tree_ctr.HitTest(pt)
219 :    
220 :     print item
221 :     catEntryTuple = self.parent.tree_ctr.GetPyData(item)
222 :     #print catEntryTuple, "catEntryTuple"
223 :     #self.selected = catEntryTuple
224 :    
225 :     #catEntryTuple = self.selected
226 :     #apply(catEntryTuple[0], [catEntryTuple[1]])
227 :    
228 :     return
229 :    
230 : efrank 1.4
231 :     #------------------------------------------------------------------------
232 : efrank 1.6 def onLoadBtnPress(self, event):
233 : efrank 1.4 #------------------------------------------------------------------------
234 : efrank 1.6 if ( self.selected == None ):
235 :     print "No selection in onLoadBtnPress"
236 :     return
237 :    
238 :     catEntryTuple = self.selected
239 :     apply( catEntryTuple[0], [catEntryTuple[1]] )
240 :    
241 :     return
242 :    
243 :     #------------------------------------------------------------------------
244 :     def bssLoader( self, bssCatEntry ):
245 :     #------------------------------------------------------------------------
246 :     wxBeginBusyCursor()
247 :     b=BssFactory()
248 :     top= b.getRecoElemById( bssCatEntry[1] )
249 :     self.to_re.AddRecoElemTree(self.parent.rootId, top)
250 :     wxEndBusyCursor()
251 : hwang 1.1
252 : efrank 1.2 return
253 : hwang 1.1
254 : efrank 1.4 #------------------------------------------------------------------------
255 : efrank 1.6 def witOrgLoader(self, orgName ):
256 : efrank 1.4 #------------------------------------------------------------------------
257 : efrank 1.6 wxBeginBusyCursor()
258 :     w=WitFactory()
259 :     top= w.getRxnByOrg( orgName )
260 : efrank 1.12 self.to_re.AddRecoElemTree(self.parent.rootId, top)
261 :     wxEndBusyCursor()
262 :     return
263 :    
264 :     #------------------------------------------------------------------------
265 : efrank 1.14 def seedOrgLoader(self, argList ):
266 : efrank 1.12 #------------------------------------------------------------------------
267 :     wxBeginBusyCursor()
268 : efrank 1.13
269 : efrank 1.14 (theSeedFactoryMethod, org) = argList
270 :     top = apply( theSeedFactoryMethod, [org] )
271 :     # top=self.__seedDataFactory.getRecoElemByOrg( org )
272 : efrank 1.6 self.to_re.AddRecoElemTree(self.parent.rootId, top)
273 : efrank 1.14
274 : efrank 1.6 wxEndBusyCursor()
275 :     return
276 : efrank 1.4
277 : efrank 1.6 #------------------------------------------------------------------------
278 :     def witPwyLoader(self, pwyName ):
279 :     #------------------------------------------------------------------------
280 : efrank 1.2 wxBeginBusyCursor()
281 : efrank 1.6 w=WitFactory()
282 :     top= w.getRxnByPwy( pwyName )
283 : hwang 1.1 self.to_re.AddRecoElemTree(self.parent.rootId, top)
284 : efrank 1.2 wxEndBusyCursor()
285 :     return

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3