On Mar 1, 2009, at 2:01 PM, Ricardo Aráoz wrote:

> Hi, need some help. This is my first hand coded form, I need it to be
> hand coded because the form's menu will be data driven.
> So I just wanted a blue form with a menu, this is what I've come up so
> far (obviously does not do what I want).
> Any kind soul wishes to point out what I'm doing wrong? TIA


>> def doOpen():
>>        dabo.ui.info('Función Open ejecutada', title='Atención!')
>>
>> def doClose():
>>        dabo.ui.info('Función Close ejecutada', title='Atención!')
>>
>> def doEdit():
>>        dabo.ui.info('Función Edit ejecutada', title='Atención!')

        All of these are event handlers, and thus will be called with an  
event object passed to them. Change them all to add 'evt' as a  
parameter; e.g.: def doOpen(evt):

>> def main():
>>        app = dabo.dApp()
>>        app.setup()
>>        # instantiate the form
>>        form = dabo.ui.dForm(app.MainForm, Caption="Hello, Dabo  
>> users!")

        At this point the form's menu bar has already been created. Since you  
aren't creating a form class, but rather an instance, you have to tell  
it what menu bar class to create, or you'll get the default menu bar.  
If you want a plain menu, then change this to:

form = dabo.ui.dForm(app.MainForm, Caption="Hello, Dabo users!",  
MenuBarClass=dabo.ui.dMenuBar)

>>        mb = dabo.ui.dMenuBar()

        Since the menu bar you want already exists, just reference that: mb =  
form.MenuBar

>>        mfile = dabo.ui.dMenu()
>>        mfile.Caption = '&File'
>>        mfile.append('Open', HotKey='Ctrl+D', OnHit=doOpen,  
>> help='Abrir un archivo')
>>        mfile.append('Close', HotKey='Ctrl+L', OnHit=doClose,  
>> help='Cerrar un archivo')
>>        mfile.appendSeparator()
>>        mfile.append('Edit', HotKey='Ctrl+E', OnHit=doEdit,  
>> help='Editar algo')
>>

        You never append the menu to the menu bar. You need to call  
mb.append(mfile)

>>        panel = dabo.ui.dPanel(form)
>>        panel.BackColor = 'blue'
>>        panel.Sizer = dabo.ui.dSizer("v")

        You haven't added the panel to the form's sizer. You need to call:

form.Sizer.append(panel, 1, "x")

...if you want it to fill the form. The '1' is the proportion, and 'x'  
means 'expand'. Since this is a common call, I added a shortcut:

form.Sizer.append1x(panel)

>>        #form.addObject(dabo.ui.dPanel, "tbox")
>>        #form.tbox.Value = "Cool stuff!"
>>        #form.tbox.FontBold = True
>>        # show the form
>>        app.SetMenuBar(mb)

        Application objects do not have menu bars; forms do. Just add:  
form.MenuBar = mb

>>        form.Show()

        You're calling the wxPython version of the method, not the Dabo  
wrapped version. Case matters, and the Dabo version is lower case:  
form.show().

>>        app.start()


        Try it with the changes I suggested. If the explanations aren't  
clear, let me know.


-- Ed Leafe




_______________________________________________
Post Messages to: [email protected]
Subscription Maintenance: http://leafe.com/mailman/listinfo/dabo-users
Searchable Archives: http://leafe.com/archives/search/dabo-users
This message: 
http://leafe.com/archives/byMID/[email protected]

Reply via email to