[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.3, Fri Aug 1 15:33:39 2003 UTC revision 1.19, Thu Nov 13 21:41:08 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
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()
40            self.initCatData()
41    
42    
43            self.seedServerMenu = wxMenu()
44            self.seedServerAddId = wxNewId()
45            self.setupSeedServerMenu()
46    
47            return
48    
49    
50        #------------------------------------------------------------------------
51        def initCatEvents(self ):
52        #------------------------------------------------------------------------
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
70    
71        #------------------------------------------------------------------------
72        def initCatData( self ):
73        #------------------------------------------------------------------------
74            self.parent.catalogRootId = self.parent.catalog_tree.AddRoot("Data Sources")
75    
76            bssItemId=self.parent.catalog_tree.AppendItem(self.parent.catalogRootId,
77                                                       "BioSimScratch" )
78            witItemId=self.parent.catalog_tree.AppendItem(self.parent.catalogRootId,
79                                                       "WIT3" )
80            self.seedItemId=self.parent.catalog_tree.AppendItem(self.parent.catalogRootId,
81                                                       "Seed" )
82    
83            self.loadBssCatalog( bssItemId )
84            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      def InitLsCat(self):      #------------------------------------------------------------------
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):
104        #------------------------------------------------------------------------
105          b=BssFactory()          b=BssFactory()
106          cpanel_list = b.getLsCat()          for catEntryTuple in b.getLsCat():
107                id=self.parent.catalog_tree.AppendItem(bssItemId, catEntryTuple[0])
108                self.parent.catalog_tree.SetPyData(id, (self.bssLoader, catEntryTuple) )
109    
110            return
111    
112        #------------------------------------------------------------------------
113        def loadWitCatalog(self, witItemId):
114        #------------------------------------------------------------------------
115            w=WitFactory()
116    
117            pwyItemId=self.parent.catalog_tree.AppendItem(witItemId, "Pathways" )
118    
119            pwyList = w.listPathways( )
120            for pwy in pwyList:
121                id=self.parent.catalog_tree.AppendItem(pwyItemId, pwy)
122                self.parent.catalog_tree.SetPyData(id, (self.witPwyLoader,pwy) )
123    
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
132    
133        #------------------------------------------------------------------------
134        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            try:
145                self.parent.factoryMgr.addFactory( seedServer, seedFactory )
146            except:
147                self.parent.error("loadSeedCatalog: %s already in foundry list." % seedServer)
148                wxEndBusyCursor()
149                return
150    
151            # make an entry in the tree for it
152            #
153            newSeedItemId=self.parent.catalog_tree.AppendItem(self.seedItemId, seedServer )
154    
155            # jam in the data
156            #
157            orgList = seedFactory.listOrganisms( )
158            if ( orgList== None ):
159                orgItemId=self.parent.catalog_tree.AppendItem(newSeedItemId,
160                             "Could not get Org list from "+ seedServer )
161                wxEndBusyCursor()
162                return
163    
164            itemName="Spontaneous Reactions"
165            spontaneousRxItemId=self.parent.catalog_tree.AppendItem(newSeedItemId, itemName)
166            self.parent.catalog_tree.SetPyData(spontaneousRxItemId,
167                                               (self.seedRecoElemLoader,
168                                               (seedFactory.getRecoElemSpontaneousRx, None) ))
169    
170    
171            orgItemId=self.parent.catalog_tree.AppendItem(newSeedItemId, "Organisms" )
172            for org in orgList:
173                id=self.parent.catalog_tree.AppendItem(orgItemId, org.figOrgName )
174                self.parent.catalog_tree.SetPyData(id, (self.seedRecoElemLoader,
175                                                       (seedFactory.getRecoElemByOrg, org) ))
176    
177    
178            wxEndBusyCursor()
179            return
180    
181        #------------------------------------------------------------------------
182        def onLeftClick(self,treeEvent):
183        #------------------------------------------------------------------------
184            item = treeEvent.GetItem()
185    
186            catEntryTuple = self.parent.tree_ctr.GetPyData(item)
187            if (catEntryTuple == None ):
188                return
189            self.selected = catEntryTuple
190    
191            return
192    
193        #------------------------------------------------------------------------
194        def onRightClickCatalogTree(self, event):
195        #------------------------------------------------------------------------
196    
197            goober = event.GetEventObject()
198            goober.PopupMenu(self.seedServerMenu, event.GetPosition())
199    
200            return
201    
202        #------------------------------------------------------------------------
203        def doSeedServerAdd(self, event):
204        #------------------------------------------------------------------------
205            prompt = "Name of Seed server"
206            dlg = wxTextEntryDialog(self.parent, message=prompt, style=wxOK)
207    
208            if ( dlg.ShowModal() == wxID_OK):
209                serverName = dlg.GetValue()
210                if ( serverName=="" ): return
211                dlg.Destroy()
212            else:
213                #didn't get a kid name
214                dlg.Destroy()
215                return
216    
217            self.loadSeedCatalog( serverName )
218    
219            return
220    
221        #------------------------------------------------------------------------
222        def onLeftDClick(self,treeEvent):
223        #------------------------------------------------------------------------
224            self.onLoadBtnPress(treeEvent)
225    
226            pt = treeEvent.GetPosition()
227            item = self.parent.tree_ctr.HitTest(pt)
228            print item
229            catEntryTuple = self.parent.tree_ctr.GetPyData(item)
230            apply(catEntryTuple[0], catEntryTuple[1])
231            return
232    
233         ##  for x in cpanel_list:          pt = treeEvent.GetPosition()
 ##             self.parent.catalog_listbox.Append(x[0], x[1])  
234    
235  ##         EVT_LISTBOX(self.parent, self.parent.catalog_listbox.GetId(), self.onLeftClick)          item = self.parent.tree_ctr.HitTest(pt)
         #return  
236    
237          self.parent.rootId = self.parent.catalog_tree.AddRoot("catalog item")          print item
238            catEntryTuple = self.parent.tree_ctr.GetPyData(item)
239            #print catEntryTuple, "catEntryTuple"
240            #self.selected = catEntryTuple
241    
242            #catEntryTuple = self.selected
243            #apply(catEntryTuple[0], [catEntryTuple[1]])
244    
     def onLeftClick(self,event):  
         pt=self.parent.catalog_listbox.GetSelection()  
         self.selected =int (self.parent.catalog_listbox.GetClientData(pt))  
245          return          return
246    
247    
248        #------------------------------------------------------------------------
249      def onLoadBtnPress(self, event):      def onLoadBtnPress(self, event):
250        #------------------------------------------------------------------------
251            if ( self.selected == None ):
252                print "No selection in onLoadBtnPress"
253                return
254    
255            catEntryTuple = self.selected
256            apply( catEntryTuple[0], [catEntryTuple[1]] )
257    
258            return
259    
260        #------------------------------------------------------------------------
261        def bssLoader( self, bssCatEntry ):
262        #------------------------------------------------------------------------
263          wxBeginBusyCursor()          wxBeginBusyCursor()
264          b=BssFactory()          b=BssFactory()
265          top= b.getRecoElemById( self.selected )          top= b.getRecoElemById( bssCatEntry[1] )
266            self.to_re.AddRecoElemTree(self.parent.rootId, top)
267            wxEndBusyCursor()
268    
269            return
270    
271        #------------------------------------------------------------------------
272        def witOrgLoader(self,  orgName ):
273        #------------------------------------------------------------------------
274            wxBeginBusyCursor()
275            w=WitFactory()
276            top= w.getRxnByOrg( orgName )
277            self.to_re.AddRecoElemTree(self.parent.rootId, top)
278            wxEndBusyCursor()
279            return
280    
281        #------------------------------------------------------------------------
282        def seedRecoElemLoader(self,  argList ):
283        #------------------------------------------------------------------------
284            wxBeginBusyCursor()
285    
286            (theSeedFactoryMethod, org) = argList
287            top = apply( theSeedFactoryMethod, [org] )
288            # top=self.__seedDataFactory.getRecoElemByOrg( org )
289          self.to_re.AddRecoElemTree(self.parent.rootId, top)          self.to_re.AddRecoElemTree(self.parent.rootId, top)
290    
291          wxEndBusyCursor()          wxEndBusyCursor()
292          return          return
293    
294        #------------------------------------------------------------------------
295        def witPwyLoader(self,  pwyName ):
296        #------------------------------------------------------------------------
297            wxBeginBusyCursor()
298            w=WitFactory()
299            top= w.getRxnByPwy( pwyName )
300            self.to_re.AddRecoElemTree(self.parent.rootId, top)
301            wxEndBusyCursor()
302            return

Legend:
Removed from v.1.3  
changed lines
  Added in v.1.19

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3