Hi, you can look how Layer manager launches scripts: https://trac.osgeo.org/grass/browser/grass/trunk/gui/wxpython/lmgr/frame.py#L841, I think it requires setting the GRASS_ADDON_PATH
I remember this problem, maybe it's in parser. There might be a ticket already, but I am not sure. If you can't find anything related, please create a ticket. On Tue, Oct 13, 2015 at 9:33 AM, Michel Wortmann <[email protected]> wrote: > Hi Stefan, > I have been meaning to implement something like this too and got your > example to work with the additional step of setting the environment > variable GRASS_ADDON_PATH (and under unix setting the permissions). Here is > my example just parsing the first mapset it finds: > > import os, tempfile, stat > import grass.script as grass > > module = 'subbasins.py' > > if __name__=='__main__': > answer = grass.mapsets(search_path = True) > available_mapsets = grass.mapsets() > > script=file(module,'r').read() > > with tempfile.NamedTemporaryFile(delete = False) as s: > s.write('''#!/usr/bin/env python > # -*- coding: utf-8 -*- > > {script} > > #%Option > #% key:{option} > #%end > > '''.format(script=script,option=available_mapsets[0].lower())) > > startcmd = 'python '+s.name > # set env variable > aoev='GRASS_ADDON_PATH' > tmpdir = os.path.basename(s.name) > if aoev in os.environ: > os.environ[aoev]=[tmpdir]+os.environ[aoev] > else: > os.environ[aoev]=[tmpdir] > # set permissions > os.chmod(s.name, os.stat(s.name).st_mode | stat.S_IEXEC) > # start module > os.system(startcmd) > os.remove(s.name) > > Let me know if this works under Windows too. > Michel > > On 10/12/2015 12:55 PM, Blumentrath, Stefan wrote: > > Hi again, > > > > Now I found out that the parser section in the inner python script was not > formated properly. > > > > However, when I now call the inner script with ‘--ui’ I get an error: > > Unable to fetch interface description for command ‘tmpjksdfjiol’ > > > > Details: > > Try to set up GRASS_ADDON_PATH or GRASS_ADDON_BASE variable. > > > > It was neither possible to run the script using grass.run_command() (on > Windows). > > > > Cheers > > Stefan > > > > > > > > *From:* grass-dev [mailto:[email protected] > <[email protected]>] *On Behalf Of *Blumentrath, Stefan > *Sent:* 12. oktober 2015 11:36 > *To:* GRASS developers list ([email protected]) > <[email protected]> <[email protected]> > *Subject:* [GRASS-dev] Using a dynamic text in module header for parser > > > > Hi, > > > > I would like to fill: > > #% options: > > and > > #% answer > > in a parser option for a python script dynamically. In particular I want > to have tickboxes for available mapsets in the module GUI… > > > > Meaning something like this (but less complex / not interactive): > > http://permalink.gmane.org/gmane.comp.gis.grass.gui/667 > > My amateur programming skills do unfortunately not allow me to really > understand how to accomplish what Glynn describes in the post above… > > > > I tried to generate and run a temporary python script from within my > script like this: > > def main(): > > > > answer = grass.mapsets(search_path = True) > > available_mapsets = str(grass.mapsets()) > > > > with tempfile.NamedTemporaryFile(delete = False) as s: > > s.write(''' #!/usr/bin/env python > > # -*- coding: utf-8 -*- > > # Here comes the full module with header for the parser > > #% options: ''' + str(','.join(available_mapsets)) > > … > > ’’’) > > startcmd = 'python ' + s.name > > os.system(startcmd) > > os.remove(s.name) > > > > But that way the GUI never starts, when I call the outer script from GRASS > and it seems that option never get parsed… > > > > Any hints how to proceed? > > > > Thanks for helping in advance. > > > > Stefan > > > > > > > _______________________________________________ > grass-dev mailing > [email protected]http://lists.osgeo.org/mailman/listinfo/grass-dev > > > > _______________________________________________ > grass-dev mailing list > [email protected] > http://lists.osgeo.org/mailman/listinfo/grass-dev >
_______________________________________________ grass-dev mailing list [email protected] http://lists.osgeo.org/mailman/listinfo/grass-dev
