Re: [dabo-users] Pass parameters to main form

Author: John Fabiani

Posted: 2012-01-02 at 10:52:42

On Monday, January 02, 2012 07:16:24 AM Nate Lowrie wrote:

> On 1/1/2012 9:00 PM, Ed Leafe wrote:

> > On Jan 1, 2012, at 7:22 PM, OKB (not okblacke) wrote:

> >> What you mention about passing information before the form

> >> instance

> >>

> >> is created, though, makes me wonder a bit about the bigger picture. I

> >> suppose it's true that I want to pass information before the instance

> >> is

> >> created, but that's only because Dabo hides the instance creation

> >> inside

> >> its own innards. It doesn't much matter to me whether I pass my

> >> information when I create the app instance, or when I specify the

> >> app's

> >> main form, or when I do app.start(). But, as far as I can tell, at

> >> none

> >> of those three places is there a way to pass information in. Is there

> >> some other place to do it? What would it mean to pass it in after the

> >> instance is created? It seems like that would mean passing it in once

> >> the GUI app is already up and running, but that defeats the purpose of

> >> passing it in order to influence initialization.

> >>

> > Like I said above, I don't believe that anyone has ever suggested this

> > approach to customization before. The only thing even close would be

> > forms that read some sort of .ini file or similar when they are

> > created, but that doesn't seem to be what you're doing. You want to

> > be able to create the app with parameters and have the form receive

> > them. Maybe we could add a MainFormParameters property to dApp that

> > would take a dict of params, and these would be passed to the

> > MainFormClass when it is instantiated as its kwargs.

> >

> > Paul, I'm hoping that you'll chime in here with any thoughts on this

> > approach.

> I know I have been doing this on my dialog forms for years to

> automatically pass in the bizobj. I just override the init method.

> Probably not the best solution, but it works for me.

>

> There are some other ways to approach this. You could make the panel

> list a property on the form and set it outside of the init method. This

> would require an extra line but decouples things a bit and is more

> flexible. If I am not mistaken, you can also not pass it into the

> constructor and the property setting logic will properly pick it up.

>

> The last way to do this is to use a plugin manager like Yapsy to manage

> the panel set for you. Your form would look for the plugin manager on

> instantiation and find all of the panels and add them to the form. I am

> actually moving this way for most all my applications and am almost

> there. The nice part about this is you can now have a standard

> application template and you just add panel plugins. Makes everything

> very convenient. However, fair warning, this will be a good bit more

> work to get up an running than the other methods.

>

> Regards,

>

> Nate

I normally just setup some properties for dialogs - In Nate's case Larry and I

came up with the following to pass the main form:

class NewPayment(dabo.ui.dDialog):

def _getMainForm(self):

return getattr(self, "_MainForm", None)

def _setMainForm(self, val):

self._MainForm = val

MainForm = property(_getMainForm, _setMainForm)

The you can all the dialog

newDialog = NewPayment(MainForm = self)

newDialog.ShowModal()

Johnf

_______________________________________________

Post Messages to: Dabo-users@leafe.com

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/5100272.0q3Dc8MxBx@linux-12

©2012 John Fabiani