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

Annotation of /PyGUI/Catalogpanel.py

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.23 - (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 : hwang 1.21 from RecoElempanel import RecoElempanel
8 : hwang 1.1
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.4 for catEntryTuple in b.getLsCat():
104 :     id=self.parent.catalog_tree.AppendItem(bssItemId, catEntryTuple[0])
105 : efrank 1.6 self.parent.catalog_tree.SetPyData(id, (self.bssLoader, catEntryTuple) )
106 : efrank 1.4
107 :     return
108 : hwang 1.1
109 : efrank 1.4 #------------------------------------------------------------------------
110 :     def loadWitCatalog(self, witItemId):
111 :     #------------------------------------------------------------------------
112 :     w=WitFactory()
113 : efrank 1.6
114 :     pwyItemId=self.parent.catalog_tree.AppendItem(witItemId, "Pathways" )
115 :    
116 : efrank 1.4 pwyList = w.listPathways( )
117 :     for pwy in pwyList:
118 : efrank 1.6 id=self.parent.catalog_tree.AppendItem(pwyItemId, pwy)
119 :     self.parent.catalog_tree.SetPyData(id, (self.witPwyLoader,pwy) )
120 :    
121 :     orgItemId=self.parent.catalog_tree.AppendItem(witItemId, "Organisms" )
122 :    
123 :     orgList = w.listOrganisms( )
124 :     for org in orgList:
125 :     id=self.parent.catalog_tree.AppendItem(orgItemId, org)
126 :     self.parent.catalog_tree.SetPyData(id, (self.witOrgLoader, org ))
127 : hwang 1.3
128 : efrank 1.4 return
129 : hwang 1.3
130 : efrank 1.4 #------------------------------------------------------------------------
131 : efrank 1.14 def loadSeedCatalog(self, seedServer ):
132 : efrank 1.12 #------------------------------------------------------------------------
133 : efrank 1.14 wxBeginBusyCursor()
134 :    
135 :     # The SeedDataFactory ctor is slow and actually reads a bunch of
136 :     # data from the server
137 :    
138 :     seedFactory = SeedDataFactory( seedServer )
139 :    
140 : efrank 1.16 # add it to the list in the catalog
141 : efrank 1.19 try:
142 : efrank 1.23 Catalog.instance().addFactory( seedFactory )
143 : efrank 1.19 except:
144 :     self.parent.error("loadSeedCatalog: %s already in foundry list." % seedServer)
145 :     wxEndBusyCursor()
146 :     return
147 : efrank 1.16
148 : efrank 1.14 # make an entry in the tree for it
149 :     #
150 :     newSeedItemId=self.parent.catalog_tree.AppendItem(self.seedItemId, seedServer )
151 :    
152 :     # jam in the data
153 :     #
154 :     orgList = seedFactory.listOrganisms( )
155 : efrank 1.13 if ( orgList== None ):
156 : efrank 1.14 orgItemId=self.parent.catalog_tree.AppendItem(newSeedItemId,
157 :     "Could not get Org list from "+ seedServer )
158 : efrank 1.15 wxEndBusyCursor()
159 : efrank 1.13 return
160 :    
161 : efrank 1.17 itemName="Spontaneous Reactions"
162 :     spontaneousRxItemId=self.parent.catalog_tree.AppendItem(newSeedItemId, itemName)
163 :     self.parent.catalog_tree.SetPyData(spontaneousRxItemId,
164 :     (self.seedRecoElemLoader,
165 :     (seedFactory.getRecoElemSpontaneousRx, None) ))
166 :    
167 :    
168 : efrank 1.14 orgItemId=self.parent.catalog_tree.AppendItem(newSeedItemId, "Organisms" )
169 : efrank 1.12 for org in orgList:
170 :     id=self.parent.catalog_tree.AppendItem(orgItemId, org.figOrgName )
171 : efrank 1.17 self.parent.catalog_tree.SetPyData(id, (self.seedRecoElemLoader,
172 : efrank 1.14 (seedFactory.getRecoElemByOrg, org) ))
173 : efrank 1.12
174 : efrank 1.16
175 : efrank 1.14 wxEndBusyCursor()
176 : efrank 1.12 return
177 :    
178 :     #------------------------------------------------------------------------
179 : efrank 1.6 def onLeftClick(self,treeEvent):
180 : efrank 1.4 #------------------------------------------------------------------------
181 : efrank 1.5 item = treeEvent.GetItem()
182 : hwang 1.11
183 : efrank 1.4 catEntryTuple = self.parent.tree_ctr.GetPyData(item)
184 : efrank 1.5 if (catEntryTuple == None ):
185 :     return
186 : efrank 1.6 self.selected = catEntryTuple
187 : efrank 1.4
188 :     return
189 : efrank 1.14
190 :     #------------------------------------------------------------------------
191 :     def onRightClickCatalogTree(self, event):
192 :     #------------------------------------------------------------------------
193 :    
194 :     goober = event.GetEventObject()
195 :     goober.PopupMenu(self.seedServerMenu, event.GetPosition())
196 :    
197 :     return
198 :    
199 :     #------------------------------------------------------------------------
200 :     def doSeedServerAdd(self, event):
201 :     #------------------------------------------------------------------------
202 :     prompt = "Name of Seed server"
203 :     dlg = wxTextEntryDialog(self.parent, message=prompt, style=wxOK)
204 :    
205 :     if ( dlg.ShowModal() == wxID_OK):
206 :     serverName = dlg.GetValue()
207 :     if ( serverName=="" ): return
208 :     dlg.Destroy()
209 :     else:
210 :     #didn't get a kid name
211 :     dlg.Destroy()
212 :     return
213 :    
214 :     self.loadSeedCatalog( serverName )
215 :    
216 :     return
217 :    
218 : efrank 1.4
219 :     #------------------------------------------------------------------------
220 : hwang 1.22 def onLeftDClick(self, event):
221 : efrank 1.4 #------------------------------------------------------------------------
222 : efrank 1.6 if ( self.selected == None ):
223 :     print "No selection in onLoadBtnPress"
224 :     return
225 :    
226 :     catEntryTuple = self.selected
227 :     apply( catEntryTuple[0], [catEntryTuple[1]] )
228 :    
229 :     return
230 :    
231 :     #------------------------------------------------------------------------
232 :     def bssLoader( self, bssCatEntry ):
233 :     #------------------------------------------------------------------------
234 :     wxBeginBusyCursor()
235 :     b=BssFactory()
236 :     top= b.getRecoElemById( bssCatEntry[1] )
237 :     self.to_re.AddRecoElemTree(self.parent.rootId, top)
238 :     wxEndBusyCursor()
239 : hwang 1.1
240 : efrank 1.2 return
241 : hwang 1.1
242 : efrank 1.4 #------------------------------------------------------------------------
243 : efrank 1.6 def witOrgLoader(self, orgName ):
244 : efrank 1.4 #------------------------------------------------------------------------
245 : efrank 1.6 wxBeginBusyCursor()
246 :     w=WitFactory()
247 :     top= w.getRxnByOrg( orgName )
248 : efrank 1.12 self.to_re.AddRecoElemTree(self.parent.rootId, top)
249 :     wxEndBusyCursor()
250 :     return
251 :    
252 :     #------------------------------------------------------------------------
253 : efrank 1.17 def seedRecoElemLoader(self, argList ):
254 : efrank 1.12 #------------------------------------------------------------------------
255 :     wxBeginBusyCursor()
256 : efrank 1.13
257 : efrank 1.14 (theSeedFactoryMethod, org) = argList
258 :     top = apply( theSeedFactoryMethod, [org] )
259 :     # top=self.__seedDataFactory.getRecoElemByOrg( org )
260 : efrank 1.6 self.to_re.AddRecoElemTree(self.parent.rootId, top)
261 : efrank 1.14
262 : efrank 1.6 wxEndBusyCursor()
263 :     return
264 : efrank 1.4
265 : efrank 1.6 #------------------------------------------------------------------------
266 :     def witPwyLoader(self, pwyName ):
267 :     #------------------------------------------------------------------------
268 : efrank 1.2 wxBeginBusyCursor()
269 : efrank 1.6 w=WitFactory()
270 :     top= w.getRxnByPwy( pwyName )
271 : hwang 1.1 self.to_re.AddRecoElemTree(self.parent.rootId, top)
272 : efrank 1.2 wxEndBusyCursor()
273 :     return

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3