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

Diff of /PyGUI/Catalogpanel.py

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.5, Fri Aug 1 20:53:06 2003 UTC revision 1.18, Thu Nov 13 19:21:46 2003 UTC
# Line 1  Line 1 
1  from wxPython.wx import *  from wxPython.wx import *
2  from FaST.BssFactory import BssFactory  from FaST.BssFactory import BssFactory
3  from FaST.WitFactory import WitFactory  from FaST.WitFactory import WitFactory
4    from FaST.SeedDataFactory import SeedDataFactory
5    from FaST.SeedDataFactory import SeedOrganism
6  from FaST.RecoElem import RecoElem  from FaST.RecoElem import RecoElem
7  from RecoElempanel import RecoElemWindow  from RecoElempanel import RecoElemWindow
8    
9    
10    
11  class CatalogWindow:  class CatalogWindow:
12    #    def __init__(self, parent):
13    #    def initCatEvents(self ):
14    #    def initCatData( self ):
15    #    def loadBssCatalog(self, bssItemId):
16    #    def loadWitCatalog(self, witItemId):
17    #    def loadSeedCatalog(self, witItemId):
18    #    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      #------------------------------------------------------------------------      #------------------------------------------------------------------------
25      def __init__(self, parent):      def __init__(self, parent):
26      #------------------------------------------------------------------------      #------------------------------------------------------------------------
27          self.parent = parent          self.parent = parent
28    
29          self.to_re = parent.re          self.to_re = parent.re
30          self.selected = None       #remember last selected catalog entry          self.selected = None       #remember last selected catalog entry
31                                     #..is used when LOAD button is hit.                                     #..is used when LOAD button is hit.
32    
33            # 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          self.initCatEvents()          self.initCatEvents()
40          self.initCatData()          self.initCatData()
41    
42    
43            self.seedServerMenu = wxMenu()
44            self.seedServerAddId = wxNewId()
45            self.setupSeedServerMenu()
46    
47          return          return
48    
49    
# Line 24  Line 53 
53          button1= self.parent.OK_button          button1= self.parent.OK_button
54          EVT_BUTTON(self.parent, self.parent.loadbtn.GetId(),          EVT_BUTTON(self.parent, self.parent.loadbtn.GetId(),
55                     self.onLoadBtnPress)                     self.onLoadBtnPress)
56            EVT_TREE_SEL_CHANGED(self.parent.catalog_tree,
57                                 self.parent.catalog_treeId,
58                                 self.onLeftClick)
59    
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    
69          return          return
70    
71      #------------------------------------------------------------------------      #------------------------------------------------------------------------
# Line 35  Line 77 
77                                                     "BioSimScratch" )                                                     "BioSimScratch" )
78          witItemId=self.parent.catalog_tree.AppendItem(self.parent.catalogRootId,          witItemId=self.parent.catalog_tree.AppendItem(self.parent.catalogRootId,
79                                                     "WIT3" )                                                     "WIT3" )
80            self.seedItemId=self.parent.catalog_tree.AppendItem(self.parent.catalogRootId,
81                                                       "Seed" )
82    
83          self.loadBssCatalog( bssItemId )          self.loadBssCatalog( bssItemId )
84  #        self.loadWitCatalog( witItemId )          self.loadWitCatalog( witItemId )
85    
86            localSeedServer        = "http://localhost/FIG/"
87    #        localSeedServer        = "http://float179.mcs.anl-external.org/FIG/"
88            self.loadSeedCatalog( localSeedServer)
89    
90            self.parent.catalog_tree.Expand( self.parent.catalogRootId)
91          return          return
92    
93        #------------------------------------------------------------------
94        def setupSeedServerMenu(self):
95        #------------------------------------------------------------------
96            self.seedServerAddId = wxNewId()
97    
98            self.seedServerMenu.Append( self.seedServerAddId,
99                                          "Add Seed Server", "New seed server arg3" )
100            EVT_MENU(self.parent, self.seedServerAddId, self.doSeedServerAdd)
101    
102      #------------------------------------------------------------------------      #------------------------------------------------------------------------
103      def loadBssCatalog(self, bssItemId):      def loadBssCatalog(self, bssItemId):
104      #------------------------------------------------------------------------      #------------------------------------------------------------------------
105          b=BssFactory()          b=BssFactory()
106          for catEntryTuple in b.getLsCat():          for catEntryTuple in b.getLsCat():
107              id=self.parent.catalog_tree.AppendItem(bssItemId, catEntryTuple[0])              id=self.parent.catalog_tree.AppendItem(bssItemId, catEntryTuple[0])
108              self.parent.catalog_tree.SetPyData(id, catEntryTuple)              self.parent.catalog_tree.SetPyData(id, (self.bssLoader, catEntryTuple) )
             EVT_TREE_SEL_CHANGED(self.parent.catalog_tree,  
                                  self.parent.catalog_treeId,  
                                  self.onLeftClickBss)  
109    
110          return          return
111    
# Line 57  Line 113 
113      def loadWitCatalog(self, witItemId):      def loadWitCatalog(self, witItemId):
114      #------------------------------------------------------------------------      #------------------------------------------------------------------------
115          w=WitFactory()          w=WitFactory()
116    
117            pwyItemId=self.parent.catalog_tree.AppendItem(witItemId, "Pathways" )
118    
119          pwyList = w.listPathways( )          pwyList = w.listPathways( )
120          for pwy in pwyList:          for pwy in pwyList:
121              id=self.parent.catalog_tree.AppendItem(witItemId, pwy)              id=self.parent.catalog_tree.AppendItem(pwyItemId, pwy)
122              self.parent.catalog_tree.SetPyData(id, pwy)              self.parent.catalog_tree.SetPyData(id, (self.witPwyLoader,pwy) )
123              EVT_LEFT_DOWN(self.parent.catalog_tree, self.onLeftClickWitPwy)  
124            orgItemId=self.parent.catalog_tree.AppendItem(witItemId, "Organisms" )
125    
126            orgList = w.listOrganisms( )
127            for org in orgList:
128                id=self.parent.catalog_tree.AppendItem(orgItemId, org)
129                self.parent.catalog_tree.SetPyData(id, (self.witOrgLoader, org ))
130    
131          return          return
132    
133      #------------------------------------------------------------------------      #------------------------------------------------------------------------
134      def InitLsCat(self):      def loadSeedCatalog(self, seedServer ):
135      #------------------------------------------------------------------------      #------------------------------------------------------------------------
136            wxBeginBusyCursor()
137    
138            # The SeedDataFactory ctor is slow and actually reads a bunch of
139            # data from the server
140    
141            seedFactory   = SeedDataFactory( seedServer )
142    
143            # add it to the list in the catalog
144            self.parent.factoryMgr.addFactory( seedServer, seedFactory )
145    
146            # make an entry in the tree for it
147            #
148            newSeedItemId=self.parent.catalog_tree.AppendItem(self.seedItemId, seedServer )
149    
150            # jam in the data
151            #
152            orgList = seedFactory.listOrganisms( )
153            if ( orgList== None ):
154                orgItemId=self.parent.catalog_tree.AppendItem(newSeedItemId,
155                             "Could not get Org list from "+ seedServer )
156                wxEndBusyCursor()
157                return
158    
159            itemName="Spontaneous Reactions"
160            spontaneousRxItemId=self.parent.catalog_tree.AppendItem(newSeedItemId, itemName)
161            self.parent.catalog_tree.SetPyData(spontaneousRxItemId,
162                                               (self.seedRecoElemLoader,
163                                               (seedFactory.getRecoElemSpontaneousRx, None) ))
164    
165    
166            orgItemId=self.parent.catalog_tree.AppendItem(newSeedItemId, "Organisms" )
167            for org in orgList:
168                id=self.parent.catalog_tree.AppendItem(orgItemId, org.figOrgName )
169                self.parent.catalog_tree.SetPyData(id, (self.seedRecoElemLoader,
170                                                       (seedFactory.getRecoElemByOrg, org) ))
171    
172    
173            wxEndBusyCursor()
174          return          return
175    
176      #------------------------------------------------------------------------      #------------------------------------------------------------------------
177      def onLeftClickBss(self,treeEvent):      def onLeftClick(self,treeEvent):
178      #------------------------------------------------------------------------      #------------------------------------------------------------------------
 #        pt=event.GetPosition()  
 #        item, flags= self.parent.catalog_tree.HitTest(pt)  
179          item = treeEvent.GetItem()          item = treeEvent.GetItem()
180    
181          catEntryTuple = self.parent.tree_ctr.GetPyData(item)          catEntryTuple = self.parent.tree_ctr.GetPyData(item)
182          if (catEntryTuple == None ):          if (catEntryTuple == None ):
             print "No catEntry"  
183              return              return
184            self.selected = catEntryTuple
185    
186            return
187    
188        #------------------------------------------------------------------------
189        def onRightClickCatalogTree(self, event):
190        #------------------------------------------------------------------------
191    
192            goober = event.GetEventObject()
193            goober.PopupMenu(self.seedServerMenu, event.GetPosition())
194    
195            return
196    
197        #------------------------------------------------------------------------
198        def doSeedServerAdd(self, event):
199        #------------------------------------------------------------------------
200            prompt = "Name of Seed server"
201            dlg = wxTextEntryDialog(self.parent, message=prompt, style=wxOK)
202    
203            if ( dlg.ShowModal() == wxID_OK):
204                serverName = dlg.GetValue()
205                if ( serverName=="" ): return
206                dlg.Destroy()
207          else:          else:
208              print catEntryTuple              #didn't get a kid name
209          self.selected = catEntryTuple[1]              dlg.Destroy()
210                return
211    
212            self.loadSeedCatalog( serverName )
213    
214          return          return
215    
216      #------------------------------------------------------------------------      #------------------------------------------------------------------------
217      def onLeftClickWitPwy(self,event):      def onLeftDClick(self,treeEvent):
218      #------------------------------------------------------------------------      #------------------------------------------------------------------------
219          pt=event.GetPosition()          self.onLoadBtnPress(treeEvent)
220          item, flags = self.parent.catalog_tree.HitTest(pt)  
221          pwy = self.parent.tree_ctr.GetPyData(item)          pt = treeEvent.GetPosition()
222          print "request to fetch pathway from wit: ", pwy          item = self.parent.tree_ctr.HitTest(pt)
223            print item
224            catEntryTuple = self.parent.tree_ctr.GetPyData(item)
225            apply(catEntryTuple[0], catEntryTuple[1])
226            return
227    
228            pt = treeEvent.GetPosition()
229    
230            item = self.parent.tree_ctr.HitTest(pt)
231    
232            print item
233            catEntryTuple = self.parent.tree_ctr.GetPyData(item)
234            #print catEntryTuple, "catEntryTuple"
235            #self.selected = catEntryTuple
236    
237            #catEntryTuple = self.selected
238            #apply(catEntryTuple[0], [catEntryTuple[1]])
239    
240          return          return
241    
# Line 100  Line 243 
243      #------------------------------------------------------------------------      #------------------------------------------------------------------------
244      def onLoadBtnPress(self, event):      def onLoadBtnPress(self, event):
245      #------------------------------------------------------------------------      #------------------------------------------------------------------------
246          if ( self.selected == None ): return          if ( self.selected == None ):
247                print "No selection in onLoadBtnPress"
248                return
249    
250            catEntryTuple = self.selected
251            apply( catEntryTuple[0], [catEntryTuple[1]] )
252    
253            return
254    
255        #------------------------------------------------------------------------
256        def bssLoader( self, bssCatEntry ):
257        #------------------------------------------------------------------------
258          wxBeginBusyCursor()          wxBeginBusyCursor()
259          b=BssFactory()          b=BssFactory()
260          top= b.getRecoElemById( self.selected )          top= b.getRecoElemById( bssCatEntry[1] )
261            self.to_re.AddRecoElemTree(self.parent.rootId, top)
262            wxEndBusyCursor()
263    
264            return
265    
266        #------------------------------------------------------------------------
267        def witOrgLoader(self,  orgName ):
268        #------------------------------------------------------------------------
269            wxBeginBusyCursor()
270            w=WitFactory()
271            top= w.getRxnByOrg( orgName )
272          self.to_re.AddRecoElemTree(self.parent.rootId, top)          self.to_re.AddRecoElemTree(self.parent.rootId, top)
273          wxEndBusyCursor()          wxEndBusyCursor()
274          return          return
275    
276        #------------------------------------------------------------------------
277        def seedRecoElemLoader(self,  argList ):
278        #------------------------------------------------------------------------
279            wxBeginBusyCursor()
280    
281            (theSeedFactoryMethod, org) = argList
282            top = apply( theSeedFactoryMethod, [org] )
283            # top=self.__seedDataFactory.getRecoElemByOrg( org )
284            self.to_re.AddRecoElemTree(self.parent.rootId, top)
285    
286            wxEndBusyCursor()
287            return
288    
289        #------------------------------------------------------------------------
290        def witPwyLoader(self,  pwyName ):
291        #------------------------------------------------------------------------
292            wxBeginBusyCursor()
293            w=WitFactory()
294            top= w.getRxnByPwy( pwyName )
295            self.to_re.AddRecoElemTree(self.parent.rootId, top)
296            wxEndBusyCursor()
297            return

Legend:
Removed from v.1.5  
changed lines
  Added in v.1.18

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3