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

Annotation of /PyGUI/Catalogpanel.py

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.20 - (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 : hwang 1.20
66 :     EVT_LEFT_DCLICK (self.parent.catalog_tree, self.onLoadBtnPress)
67 : efrank 1.6
68 : efrank 1.4 return
69 :    
70 :     #------------------------------------------------------------------------
71 :     def initCatData( self ):
72 :     #------------------------------------------------------------------------
73 : efrank 1.5 self.parent.catalogRootId = self.parent.catalog_tree.AddRoot("Data Sources")
74 : hwang 1.1
75 : efrank 1.4 bssItemId=self.parent.catalog_tree.AppendItem(self.parent.catalogRootId,
76 :     "BioSimScratch" )
77 :     witItemId=self.parent.catalog_tree.AppendItem(self.parent.catalogRootId,
78 :     "WIT3" )
79 : efrank 1.14 self.seedItemId=self.parent.catalog_tree.AppendItem(self.parent.catalogRootId,
80 : efrank 1.12 "Seed" )
81 : efrank 1.4
82 :     self.loadBssCatalog( bssItemId )
83 : efrank 1.9 self.loadWitCatalog( witItemId )
84 : efrank 1.6
85 : efrank 1.14 localSeedServer = "http://localhost/FIG/"
86 : efrank 1.18 # localSeedServer = "http://float179.mcs.anl-external.org/FIG/"
87 : efrank 1.14 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 : efrank 1.16 # add it to the list in the catalog
143 : efrank 1.19 try:
144 :     self.parent.factoryMgr.addFactory( seedServer, seedFactory )
145 :     except:
146 :     self.parent.error("loadSeedCatalog: %s already in foundry list." % seedServer)
147 :     wxEndBusyCursor()
148 :     return
149 : efrank 1.16
150 : efrank 1.14 # make an entry in the tree for it
151 :     #
152 :     newSeedItemId=self.parent.catalog_tree.AppendItem(self.seedItemId, seedServer )
153 :    
154 :     # jam in the data
155 :     #
156 :     orgList = seedFactory.listOrganisms( )
157 : efrank 1.13 if ( orgList== None ):
158 : efrank 1.14 orgItemId=self.parent.catalog_tree.AppendItem(newSeedItemId,
159 :     "Could not get Org list from "+ seedServer )
160 : efrank 1.15 wxEndBusyCursor()
161 : efrank 1.13 return
162 :    
163 : efrank 1.17 itemName="Spontaneous Reactions"
164 :     spontaneousRxItemId=self.parent.catalog_tree.AppendItem(newSeedItemId, itemName)
165 :     self.parent.catalog_tree.SetPyData(spontaneousRxItemId,
166 :     (self.seedRecoElemLoader,
167 :     (seedFactory.getRecoElemSpontaneousRx, None) ))
168 :    
169 :    
170 : efrank 1.14 orgItemId=self.parent.catalog_tree.AppendItem(newSeedItemId, "Organisms" )
171 : efrank 1.12 for org in orgList:
172 :     id=self.parent.catalog_tree.AppendItem(orgItemId, org.figOrgName )
173 : efrank 1.17 self.parent.catalog_tree.SetPyData(id, (self.seedRecoElemLoader,
174 : efrank 1.14 (seedFactory.getRecoElemByOrg, org) ))
175 : efrank 1.12
176 : efrank 1.16
177 : efrank 1.14 wxEndBusyCursor()
178 : efrank 1.12 return
179 :    
180 :     #------------------------------------------------------------------------
181 : efrank 1.6 def onLeftClick(self,treeEvent):
182 : efrank 1.4 #------------------------------------------------------------------------
183 : efrank 1.5 item = treeEvent.GetItem()
184 : hwang 1.11
185 : efrank 1.4 catEntryTuple = self.parent.tree_ctr.GetPyData(item)
186 : efrank 1.5 if (catEntryTuple == None ):
187 :     return
188 : efrank 1.6 self.selected = catEntryTuple
189 : efrank 1.4
190 :     return
191 : efrank 1.14
192 :     #------------------------------------------------------------------------
193 :     def onRightClickCatalogTree(self, event):
194 :     #------------------------------------------------------------------------
195 :    
196 :     goober = event.GetEventObject()
197 :     goober.PopupMenu(self.seedServerMenu, event.GetPosition())
198 :    
199 :     return
200 :    
201 :     #------------------------------------------------------------------------
202 :     def doSeedServerAdd(self, event):
203 :     #------------------------------------------------------------------------
204 :     prompt = "Name of Seed server"
205 :     dlg = wxTextEntryDialog(self.parent, message=prompt, style=wxOK)
206 :    
207 :     if ( dlg.ShowModal() == wxID_OK):
208 :     serverName = dlg.GetValue()
209 :     if ( serverName=="" ): return
210 :     dlg.Destroy()
211 :     else:
212 :     #didn't get a kid name
213 :     dlg.Destroy()
214 :     return
215 :    
216 :     self.loadSeedCatalog( serverName )
217 :    
218 :     return
219 :    
220 : hwang 1.11 #------------------------------------------------------------------------
221 :     def onLeftDClick(self,treeEvent):
222 :     #------------------------------------------------------------------------
223 : efrank 1.12 self.onLoadBtnPress(treeEvent)
224 :    
225 :     pt = treeEvent.GetPosition()
226 :     item = self.parent.tree_ctr.HitTest(pt)
227 :     print item
228 :     catEntryTuple = self.parent.tree_ctr.GetPyData(item)
229 : efrank 1.14 apply(catEntryTuple[0], catEntryTuple[1])
230 : efrank 1.12 return
231 :    
232 : hwang 1.11 pt = treeEvent.GetPosition()
233 :    
234 :     item = self.parent.tree_ctr.HitTest(pt)
235 :    
236 :     print item
237 :     catEntryTuple = self.parent.tree_ctr.GetPyData(item)
238 :     #print catEntryTuple, "catEntryTuple"
239 :     #self.selected = catEntryTuple
240 :    
241 :     #catEntryTuple = self.selected
242 :     #apply(catEntryTuple[0], [catEntryTuple[1]])
243 :    
244 :     return
245 :    
246 : efrank 1.4
247 :     #------------------------------------------------------------------------
248 : efrank 1.6 def onLoadBtnPress(self, event):
249 : efrank 1.4 #------------------------------------------------------------------------
250 : efrank 1.6 if ( self.selected == None ):
251 :     print "No selection in onLoadBtnPress"
252 :     return
253 :    
254 :     catEntryTuple = self.selected
255 :     apply( catEntryTuple[0], [catEntryTuple[1]] )
256 :    
257 :     return
258 :    
259 :     #------------------------------------------------------------------------
260 :     def bssLoader( self, bssCatEntry ):
261 :     #------------------------------------------------------------------------
262 :     wxBeginBusyCursor()
263 :     b=BssFactory()
264 :     top= b.getRecoElemById( bssCatEntry[1] )
265 :     self.to_re.AddRecoElemTree(self.parent.rootId, top)
266 :     wxEndBusyCursor()
267 : hwang 1.1
268 : efrank 1.2 return
269 : hwang 1.1
270 : efrank 1.4 #------------------------------------------------------------------------
271 : efrank 1.6 def witOrgLoader(self, orgName ):
272 : efrank 1.4 #------------------------------------------------------------------------
273 : efrank 1.6 wxBeginBusyCursor()
274 :     w=WitFactory()
275 :     top= w.getRxnByOrg( orgName )
276 : efrank 1.12 self.to_re.AddRecoElemTree(self.parent.rootId, top)
277 :     wxEndBusyCursor()
278 :     return
279 :    
280 :     #------------------------------------------------------------------------
281 : efrank 1.17 def seedRecoElemLoader(self, argList ):
282 : efrank 1.12 #------------------------------------------------------------------------
283 :     wxBeginBusyCursor()
284 : efrank 1.13
285 : efrank 1.14 (theSeedFactoryMethod, org) = argList
286 :     top = apply( theSeedFactoryMethod, [org] )
287 :     # top=self.__seedDataFactory.getRecoElemByOrg( org )
288 : efrank 1.6 self.to_re.AddRecoElemTree(self.parent.rootId, top)
289 : efrank 1.14
290 : efrank 1.6 wxEndBusyCursor()
291 :     return
292 : efrank 1.4
293 : efrank 1.6 #------------------------------------------------------------------------
294 :     def witPwyLoader(self, pwyName ):
295 :     #------------------------------------------------------------------------
296 : efrank 1.2 wxBeginBusyCursor()
297 : efrank 1.6 w=WitFactory()
298 :     top= w.getRxnByPwy( pwyName )
299 : hwang 1.1 self.to_re.AddRecoElemTree(self.parent.rootId, top)
300 : efrank 1.2 wxEndBusyCursor()
301 :     return

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3