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

Annotation of /PyGUI/Catalogpanel.py

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.14 - (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.13 return
153 :    
154 : efrank 1.14 orgItemId=self.parent.catalog_tree.AppendItem(newSeedItemId, "Organisms" )
155 : efrank 1.12 for org in orgList:
156 :     id=self.parent.catalog_tree.AppendItem(orgItemId, org.figOrgName )
157 : efrank 1.14 self.parent.catalog_tree.SetPyData(id, (self.seedOrgLoader,
158 :     (seedFactory.getRecoElemByOrg, org) ))
159 : efrank 1.12
160 : efrank 1.14 wxEndBusyCursor()
161 : efrank 1.12 return
162 :    
163 :     #------------------------------------------------------------------------
164 : efrank 1.6 def onLeftClick(self,treeEvent):
165 : efrank 1.4 #------------------------------------------------------------------------
166 : efrank 1.5 item = treeEvent.GetItem()
167 : hwang 1.11
168 : efrank 1.4 catEntryTuple = self.parent.tree_ctr.GetPyData(item)
169 : efrank 1.5 if (catEntryTuple == None ):
170 :     return
171 : efrank 1.6 self.selected = catEntryTuple
172 : efrank 1.4
173 :     return
174 : efrank 1.14
175 :     #------------------------------------------------------------------------
176 :     def onRightClickCatalogTree(self, event):
177 :     #------------------------------------------------------------------------
178 :    
179 :     goober = event.GetEventObject()
180 :     goober.PopupMenu(self.seedServerMenu, event.GetPosition())
181 :    
182 :     return
183 :    
184 :     #------------------------------------------------------------------------
185 :     def doSeedServerAdd(self, event):
186 :     #------------------------------------------------------------------------
187 :     prompt = "Name of Seed server"
188 :     dlg = wxTextEntryDialog(self.parent, message=prompt, style=wxOK)
189 :    
190 :     if ( dlg.ShowModal() == wxID_OK):
191 :     serverName = dlg.GetValue()
192 :     if ( serverName=="" ): return
193 :     dlg.Destroy()
194 :     else:
195 :     #didn't get a kid name
196 :     dlg.Destroy()
197 :     return
198 :    
199 :     self.loadSeedCatalog( serverName )
200 :    
201 :     return
202 :    
203 : hwang 1.11 #------------------------------------------------------------------------
204 :     def onLeftDClick(self,treeEvent):
205 :     #------------------------------------------------------------------------
206 : efrank 1.12 self.onLoadBtnPress(treeEvent)
207 :    
208 :     pt = treeEvent.GetPosition()
209 :     item = self.parent.tree_ctr.HitTest(pt)
210 :     print item
211 :     catEntryTuple = self.parent.tree_ctr.GetPyData(item)
212 : efrank 1.14 apply(catEntryTuple[0], catEntryTuple[1])
213 : efrank 1.12 return
214 :    
215 : hwang 1.11 pt = treeEvent.GetPosition()
216 :    
217 :     item = self.parent.tree_ctr.HitTest(pt)
218 :    
219 :     print item
220 :     catEntryTuple = self.parent.tree_ctr.GetPyData(item)
221 :     #print catEntryTuple, "catEntryTuple"
222 :     #self.selected = catEntryTuple
223 :    
224 :     #catEntryTuple = self.selected
225 :     #apply(catEntryTuple[0], [catEntryTuple[1]])
226 :    
227 :     return
228 :    
229 : efrank 1.4
230 :     #------------------------------------------------------------------------
231 : efrank 1.6 def onLoadBtnPress(self, event):
232 : efrank 1.4 #------------------------------------------------------------------------
233 : efrank 1.6 if ( self.selected == None ):
234 :     print "No selection in onLoadBtnPress"
235 :     return
236 :    
237 :     catEntryTuple = self.selected
238 :     apply( catEntryTuple[0], [catEntryTuple[1]] )
239 :    
240 :     return
241 :    
242 :     #------------------------------------------------------------------------
243 :     def bssLoader( self, bssCatEntry ):
244 :     #------------------------------------------------------------------------
245 :     wxBeginBusyCursor()
246 :     b=BssFactory()
247 :     top= b.getRecoElemById( bssCatEntry[1] )
248 :     self.to_re.AddRecoElemTree(self.parent.rootId, top)
249 :     wxEndBusyCursor()
250 : hwang 1.1
251 : efrank 1.2 return
252 : hwang 1.1
253 : efrank 1.4 #------------------------------------------------------------------------
254 : efrank 1.6 def witOrgLoader(self, orgName ):
255 : efrank 1.4 #------------------------------------------------------------------------
256 : efrank 1.6 wxBeginBusyCursor()
257 :     w=WitFactory()
258 :     top= w.getRxnByOrg( orgName )
259 : efrank 1.12 self.to_re.AddRecoElemTree(self.parent.rootId, top)
260 :     wxEndBusyCursor()
261 :     return
262 :    
263 :     #------------------------------------------------------------------------
264 : efrank 1.14 def seedOrgLoader(self, argList ):
265 : efrank 1.12 #------------------------------------------------------------------------
266 :     wxBeginBusyCursor()
267 : efrank 1.13
268 : efrank 1.14 (theSeedFactoryMethod, org) = argList
269 :     top = apply( theSeedFactoryMethod, [org] )
270 :     # top=self.__seedDataFactory.getRecoElemByOrg( org )
271 : efrank 1.6 self.to_re.AddRecoElemTree(self.parent.rootId, top)
272 : efrank 1.14
273 : efrank 1.6 wxEndBusyCursor()
274 :     return
275 : efrank 1.4
276 : efrank 1.6 #------------------------------------------------------------------------
277 :     def witPwyLoader(self, pwyName ):
278 :     #------------------------------------------------------------------------
279 : efrank 1.2 wxBeginBusyCursor()
280 : efrank 1.6 w=WitFactory()
281 :     top= w.getRxnByPwy( pwyName )
282 : hwang 1.1 self.to_re.AddRecoElemTree(self.parent.rootId, top)
283 : efrank 1.2 wxEndBusyCursor()
284 :     return

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3