[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.20, Fri Dec 19 15:46:52 2003 UTC revision 1.25, Wed May 26 01:38:25 2004 UTC
# Line 4  Line 4 
4  from FaST.SeedDataFactory import SeedDataFactory  from FaST.SeedDataFactory import SeedDataFactory
5  from FaST.SeedDataFactory import SeedOrganism  from FaST.SeedDataFactory import SeedOrganism
6  from FaST.RecoElem import RecoElem  from FaST.RecoElem import RecoElem
7  from RecoElempanel import RecoElemWindow  from RecoElempanel           import RecoElempanel
8    from CatalogServices.Catalog import Catalog
9    
10    
11    class Catalogpanel:
 class CatalogWindow:  
12  #    def __init__(self, parent):  #    def __init__(self, parent):
13  #    def initCatEvents(self ):  #    def initCatEvents(self ):
14  #    def initCatData( self ):  #    def initCatData( self ):
# Line 40  Line 40 
40          self.initCatData()          self.initCatData()
41    
42    
43          self.seedServerMenu = wxMenu()          # setup catalog editing menu (right click)
44          self.seedServerAddId = wxNewId()  
45          self.setupSeedServerMenu()          self.catEditMenu         = wxMenu()
46            self.catEditMkItemId     = wxNewId()
47            self.catEditMkDirId      = wxNewId()
48            self.setupCatEditMenu()
49    
50          return          return
51    
# Line 50  Line 53 
53      #------------------------------------------------------------------------      #------------------------------------------------------------------------
54      def initCatEvents(self ):      def initCatEvents(self ):
55      #------------------------------------------------------------------------      #------------------------------------------------------------------------
56          button1= self.parent.OK_button  
         EVT_BUTTON(self.parent, self.parent.loadbtn.GetId(),  
                    self.onLoadBtnPress)  
57          EVT_TREE_SEL_CHANGED(self.parent.catalog_tree,          EVT_TREE_SEL_CHANGED(self.parent.catalog_tree,
58                               self.parent.catalog_treeId,                               self.parent.catalog_treeId,
59                               self.onLeftClick)                               self.onLeftClick)
# Line 63  Line 64 
64          EVT_RIGHT_DOWN(self.parent.catalog_tree, self.onRightClickCatalogTree)          EVT_RIGHT_DOWN(self.parent.catalog_tree, self.onRightClickCatalogTree)
65    
66    
67          EVT_LEFT_DCLICK (self.parent.catalog_tree, self.onLoadBtnPress)          EVT_LEFT_DCLICK (self.parent.catalog_tree, self.onLeftDClick)
68    
69            EVT_COMBOBOX(self.parent.catVersionValueComboBox,
70                         self.parent.catVersionValueComboBox.GetId(),
71                         self.onCatVersionValueComboBox)
72    
73          return          return
74    
# Line 72  Line 77 
77      #------------------------------------------------------------------------      #------------------------------------------------------------------------
78          self.parent.catalogRootId = self.parent.catalog_tree.AddRoot("Data Sources")          self.parent.catalogRootId = self.parent.catalog_tree.AddRoot("Data Sources")
79    
80          bssItemId=self.parent.catalog_tree.AppendItem(self.parent.catalogRootId,          #bssItemId=self.parent.catalog_tree.AppendItem(self.parent.catalogRootId,
81                                                     "BioSimScratch" )          #                                           "BioSimScratch" )
82          witItemId=self.parent.catalog_tree.AppendItem(self.parent.catalogRootId,          #witItemId=self.parent.catalog_tree.AppendItem(self.parent.catalogRootId,
83                                                     "WIT3" )          #                                           "WIT3" )
84          self.seedItemId=self.parent.catalog_tree.AppendItem(self.parent.catalogRootId,          #self.seedItemId=self.parent.catalog_tree.AppendItem(self.parent.catalogRootId,
85                                                     "Seed" )          #                                           "Seed" )
86    
87          self.loadBssCatalog( bssItemId )          #self.loadBssCatalog( bssItemId )
88          self.loadWitCatalog( witItemId )          #self.loadWitCatalog( witItemId )
89    
90          localSeedServer        = "http://localhost/FIG/"          localSeedServer        = "http://localhost/FIG/"
91  #        localSeedServer        = "http://float179.mcs.anl-external.org/FIG/"  #        localSeedServer        = "http://float179.mcs.anl-external.org/FIG/"
92          self.loadSeedCatalog( localSeedServer)          #self.loadSeedCatalog( localSeedServer)
93    
94            self.loadCatalog()
95    
96    
97          self.parent.catalog_tree.Expand( self.parent.catalogRootId)          self.parent.catalog_tree.Expand( self.parent.catalogRootId)
98          return          return
99    
100      #------------------------------------------------------------------      #------------------------------------------------------------------
101      def setupSeedServerMenu(self):      def setupCatEditMenu(self):
102      #------------------------------------------------------------------      #------------------------------------------------------------------
         self.seedServerAddId = wxNewId()  
103    
104          self.seedServerMenu.Append( self.seedServerAddId,          self.catEditMenu.Append( self.catEditMkDirId,
105                                        "Add Seed Server", "New seed server arg3" )                                   "New Directory", "NewDirectory" )
106          EVT_MENU(self.parent, self.seedServerAddId, self.doSeedServerAdd)          EVT_MENU(self.parent, self.catEditMkDirId, self.doCatEditMkDir)
107    
108            self.catEditMenu.Append( self.catEditMkItemId,
109                                     "New Item", "NewDirectory" )
110            EVT_MENU(self.parent, self.catEditMkItemId, self.doCatEditMkItem)
111    
112            return
113    
114      #------------------------------------------------------------------------      #------------------------------------------------------------------------
115      def loadBssCatalog(self, bssItemId):      def loadBssCatalog(self, bssItemId):
116      #------------------------------------------------------------------------      #------------------------------------------------------------------------
117          b=BssFactory()          b=BssFactory()
118            Catalog.instance().addDataFactory( b )
119          for catEntryTuple in b.getLsCat():          for catEntryTuple in b.getLsCat():
120              id=self.parent.catalog_tree.AppendItem(bssItemId, catEntryTuple[0])              id=self.parent.catalog_tree.AppendItem(bssItemId, catEntryTuple[0])
121              self.parent.catalog_tree.SetPyData(id, (self.bssLoader, catEntryTuple) )              self.parent.catalog_tree.SetPyData(id, (self.bssLoader, catEntryTuple, id) )
122    
123          return          return
124    
# Line 112  Line 126 
126      def loadWitCatalog(self, witItemId):      def loadWitCatalog(self, witItemId):
127      #------------------------------------------------------------------------      #------------------------------------------------------------------------
128          w=WitFactory()          w=WitFactory()
129            Catalog.instance().addDataFactory( w )
130          pwyItemId=self.parent.catalog_tree.AppendItem(witItemId, "Pathways" )          pwyItemId=self.parent.catalog_tree.AppendItem(witItemId, "Pathways" )
131    
132          pwyList = w.listPathways( )          pwyList = w.listPathways( )
133          for pwy in pwyList:          for pwy in pwyList:
134              id=self.parent.catalog_tree.AppendItem(pwyItemId, pwy)              id=self.parent.catalog_tree.AppendItem(pwyItemId, pwy)
135              self.parent.catalog_tree.SetPyData(id, (self.witPwyLoader,pwy) )              self.parent.catalog_tree.SetPyData(id, (self.witPwyLoader,pwy, id) )
136    
137          orgItemId=self.parent.catalog_tree.AppendItem(witItemId, "Organisms" )          orgItemId=self.parent.catalog_tree.AppendItem(witItemId, "Organisms" )
138    
139          orgList = w.listOrganisms( )          orgList = w.listOrganisms( )
140          for org in orgList:          for org in orgList:
141              id=self.parent.catalog_tree.AppendItem(orgItemId, org)              id=self.parent.catalog_tree.AppendItem(orgItemId, org)
142              self.parent.catalog_tree.SetPyData(id, (self.witOrgLoader, org ))              self.parent.catalog_tree.SetPyData(id, (self.witOrgLoader, org, id ))
143    
144            return
145    
146        #------------------------------------------------------------------------
147        def loadCatalog(self):
148        #------------------------------------------------------------------------
149            wxBeginBusyCursor()
150    
151            localSeedServer        = "http://localhost/FIG/"
152            seedFactory   = SeedDataFactory( localSeedServer )
153            b             = BssFactory()
154    
155            try:
156                Catalog.instance().addDataFactory( seedFactory )
157                Catalog.instance().addDataFactory( b )
158            except:
159                self.parent.error("loadCatalog: error" )
160                wxEndBusyCursor()
161                return
162    
163            top = Catalog.instance().getCatalogTop()
164            self.recurseCatalog( top, self.parent.catalog_tree, self.parent.catalogRootId)
165    
166            wxEndBusyCursor()
167    
168          return          return
169    
# Line 134  Line 172 
172      #------------------------------------------------------------------------      #------------------------------------------------------------------------
173          wxBeginBusyCursor()          wxBeginBusyCursor()
174    
175            seedFactory   = SeedDataFactory( seedServer )
176    
177            # add it to the list in the catalog
178            try:
179                Catalog.instance().addDataFactory( seedFactory )
180            except:
181                self.parent.error("loadSeedCatalog: %s already in foundry list." % seedServer)
182                wxEndBusyCursor()
183                return
184    
185            top = seedFactory.getCatalogTop()
186            #self.recurseCatalog( top, self.parent.catalog_tree, self.seedItemId )
187            self.recurseCatalog( top, self.parent.catalog_tree, self.parent.catalogRootId)
188    
189            wxEndBusyCursor()
190    
191            return
192    
193        #------------------------------------------------------------------------
194        def recurseCatalog( self, catEntry, parentTree, parentItemId):
195        #------------------------------------------------------------------------
196            """
197            terminal nodes have FoundryItemKeys associated with them that we
198            can read if requested.  associate that key and a handler with the
199            wxTree item in that case.
200            """
201    
202            newItemId=parentTree.AppendItem(parentItemId, catEntry.name() )
203    
204            parentTree.SetPyData( newItemId,
205                                  (self.recoElemLoader, catEntry, newItemId )
206                                  )
207    
208            if ( not catEntry.isTerminal() ):
209                for e in catEntry.entries():
210                    self.recurseCatalog( e, parentTree, newItemId)
211    
212            # not efficient becaure of re-sort
213    
214            parentTree.SortChildren( newItemId )
215    
216            return
217    
218        #------------------------------------------------------------------------
219        def OLDloadSeedCatalog(self, seedServer ):
220        #------------------------------------------------------------------------
221            wxBeginBusyCursor()
222    
223          # The SeedDataFactory ctor is slow and actually reads a bunch of          # The SeedDataFactory ctor is slow and actually reads a bunch of
224          # data from the server          # data from the server
225    
# Line 141  Line 227 
227    
228          # add it to the list in the catalog          # add it to the list in the catalog
229          try:          try:
230              self.parent.factoryMgr.addFactory( seedServer, seedFactory )              Catalog.instance().addDataFactory( seedFactory )
231          except:          except:
232              self.parent.error("loadSeedCatalog: %s already in foundry list." % seedServer)              self.parent.error("loadSeedCatalog: %s already in foundry list." % seedServer)
233              wxEndBusyCursor()              wxEndBusyCursor()
# Line 164  Line 250 
250          spontaneousRxItemId=self.parent.catalog_tree.AppendItem(newSeedItemId, itemName)          spontaneousRxItemId=self.parent.catalog_tree.AppendItem(newSeedItemId, itemName)
251          self.parent.catalog_tree.SetPyData(spontaneousRxItemId,          self.parent.catalog_tree.SetPyData(spontaneousRxItemId,
252                                             (self.seedRecoElemLoader,                                             (self.seedRecoElemLoader,
253                                             (seedFactory.getRecoElemSpontaneousRx, None) ))                                             (seedFactory.getRecoElemSpontaneousRx, None),
254                                                spontaneousRxItemId ))
255    
256    
257          orgItemId=self.parent.catalog_tree.AppendItem(newSeedItemId, "Organisms" )          orgItemId=self.parent.catalog_tree.AppendItem(newSeedItemId, "Organisms" )
258          for org in orgList:          for org in orgList:
259              id=self.parent.catalog_tree.AppendItem(orgItemId, org.figOrgName )              id=self.parent.catalog_tree.AppendItem(orgItemId, org.figOrgName )
260              self.parent.catalog_tree.SetPyData(id, (self.seedRecoElemLoader,              self.parent.catalog_tree.SetPyData(id, (self.seedRecoElemLoader,
261                                                     (seedFactory.getRecoElemByOrg, org) ))                                                     (seedFactory.getRecoElemByOrg, org), id) )
262    
263    
264          wxEndBusyCursor()          wxEndBusyCursor()
# Line 184  Line 271 
271    
272          catEntryTuple = self.parent.tree_ctr.GetPyData(item)          catEntryTuple = self.parent.tree_ctr.GetPyData(item)
273          if (catEntryTuple == None ):          if (catEntryTuple == None ):
274                print "None value for catEntryTuple"
275              return              return
276          self.selected = catEntryTuple          self.selected = catEntryTuple
277            catEntry   = catEntryTuple[1]
278    
279            ##
280            # update the history information display
281            ##
282    
283            theBox = self.parent.catVersionValueComboBox
284            theBox.Clear()
285    
286            if ( not catEntry.isTerminal() ):
287                self.parent.catPathValue.SetLabel( catEntry.path() )
288                self.parent.catVersionValueComboBox.SetLabel( "")
289                self.parent.catHistoryDateValue.SetLabel( "" )
290                self.parent.catHistoryUserValue.SetLabel( "" )
291                self.parent.catHistoryCreatedFromValue.SetLabel( "")
292            else:
293                versions   = catEntry.versions()
294                if ( [] == versions ):
295                    self.parent.catPathValue.SetLabel( catEntry.path()+";[None]" )
296                else:
297                    maxVersion = max( versions )
298                    for v in versions:
299                        theBox.Append( "%s" % (v ) )
300                        theBox.SetValue( "%s" % (maxVersion) )
301                    self.parent.catPathValue.SetLabel(catEntry.path()+";[%s]" % (maxVersion))
302                #
303                self.parent.catHistoryDateValue.SetLabel( "no date info yet" )
304                self.parent.catHistoryUserValue.SetLabel( "no user info yet" )
305                self.parent.catHistoryCreatedFromValue.SetLabel( "no history info yet" )
306    
307          return          return
308    
309    
310        #------------------------------------------------------------------------
311        def onCatVersionValueComboBox(self, event):
312        #------------------------------------------------------------------------
313            """
314            Handles activity in combo box where user sets Verion to use
315            """
316    
317            # get the value selected in the combo box.
318            choice = event.GetString()
319    
320            # the operation is interpreted relative to the currently selected
321            # catalogEntry.  find what that is.
322    
323            catEntry   = self.selected[1]
324    
325            # update stuff
326            #version = self.parent.catVersionValueComboBox.GetValue()
327            self.parent.catPathValue.SetLabel( catEntry.path()+";[%s]" % (choice) )
328    
329            return
330    
331    
332      #------------------------------------------------------------------------      #------------------------------------------------------------------------
333      def onRightClickCatalogTree(self, event):      def onRightClickCatalogTree(self, event):
334      #------------------------------------------------------------------------      #------------------------------------------------------------------------
335    
336          goober = event.GetEventObject()          goober = event.GetEventObject()
337          goober.PopupMenu(self.seedServerMenu, event.GetPosition())          goober.PopupMenu(self.catEditMenu, event.GetPosition())
338    
339          return          return
340    
341      #------------------------------------------------------------------------      #------------------------------------------------------------------------
342      def doSeedServerAdd(self, event):      def doCatEditMkDir( self, event ):
343      #------------------------------------------------------------------------      #------------------------------------------------------------------------
344          prompt = "Name of Seed server"          if (None == self.selected):
345                self.parent.error( "A selection is required first.")
346                return
347    
348            catEntryTuple = self.selected
349            catEntry      = catEntryTuple[1]
350            treeItemId    = catEntryTuple[2]
351    
352            if (catEntry.isTerminal()):
353                self.parent.error("Directories can not be added to items.")
354                return
355    
356            prompt = "New catalog directory name:"
357          dlg = wxTextEntryDialog(self.parent, message=prompt, style=wxOK)          dlg = wxTextEntryDialog(self.parent, message=prompt, style=wxOK)
358    
359          if ( dlg.ShowModal() == wxID_OK):          if ( dlg.ShowModal() == wxID_OK):
360              serverName = dlg.GetValue()              theName = dlg.GetValue()
361              if ( serverName=="" ): return              if ( theName=="" ): return
362              dlg.Destroy()              dlg.Destroy()
363          else:          else:
364              #didn't get a kid name              #didn't get a kid name
365              dlg.Destroy()              dlg.Destroy()
366              return              return
367    
368          self.loadSeedCatalog( serverName )          try:
369                newCatEntry=catEntry.mkDir( theName )
370                parentTree=self.parent.catalog_tree
371                newItemId=parentTree.AppendItem(treeItemId, newCatEntry.name() )
372                parentTree.SetPyData( newItemId,
373                                      (self.recoElemLoader, newCatEntry, newItemId )  )
374    
375                parentTree.SortChildren( treeItemId )
376            except:
377                self.parent.error( "Operation refused." )
378    
379    
380          return          return
381    
382      #------------------------------------------------------------------------      #------------------------------------------------------------------------
383      def onLeftDClick(self,treeEvent):      def doCatEditMkItem( self, event ):
384      #------------------------------------------------------------------------      #------------------------------------------------------------------------
385          self.onLoadBtnPress(treeEvent)          if (None == self.selected):
386                self.parent.error( "A selection is required first.")
387                return
388    
389          pt = treeEvent.GetPosition()          catEntryTuple = self.selected
390          item = self.parent.tree_ctr.HitTest(pt)          catEntry      = catEntryTuple[1]
391          print item          treeItemId    = catEntryTuple[2]
392          catEntryTuple = self.parent.tree_ctr.GetPyData(item)  
393          apply(catEntryTuple[0], catEntryTuple[1])          if (catEntry.isTerminal()):
394                self.parent.error("Items can not be added to items. Add to a directory.")
395          return          return
396    
397          pt = treeEvent.GetPosition()          prompt = "New catalog entry name:"
398            dlg = wxTextEntryDialog(self.parent, message=prompt, style=wxOK)
399    
400          item = self.parent.tree_ctr.HitTest(pt)          if ( dlg.ShowModal() == wxID_OK):
401                theName = dlg.GetValue()
402                if ( theName=="" ): return
403                dlg.Destroy()
404            else:
405                #didn't get a kid name
406                dlg.Destroy()
407                return
408    
409          print item          try:
410          catEntryTuple = self.parent.tree_ctr.GetPyData(item)              newCatEntry = catEntry.mkItem( theName )
411          #print catEntryTuple, "catEntryTuple"              parentTree=self.parent.catalog_tree
412          #self.selected = catEntryTuple              newItemId=parentTree.AppendItem(treeItemId, newCatEntry.name() )
413                parentTree.SetPyData( newItemId,
414                                      (self.recoElemLoader, newCatEntry, newItemId )  )
415    
416                parentTree.SortChildren( treeItemId )
417            except:
418                self.parent.error( "Operation refused." )
419    
         #catEntryTuple = self.selected  
         #apply(catEntryTuple[0], [catEntryTuple[1]])  
420    
421          return          return
422    
423    
424      #------------------------------------------------------------------------      #------------------------------------------------------------------------
425      def onLoadBtnPress(self, event):      def onLeftDClick(self, event):
426      #------------------------------------------------------------------------      #------------------------------------------------------------------------
427          if ( self.selected == None ):          if ( self.selected == None ):
428              print "No selection in onLoadBtnPress"              print "No selection in onLoadBtnPress"
# Line 257  Line 434 
434          return          return
435    
436      #------------------------------------------------------------------------      #------------------------------------------------------------------------
437        def recoElemLoader(self,  argList ):
438        #------------------------------------------------------------------------
439            wxBeginBusyCursor()
440    
441            (catalogEntry) = argList
442    
443            if (catalogEntry.isTerminal() ):
444                top = catalogEntry.getRecoElem()
445                self.to_re.AddRecoElemTree(self.parent.rootId, top, catalogEntry)
446            else:
447                # current selection is directory. can't load that!
448                wxEndBusyCursor()
449                return
450    
451    
452            wxEndBusyCursor()
453            return
454    
455        #------------------------------------------------------------------------
456      def bssLoader( self, bssCatEntry ):      def bssLoader( self, bssCatEntry ):
457      #------------------------------------------------------------------------      #------------------------------------------------------------------------
458          wxBeginBusyCursor()          wxBeginBusyCursor()

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

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3