[GRASSGUI] Re: python question - waiting for a variable to change

Daniel Calvelo dca.gis at gmail.com
Mon Mar 19 13:16:11 EDT 2007


On 3/19/07, Michael Barton <michael.barton at asu.edu> wrote:
> Daniel,
>
> I don't think I explained myself very clearly. Here is what I had in mind.

Sorry, it was me who got speedy.

> This is a primitive description of the workflow I'm trying to do
>
> 1. module A calls module B
>
> 2. module B starts a GUI window that collects user information (d.* command
> options)
>
> 3. User closes GUI window
>
> 4. Information collected in GUI window is returned to module A
>
> 5. module A processes information collected in GUI launced by module B
>
> Is your response below related to such a work flow?

Yes. The idea is:

  module A calls module B *and tells it what to do when closing*

technically, you would have in A

def do_the_rest( the_value_we_need ):
  do_it( the_value_we_need )

moduleB.startplease( when_finished = do_the_rest )

and module B has to a) accept this when_finished parameter in the
startplease method and b) call it within the button pressed event. Stg
like:

def startplease( self, when_finished=None):
  self.onRunHook = when_finished
  ...

def onRun(self, event):
  ...
  if self.onRunHook is not None:
    self.onRunHook() # run it
  ...

> It's the same idea as
> launching a dialog and then invoking the ShowModal() method to wait until it
> closes and capture what the dialog does. Does this need to be done via a
> dialog only, or can it be emulated with a normal window?

In wx you can have modal panels, so yes, you can build your own
dialog-like window and set it to modal mode. You may grab the thuban
sources and look at the classifier ui code for inspiration.

> Michael

Daniel.

> On 3/19/07 9:24 AM, "Daniel Calvelo" <dca.gis at gmail.com> wrote:
>
> > You could make your callback function (the one you wish executed as
> > the value is returned) a parameter to __init__ in menuform, that is
> > called from within menuform.onRun if set to stg else than None. I
> > think that is what you call a hook.
> >
> > You have to build something quite involved to have signaling objects
> > behave like normal variables, AFAICT.
> >
> > Daniel.
> >
> > On 3/19/07, Michael Barton <michael.barton at asu.edu> wrote:
> >>
> >>  I've run into a little problem that is taxing my neophyte Python
> >> programming abilities. However we do a popup panel for setting display layer
> >> options, I think it is necessary to do something along the lines of the
> >> following....
> >>
> >>  1. Start the options popup. This is currently done with a double click on
> >> the layer, which calls the onActivate even handler. For a raster, the event
> >> handler uses...
> >>          drastcmd = menuform.GUI().parseCommand('d.rast', gmpath)
> >>      ...to start the autogenerated GUI.
> >>
> >>  2. When you press the "run" button for this d.* command, the assembled
> >> command (d.rast + options) is simply returned.
> >>
> >>  3. Now drastcmd should contain a complete d.rast command string.
> >>
> >>  So, how do I wait in onActivate until the "run" button is pressed on the
> >> popup and the information is returned to drastcmd (i.e., the value of
> >> drastcmd is changed). Or, alternatively, how can a change in the value of
> >> drastcmd generate an event that I can capture and process? I messed around
> >> with wait() (thinking about tk_wait in TclTk), but couldn't get it to do
> >> what I wanted.
> >>
> >>
> >>  Michael
> >>  __________________________________________
> >>  Michael Barton, Professor of Anthropology
> >>  School of Human Evolution & Social Change
> >>  Center for Social Dynamics & Complexity
> >>  Arizona State University
> >>
> >>  phone: 480-965-6213
> >>  fax: 480-965-7671
> >>  www: http://www.public.asu.edu/~cmbarton
> >>
> >>
> >
>
> __________________________________________
> Michael Barton, Professor of Anthropology
> School of Human Evolution & Social Change
> Center for Social Dynamics & Complexity
> Arizona State University
>
> phone: 480-965-6213
> fax: 480-965-7671
> www: http://www.public.asu.edu/~cmbarton
>
>
>


-- 
-- Daniel Calvelo Aros




More information about the grass-gui mailing list