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

Michael Barton michael.barton at asu.edu
Mon Mar 19 13:20:38 EDT 2007


Thanks much. I think this is what I need.

Michael


On 3/19/07 10:16 AM, "Daniel Calvelo" <dca.gis at gmail.com> wrote:

> 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
>> 
>> 
>> 
> 

__________________________________________
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





More information about the grass-gui mailing list