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

Annotation of /PyGUI/Catalogpanel.py

Parent Directory Parent Directory | Revision Log Revision Log


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

1 : efrank 1.24 from wxPython.wx import *
2 :     from FaST.BssFactory import BssFactory
3 :     from FaST.WitFactory import WitFactory
4 :     from FaST.SeedDataFactory import SeedDataFactory
5 :     from FaST.SeedDataFactory import SeedOrganism
6 :     from FaST.RecoElem import RecoElem
7 :     from RecoElempanel import RecoElempanel
8 :     from CatalogServices.Catalog import Catalog
9 : efrank 1.12
10 :    
11 : hwang 1.21 class Catalogpanel:
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 : hwang 1.22
54 : efrank 1.6 EVT_TREE_SEL_CHANGED(self.parent.catalog_tree,
55 :     self.parent.catalog_treeId,
56 :     self.onLeftClick)
57 : efrank 1.14
58 :     # Right click on List item for Seed will let you connect to
59 :     # another Seed server
60 :    
61 :     EVT_RIGHT_DOWN(self.parent.catalog_tree, self.onRightClickCatalogTree)
62 :    
63 : hwang 1.20
64 : hwang 1.22 EVT_LEFT_DCLICK (self.parent.catalog_tree, self.onLeftDClick)
65 : efrank 1.6
66 : efrank 1.4 return
67 :    
68 :     #------------------------------------------------------------------------
69 :     def initCatData( self ):
70 :     #------------------------------------------------------------------------
71 : efrank 1.5 self.parent.catalogRootId = self.parent.catalog_tree.AddRoot("Data Sources")
72 : hwang 1.1
73 : efrank 1.4 bssItemId=self.parent.catalog_tree.AppendItem(self.parent.catalogRootId,
74 :     "BioSimScratch" )
75 :     witItemId=self.parent.catalog_tree.AppendItem(self.parent.catalogRootId,
76 :     "WIT3" )
77 : efrank 1.14 self.seedItemId=self.parent.catalog_tree.AppendItem(self.parent.catalogRootId,
78 : efrank 1.12 "Seed" )
79 : efrank 1.4
80 :     self.loadBssCatalog( bssItemId )
81 : efrank 1.9 self.loadWitCatalog( witItemId )
82 : efrank 1.6
83 : efrank 1.14 localSeedServer = "http://localhost/FIG/"
84 : efrank 1.18 # localSeedServer = "http://float179.mcs.anl-external.org/FIG/"
85 : efrank 1.14 self.loadSeedCatalog( localSeedServer)
86 : efrank 1.13
87 : efrank 1.6 self.parent.catalog_tree.Expand( self.parent.catalogRootId)
88 : efrank 1.2 return
89 : efrank 1.4
90 : efrank 1.14 #------------------------------------------------------------------
91 :     def setupSeedServerMenu(self):
92 :     #------------------------------------------------------------------
93 :     self.seedServerAddId = wxNewId()
94 :    
95 :     self.seedServerMenu.Append( self.seedServerAddId,
96 :     "Add Seed Server", "New seed server arg3" )
97 :     EVT_MENU(self.parent, self.seedServerAddId, self.doSeedServerAdd)
98 :    
99 : efrank 1.4 #------------------------------------------------------------------------
100 :     def loadBssCatalog(self, bssItemId):
101 :     #------------------------------------------------------------------------
102 : hwang 1.1 b=BssFactory()
103 : efrank 1.24 Catalog.instance().addDataFactory( b )
104 : efrank 1.4 for catEntryTuple in b.getLsCat():
105 :     id=self.parent.catalog_tree.AppendItem(bssItemId, catEntryTuple[0])
106 : efrank 1.6 self.parent.catalog_tree.SetPyData(id, (self.bssLoader, catEntryTuple) )
107 : efrank 1.4
108 :     return
109 : hwang 1.1
110 : efrank 1.4 #------------------------------------------------------------------------
111 :     def loadWitCatalog(self, witItemId):
112 :     #------------------------------------------------------------------------
113 :     w=WitFactory()
114 : efrank 1.24 Catalog.instance().addDataFactory( w )
115 : efrank 1.6 pwyItemId=self.parent.catalog_tree.AppendItem(witItemId, "Pathways" )
116 :    
117 : efrank 1.4 pwyList = w.listPathways( )
118 :     for pwy in pwyList:
119 : efrank 1.6 id=self.parent.catalog_tree.AppendItem(pwyItemId, pwy)
120 :     self.parent.catalog_tree.SetPyData(id, (self.witPwyLoader,pwy) )
121 :    
122 :     orgItemId=self.parent.catalog_tree.AppendItem(witItemId, "Organisms" )
123 :    
124 :     orgList = w.listOrganisms( )
125 :     for org in orgList:
126 :     id=self.parent.catalog_tree.AppendItem(orgItemId, org)
127 :     self.parent.catalog_tree.SetPyData(id, (self.witOrgLoader, org ))
128 : hwang 1.3
129 : efrank 1.4 return
130 : hwang 1.3
131 : efrank 1.4 #------------------------------------------------------------------------
132 : efrank 1.14 def loadSeedCatalog(self, seedServer ):
133 : efrank 1.12 #------------------------------------------------------------------------
134 : efrank 1.14 wxBeginBusyCursor()
135 :    
136 :     # The SeedDataFactory ctor is slow and actually reads a bunch of
137 :     # data from the server
138 :    
139 :     seedFactory = SeedDataFactory( seedServer )
140 :    
141 : efrank 1.16 # add it to the list in the catalog
142 : efrank 1.19 try:
143 : efrank 1.24 Catalog.instance().addDataFactory( seedFactory )
144 : efrank 1.19 except:
145 :     self.parent.error("loadSeedCatalog: %s already in foundry list." % seedServer)
146 :     wxEndBusyCursor()
147 :     return
148 : efrank 1.16
149 : efrank 1.14 # make an entry in the tree for it
150 :     #
151 :     newSeedItemId=self.parent.catalog_tree.AppendItem(self.seedItemId, seedServer )
152 :    
153 :     # jam in the data
154 :     #
155 :     orgList = seedFactory.listOrganisms( )
156 : efrank 1.13 if ( orgList== None ):
157 : efrank 1.14 orgItemId=self.parent.catalog_tree.AppendItem(newSeedItemId,
158 :     "Could not get Org list from "+ seedServer )
159 : efrank 1.15 wxEndBusyCursor()
160 : efrank 1.13 return
161 :    
162 : efrank 1.17 itemName="Spontaneous Reactions"
163 :     spontaneousRxItemId=self.parent.catalog_tree.AppendItem(newSeedItemId, itemName)
164 :     self.parent.catalog_tree.SetPyData(spontaneousRxItemId,
165 :     (self.seedRecoElemLoader,
166 :     (seedFactory.getRecoElemSpontaneousRx, None) ))
167 :    
168 :    
169 : efrank 1.14 orgItemId=self.parent.catalog_tree.AppendItem(newSeedItemId, "Organisms" )
170 : efrank 1.12 for org in orgList:
171 :     id=self.parent.catalog_tree.AppendItem(orgItemId, org.figOrgName )
172 : efrank 1.17 self.parent.catalog_tree.SetPyData(id, (self.seedRecoElemLoader,
173 : efrank 1.14 (seedFactory.getRecoElemByOrg, org) ))
174 : efrank 1.12
175 : efrank 1.16
176 : efrank 1.14 wxEndBusyCursor()
177 : efrank 1.12 return
178 :    
179 :     #------------------------------------------------------------------------
180 : efrank 1.6 def onLeftClick(self,treeEvent):
181 : efrank 1.4 #------------------------------------------------------------------------
182 : efrank 1.5 item = treeEvent.GetItem()
183 : hwang 1.11
184 : efrank 1.4 catEntryTuple = self.parent.tree_ctr.GetPyData(item)
185 : efrank 1.5 if (catEntryTuple == None ):
186 :     return
187 : efrank 1.6 self.selected = catEntryTuple
188 : efrank 1.4
189 :     return
190 : efrank 1.14
191 :     #------------------------------------------------------------------------
192 :     def onRightClickCatalogTree(self, event):
193 :     #------------------------------------------------------------------------
194 :    
195 :     goober = event.GetEventObject()
196 :     goober.PopupMenu(self.seedServerMenu, event.GetPosition())
197 :    
198 :     return
199 :    
200 :     #------------------------------------------------------------------------
201 :     def doSeedServerAdd(self, event):
202 :     #------------------------------------------------------------------------
203 :     prompt = "Name of Seed server"
204 :     dlg = wxTextEntryDialog(self.parent, message=prompt, style=wxOK)
205 :    
206 :     if ( dlg.ShowModal() == wxID_OK):
207 :     serverName = dlg.GetValue()
208 :     if ( serverName=="" ): return
209 :     dlg.Destroy()
210 :     else:
211 :     #didn't get a kid name
212 :     dlg.Destroy()
213 :     return
214 :    
215 :     self.loadSeedCatalog( serverName )
216 :    
217 :     return
218 :    
219 : efrank 1.4
220 :     #------------------------------------------------------------------------
221 : hwang 1.22 def onLeftDClick(self, event):
222 : efrank 1.4 #------------------------------------------------------------------------
223 : efrank 1.6 if ( self.selected == None ):
224 :     print "No selection in onLoadBtnPress"
225 :     return
226 :    
227 :     catEntryTuple = self.selected
228 :     apply( catEntryTuple[0], [catEntryTuple[1]] )
229 :    
230 :     return
231 :    
232 :     #------------------------------------------------------------------------
233 :     def bssLoader( self, bssCatEntry ):
234 :     #------------------------------------------------------------------------
235 :     wxBeginBusyCursor()
236 :     b=BssFactory()
237 :     top= b.getRecoElemById( bssCatEntry[1] )
238 :     self.to_re.AddRecoElemTree(self.parent.rootId, top)
239 :     wxEndBusyCursor()
240 : hwang 1.1
241 : efrank 1.2 return
242 : hwang 1.1
243 : efrank 1.4 #------------------------------------------------------------------------
244 : efrank 1.6 def witOrgLoader(self, orgName ):
245 : efrank 1.4 #------------------------------------------------------------------------
246 : efrank 1.6 wxBeginBusyCursor()
247 :     w=WitFactory()
248 :     top= w.getRxnByOrg( orgName )
249 : efrank 1.12 self.to_re.AddRecoElemTree(self.parent.rootId, top)
250 :     wxEndBusyCursor()
251 :     return
252 :    
253 :     #------------------------------------------------------------------------
254 : efrank 1.17 def seedRecoElemLoader(self, argList ):
255 : efrank 1.12 #------------------------------------------------------------------------
256 :     wxBeginBusyCursor()
257 : efrank 1.13
258 : efrank 1.14 (theSeedFactoryMethod, org) = argList
259 :     top = apply( theSeedFactoryMethod, [org] )
260 :     # top=self.__seedDataFactory.getRecoElemByOrg( org )
261 : efrank 1.6 self.to_re.AddRecoElemTree(self.parent.rootId, top)
262 : efrank 1.14
263 : efrank 1.6 wxEndBusyCursor()
264 :     return
265 : efrank 1.4
266 : efrank 1.6 #------------------------------------------------------------------------
267 :     def witPwyLoader(self, pwyName ):
268 :     #------------------------------------------------------------------------
269 : efrank 1.2 wxBeginBusyCursor()
270 : efrank 1.6 w=WitFactory()
271 :     top= w.getRxnByPwy( pwyName )
272 : hwang 1.1 self.to_re.AddRecoElemTree(self.parent.rootId, top)
273 : efrank 1.2 wxEndBusyCursor()
274 :     return

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3