Re: trying to build submenu

"Werner F. Bruhin" <[email protected]> Sun, 29 Mar 2009 20:47:36 +0200
Newsgroups gmane.comp.ide.boa-constructor.user
Message-ID <[email protected]>
phmau wrote:
> OK, I have seen this example in section 2.4
> 
> But it does not explain how to creat action from a sub or a sub sub menu.
> 
> Thanks if you can help me, with such an example.
See attached is a modified version of the frame1.py from the guide 
example folder.

What you probably miss and I did not mention in the post is that you 
need to use the second icon in the menu collection editor to add your 
sub-menu to a menu.  I added it to the file menu as the last item, then 
creating the action/event on the items on the sub-menu is done exactly 
in the same way as an event for a "normal" menu item.

Hope this helps
Werner
> 
> regards,
> 
> 
> 
> Werner F. Bruhin wrote:
>> Philippe,
>>
>> phmau wrote:
>>> No it is not enough.
>>> An example or documentation could be very helpfull.
>>> My problem is to create the sub menu and to have an action associated
>>> with
>>> it, or annother subsubmenu with an action associated, under boa
>>> cosntructor.
>>> With boa constructor, I have created the name of the submenu, but I do
>>> not
>>> knon how to associate an axion.
>> Check out the "Getting Started Guide for Boa Constructor" section 2.4 
>> adding a "Menu bar" shows how to create a menu bar and menu item and how 
>> to handle/create the menu event (action).
>>
>> The working example for the above is also in the folder
>> boa/examples/guide.
>>
>> Hope this helps
>>
>> Werner
>>> Thank you.
>>>
>>>
>>> Werner F. Bruhin wrote:
>>>> Philippe,
>>>>
>>>> philippe wrote:
>>>>> Can anyone help me to build submenu with boa constructore.
>>>>> I am  trying to build an application with python.
>>>>>
>>>>> Do you have an example ? And a documentation.
>>>> A sub-menu is just a wx.Menu in a wx.Menu.
>>>>
>>>> Let me know if this is enough of a hint, otherwise I will do you a 
>>>> little sample in the next few days.
>>>>
>>>> Werner
>>>>
>>>>
>>>> ------------------------------------------------------------------------------
>>>> Apps built with the Adobe(R) Flex(R) framework and Flex Builder(TM) are
>>>> powering Web 2.0 with engaging, cross-platform capabilities. Quickly and
>>>> easily build your RIAs with Flex Builder, the Eclipse(TM)based
>>>> development
>>>> software that enables intelligent coding and step-through debugging.
>>>> Download the free 60 day trial. http://p.sf.net/sfu/www-adobe-com
>>>> _______________________________________________
>>>> Boa-constructor-users mailing list
>>>> Boa-constructor-users-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org
>>>> https://lists.sourceforge.net/lists/listinfo/boa-constructor-users
>>>>
>>>>
>>
>> ------------------------------------------------------------------------------
>> _______________________________________________
>> Boa-constructor-users mailing list
>> Boa-constructor-users-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org
>> https://lists.sourceforge.net/lists/listinfo/boa-constructor-users
>>
>>
>

------------------------------------------------------------------------------

_______________________________________________
Boa-constructor-users mailing list
Boa-constructor-users-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org
https://lists.sourceforge.net/lists/listinfo/boa-constructor-users
Frame1.py (text/x-python, 5.7 KB)
#Boa:Frame:Frame1

import wx
import Dialog2

def create(parent):
    return Frame1(parent)

[wxID_FRAME1, wxID_FRAME1STATUSBAR1, wxID_FRAME1TEXTEDITOR, 
] = [wx.NewId() for _init_ctrls in range(3)]

[wxID_FRAME1MENUFILECLOSE, wxID_FRAME1MENUFILEEXIT, wxID_FRAME1MENUFILEITEMS5, 
 wxID_FRAME1MENUFILEOPEN, wxID_FRAME1MENUFILESAVE, wxID_FRAME1MENUFILESAVEAS, 
] = [wx.NewId() for _init_coll_menuFile_Items in range(6)]

[wxID_FRAME1SUBMENUSUBMENU0] = [wx.NewId() for _init_coll_subMenu_Items in range(1)]

[wxID_FRAME1MENUHELPABOUT] = [wx.NewId() for _init_coll_menuHelp_Items in range(1)]

class Frame1(wx.Frame):
    def _init_coll_menuBar1_Menus(self, parent):
        # generated method, don't edit

        parent.Append(menu=self.menuFile, title='File')
        parent.Append(menu=self.menuHelp, title='Help')

    def _init_coll_menuHelp_Items(self, parent):
        # generated method, don't edit

        parent.Append(help='Display general information about Notebook',
              id=wxID_FRAME1MENUHELPABOUT, kind=wx.ITEM_NORMAL, text='About')
        self.Bind(wx.EVT_MENU, self.OnMenuHelpAboutMenu,
              id=wxID_FRAME1MENUHELPABOUT)

    def _init_coll_menuFile_Items(self, parent):
        # generated method, don't edit

        parent.Append(help='Open a file', id=wxID_FRAME1MENUFILEOPEN,
              kind=wx.ITEM_NORMAL, text='Open')
        parent.Append(help='Save file', id=wxID_FRAME1MENUFILESAVE,
              kind=wx.ITEM_NORMAL, text='Save')
        parent.Append(help='Save file as', id=wxID_FRAME1MENUFILESAVEAS,
              kind=wx.ITEM_NORMAL, text='Save as')
        parent.Append(help='Close file', id=wxID_FRAME1MENUFILECLOSE,
              kind=wx.ITEM_NORMAL, text='Close')
        parent.Append(help='Close program', id=wxID_FRAME1MENUFILEEXIT,
              kind=wx.ITEM_NORMAL, text='Exit')
        parent.AppendMenu(help='', id=wxID_FRAME1MENUFILEITEMS5,
              submenu=self.subMenu, text=u'the sub menu')
        self.Bind(wx.EVT_MENU, self.OnMenuFileOpenMenu,
              id=wxID_FRAME1MENUFILEOPEN)
        self.Bind(wx.EVT_MENU, self.OnMenuFileSaveMenu,
              id=wxID_FRAME1MENUFILESAVE)
        self.Bind(wx.EVT_MENU, self.OnMenuFileSaveasMenu,
              id=wxID_FRAME1MENUFILESAVEAS)
        self.Bind(wx.EVT_MENU, self.OnMenuFileExitMenu,
              id=wxID_FRAME1MENUFILEEXIT)
        self.Bind(wx.EVT_MENU, self.OnMenuFileCloseMenu,
              id=wxID_FRAME1MENUFILECLOSE)

    def _init_coll_subMenu_Items(self, parent):
        # generated method, don't edit

        parent.Append(help='', id=wxID_FRAME1SUBMENUSUBMENU0,
              kind=wx.ITEM_NORMAL, text=u'The submenu item 0')
        self.Bind(wx.EVT_MENU, self.OnSubMenuSubmenu0Menu,
              id=wxID_FRAME1SUBMENUSUBMENU0)

    def _init_coll_statusBar1_Fields(self, parent):
        # generated method, don't edit
        parent.SetFieldsCount(1)

        parent.SetStatusText(number=0, text='status')

        parent.SetStatusWidths([-1])

    def _init_utils(self):
        # generated method, don't edit
        self.menuFile = wx.Menu(title='')

        self.menuHelp = wx.Menu(title='')

        self.menuBar1 = wx.MenuBar()

        self.subMenu = wx.Menu(title=u'')

        self._init_coll_menuFile_Items(self.menuFile)
        self._init_coll_menuHelp_Items(self.menuHelp)
        self._init_coll_menuBar1_Menus(self.menuBar1)
        self._init_coll_subMenu_Items(self.subMenu)

    def _init_ctrls(self, prnt):
        # generated method, don't edit
        wx.Frame.__init__(self, id=wxID_FRAME1, name='', parent=prnt,
              pos=wx.Point(669, 347), size=wx.Size(621, 438),
              style=wx.DEFAULT_FRAME_STYLE, title='Notebook')
        self._init_utils()
        self.SetClientSize(wx.Size(605, 402))
        self.SetMenuBar(self.menuBar1)

        self.statusBar1 = wx.StatusBar(id=wxID_FRAME1STATUSBAR1,
              name='statusBar1', parent=self, style=0)
        self._init_coll_statusBar1_Fields(self.statusBar1)
        self.SetStatusBar(self.statusBar1)

        self.textEditor = wx.TextCtrl(id=wxID_FRAME1TEXTEDITOR,
              name='textEditor', parent=self, pos=wx.Point(0, 0),
              size=wx.Size(605, 359), style=wx.TE_MULTILINE, value='')

    def __init__(self, parent):
        self._init_ctrls(parent)
        self.FileName=None

    def OnMenuFileOpenMenu(self, event):
        dlg = wx.FileDialog(self, "Choose a file", ".", "", "*.*", wx.OPEN)
        try:
            if dlg.ShowModal() == wx.ID_OK:
                filename = dlg.GetPath()
                # Your code
                self.textEditor.LoadFile(filename) 
                self.FileName=filename
                self.SetTitle(('Notebook - %s') % filename)
        finally:
            dlg.Destroy()

    def OnMenuFileSaveMenu(self, event):
        if self.FileName == None:
            return self.OnFileSaveasMenu(event)
        else:
            self.textEditor.SaveFile(self.FileName)

    def OnMenuFileSaveasMenu(self, event):
        dlg = wx.FileDialog(self, "Save file as", ".", "", "*.*", wx.SAVE)
        try:
            if dlg.ShowModal() == wx.ID_OK:
                filename = dlg.GetPath()
                # Your code
                self.textEditor.SaveFile(filename) 
                self.FileName=filename
                self.SetTitle(('Notebook - %s') % filename)
        finally:
            dlg.Destroy()

    def OnMenuFileExitMenu(self, event):
        self.Close()

    def OnMenuFileCloseMenu(self, event):
        self.FileName = None
        self.txtEditor.Clear()
        self.SetTitle('Notebook')

    def OnMenuHelpAboutMenu(self, event):
        dlg = Dialog2.Dialog2(self)
        try:
            dlg.ShowModal()
        finally:
            dlg.Destroy()  

    def OnSubMenuSubmenu0Menu(self, event):
        print 'from sub menu event'
        event.Skip()