Re: Beginner question re dynamic menus

Neil Hughes <[email protected]> Fri, 28 Mar 2008 11:10:56 +0000
Newsgroups gmane.comp.python.pythoncard
Message-ID <[email protected]>
On 27/03/2008 20:23, Terry Maloney wrote:
> 
> I've figured out how to add menu items easily enough using PythonCard's 
> menu.py module's appendMenuItem method. But the 
> corresponding deleteMenuItem is only a stub. I can almost get the 
> underlying wx._core's.Menu's DeleteItem or RemoveItem to work, but not 
> quite ... I can't seem to get the parameters right, and wxPython is 
> still rather daunting at this point.
> 
> Any pointers to a faq, or a few lines of code if it's trivial, would be 
> greatly appreciated.

I managed to get something to work, but it's a bit messy and tied to my 
very simple test application, so for a 'proper' application it might not 
help much.

1. menu.py - since the function doesn't appear to do anything, change from

     def deleteMenuItem( self, aName ) :
         pass

to

     def deleteMenuItem( self, aMenuItem ) :
         self.items.remove(aMenuItem)
         self.DeleteItem(aMenuItem)


2. I then needed some sample code, so I took minimal.py, which has a 
menu with one item and after a bit of experimenting got to this:

-----------------------------
#!/usr/bin/python

"""
__version__ = "$Revision: 1.10 $"
__date__ = "$Date: 2004/04/24 22:13:31 $"
"""

from PythonCard import model

class Minimal(model.Background):

     def on_textUpdate(self, event):
         currentMenu = self.menuBar.menus[0]
         items = currentMenu.getMenuItems()

         if(len(items)):
             print "Ha! I've deleted your menu item"
             itemToDelete = items[0]
             currentMenu.deleteMenuItem(itemToDelete)

if __name__ == '__main__':
     app = model.Application(Minimal)
     app.MainLoop()
-----------------------------

What should happen is that as soon as you start typing into the text 
area, the exit menu item disappears.

-- 
Neil Hughes

-------------------------------------------------------------------------
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace