On Tuesday 16 January 2007 10:50, Nate Lowrie wrote:
> On 1/16/07, johnf <[EMAIL PROTECTED]> wrote:
> > On Tuesday 16 January 2007 10:15, Nate Lowrie wrote:
> > > On 1/16/07, johnf <[EMAIL PROTECTED]> wrote:
> > > > On Tuesday 16 January 2007 09:50, Paul McNett wrote:
> > > > > johnf wrote:
> > > > > > That works - now what if I want the dialog form class to be
> > > > > > universally available to all forms?
> > > > >
> > > > > Then you break it out into a MyDialog.py file, contents like:
> > > > >
> > > > > import dabo
> > > > >
> > > > > class MyDialog(dabo.ui.dDialog):
> > > > >       ...
> > > > >
> > > > > You put the MyDialog.py file somewhere accessible to your forms
> > > > > (same directory for simplicity is better. This is why I like the
> > > > > AppWizard's ui/ directory). Then where you want to use it, do:
> > > > >
> > > > > import MyDialog
> > > > > dlg = MyDialog.MyDialog(...)
> > > > > dlg.showModal()
> > > >
> > > > So I gather that it's OK to have multiple import statements of the
> > > > same import everywhere.   In VFP an universal function, procedure or
> > > > class would be loaded at the beginning of an app.
> > > >
> > > > Set procedure to someProcedure or
> > > > set classlib to someclass additive
> > >
> > > The import statement would be the equivalent of that.  Also consider
> > > brushing up on Python Classes and how they are instantiated into
> > > objects.
> > >
> > > > I have no need to add something like above?
> > > >
> > > > --
> > > > John Fabiani
> >
> > No doubt I need to review most of Python.
> >
> > But I would have thought that I would create a file which contained my
> > classes and import it at the beginning.
> >
> > import dabo
> > import johnsClasses
> >
> > Then within a form I could say something like
> > new_frm = johnsClasses.MydialogClass() #if this wrong say so please
> > new_frm.show()
> >
> > I was sure I was right - but it does not work.  I'm missing something or
> > coding something wrong.
>
> Sounds right.  You are doing what we suggested.  Can you provide a
> stack trace or something to help us help you?
>
> > --
> > John Fabiani
> >
> > _______________________________________________
> > Post Messages to: [email protected]
> > Subscription Maintenance: http://leafe.com/mailman/listinfo/dabo-dev
>
> _______________________________________________
> Post Messages to: [email protected]
> Subscription Maintenance: http://leafe.com/mailman/listinfo/dabo-dev

OK I'm back where I started.  I'm again asking how to call a form class from 
within form function.  But below is the app.
import os
import inspect
import dabo
import johnClasses


def main():
        app = dabo.dApp()
        curdir = os.getcwd()
        # Get the current location's path
        fname = inspect.getfile(main)
        pth = os.path.split(fname)[0]
        if pth:
                # Switch to that path
                os.chdir(pth)
        app.MainFormClass = "custfrm1.cdxml"
        app.start()
        
        # Return to the original location
        os.chdir(curdir)
        

if __name__ == '__main__':
        main()

A function in the form
def lookup():
        new_frm = johnClasses.TestForm()
        new_frm.showModal()

The traceback:
Traceback (most recent call last):
  File "/home/johnf/downloads/dabo/dabo/lib/eventMixin.py", line 97, in 
raiseEvent
    bindingFunction(event)
  File "", line 971, in onHit
  File "/tmp/tmpfJx8q2.py", line 13, in onHit_1
    self.Form.lookup()
  File "", line 949, in lookup
  File "/tmp/tmpfJx8q2.py", line 99, in lookup_3
    new_frm = johnClasses.TestForm()
NameError: global name 'johnClasses' is not defined

-- 
John Fabiani

_______________________________________________
Post Messages to: [email protected]
Subscription Maintenance: http://leafe.com/mailman/listinfo/dabo-dev

Reply via email to