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

Legend:
Removed from v.1.2  
changed lines
  Added in v.1.20

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3