def OnCmdDone(self, event): """Command done (or aborted) Sends signal mapCreated if map is recognized in output parameters or for specific modules (as r.colors). """ # Process results here try: ctime = time.time() - event.time if ctime < 60: stime = _("%d sec") % int(ctime) else: mtime = int(ctime / 60) stime = _("%(min)d min %(sec)d sec") % { "min": mtime, "sec": int(ctime - (mtime * 60)), } except KeyError: # stopped deamon stime = _("unknown") if event.aborted: # Thread aborted (using our convention of None return) self.WriteWarning( _( "Please note that the data are left in" " inconsistent state and may be corrupted" ) ) msg = _("Command aborted") else: msg = _("Command finished") self.WriteCmdLog( "(%s) %s (%s)" % (str(time.ctime()), msg, stime), notification=event.notification, ) if event.onDone: event.onDone(event) self.cmdOutputTimer.Stop() if event.cmd[0] == "g.gisenv": Debug.SetLevel() self.Redirect() # do nothing when no map added if event.returncode != 0 or event.aborted: event.Skip() return if event.cmd[0] not in globalvar.grassCmd: return # find which maps were created try: task = GUI(show=None).ParseCommand(event.cmd) except GException as e: print(e, file=sys.stderr) task = None return name = task.get_name() for p in task.get_options()["params"]: prompt = p.get("prompt", "") if prompt in ("raster", "vector", "raster_3d") and p.get("value", None): if p.get("age", "old") == "new" or name in ( "r.colors", "r3.colors", "v.colors", "v.proj", "r.proj", ): # if multiple maps (e.g. r.series.interp), we need add each if p.get("multiple", False): lnames = p.get("value").split(",") # in case multiple input (old) maps in r.colors # we don't want to rerender it multiple times! just # once if p.get("age", "old") == "old": lnames = lnames[0:1] else: lnames = [p.get("value")] for lname in lnames: if "@" not in lname: lname += "@" + grass.gisenv()["MAPSET"] if grass.find_file(lname, element=p.get("element"))["fullname"]: self.mapCreated.emit( name=lname, ltype=prompt, add=event.addLayer ) gisenv = grass.gisenv() self._giface.grassdbChanged.emit( grassdb=gisenv["GISDBASE"], location=gisenv["LOCATION_NAME"], mapset=gisenv["MAPSET"], action="new", map=lname.split("@")[0], element=prompt, ) if name == "r.mask": action = "new" for p in task.get_options()["flags"]: if p.get("name") == "r" and p.get("value"): action = "delete" gisenv = grass.gisenv() self._giface.grassdbChanged.emit( grassdb=gisenv["GISDBASE"], location=gisenv["LOCATION_NAME"], mapset=gisenv["MAPSET"], action=action, map="MASK", element="raster", ) event.Skip()
def OnCmdDone(self, event): """Command done (or aborted) Sends signal mapCreated if map is recognized in output parameters or for specific modules (as r.colors). """ # Process results here try: ctime = time.time() - event.time if ctime < 60: stime = _("%d sec") % int(ctime) else: mtime = int(ctime / 60) stime = _("%(min)d min %(sec)d sec") % {'min': mtime, 'sec': int(ctime - (mtime * 60))} except KeyError: # stopped deamon stime = _("unknown") if event.aborted: # Thread aborted (using our convention of None return) self.WriteWarning(_('Please note that the data are left in' ' inconsistent state and may be corrupted')) msg = _('Command aborted') else: msg = _('Command finished') self.WriteCmdLog('(%s) %s (%s)' % (str(time.ctime()), msg, stime), notification=event.notification) if event.onDone: event.onDone(cmd=event.cmd, returncode=event.returncode) self.cmdOutputTimer.Stop() if event.cmd[0] == 'g.gisenv': Debug.SetLevel() self.Redirect() # do nothing when no map added if event.returncode != 0 or event.aborted: event.Skip() return if event.cmd[0] not in globalvar.grassCmd: return # find which maps were created try: task = GUI(show=None).ParseCommand(event.cmd) except GException as e: print >> sys.stderr, e task = None return name = task.get_name() for p in task.get_options()['params']: prompt = p.get('prompt', '') if prompt in ('raster', 'vector', '3d-raster') and p.get('value', None): if p.get('age', 'old') == 'new' or \ name in ('r.colors', 'r3.colors', 'v.colors', 'v.proj', 'r.proj'): # if multiple maps (e.g. r.series.interp), we need add each if p.get('multiple', False): lnames = p.get('value').split(',') # in case multiple input (old) maps in r.colors # we don't want to rerender it multiple times! just once if p.get('age', 'old') == 'old': lnames = lnames[0:1] else: lnames = [p.get('value')] for lname in lnames: if '@' not in lname: lname += '@' + grass.gisenv()['MAPSET'] self.mapCreated.emit(name=lname, ltype=prompt) if name == 'r.mask': self.updateMap.emit() event.Skip()
def OnCmdDone(self, event): """Command done (or aborted) Sends signal mapCreated if map is recognized in output parameters or for specific modules (as r.colors). """ # Process results here try: ctime = time.time() - event.time if ctime < 60: stime = _("%d sec") % int(ctime) else: mtime = int(ctime / 60) stime = _("%(min)d min %(sec)d sec") % { 'min': mtime, 'sec': int(ctime - (mtime * 60)) } except KeyError: # stopped deamon stime = _("unknown") if event.aborted: # Thread aborted (using our convention of None return) self.WriteWarning( _('Please note that the data are left in' ' inconsistent state and may be corrupted')) msg = _('Command aborted') else: msg = _('Command finished') self.WriteCmdLog('(%s) %s (%s)' % (str(time.ctime()), msg, stime), notification=event.notification) if event.onDone: event.onDone(event) self.cmdOutputTimer.Stop() if event.cmd[0] == 'g.gisenv': Debug.SetLevel() self.Redirect() # do nothing when no map added if event.returncode != 0 or event.aborted: event.Skip() return if event.cmd[0] not in globalvar.grassCmd: return # find which maps were created try: task = GUI(show=None).ParseCommand(event.cmd) except GException as e: print(e, file=sys.stderr) task = None return name = task.get_name() for p in task.get_options()['params']: prompt = p.get('prompt', '') if prompt in ('raster', 'vector', 'raster_3d') and p.get( 'value', None): if p.get('age', 'old') == 'new' or name in ('r.colors', 'r3.colors', 'v.colors', 'v.proj', 'r.proj'): # if multiple maps (e.g. r.series.interp), we need add each if p.get('multiple', False): lnames = p.get('value').split(',') # in case multiple input (old) maps in r.colors # we don't want to rerender it multiple times! just # once if p.get('age', 'old') == 'old': lnames = lnames[0:1] else: lnames = [p.get('value')] for lname in lnames: if '@' not in lname: lname += '@' + grass.gisenv()['MAPSET'] if grass.find_file( lname, element=p.get('element'))['fullname']: self.mapCreated.emit(name=lname, ltype=prompt, add=event.addLayer) if name == 'r.mask': self.updateMap.emit() event.Skip()