def __init__(self, message, parent=None, caption=None, showTraceback=True): """Show error message window :param message: error message :param parent: centre window on parent if given :param caption: window caption (if not given "Error") :param showTraceback: True to show also Python traceback """ if not caption: caption = _('Error') style = wx.OK | wx.ICON_ERROR | wx.CENTRE exc_type, exc_value, exc_traceback = sys.exc_info() if exc_traceback: exception = traceback.format_exc() reason = exception.splitlines()[-1].split(':', 1)[-1].strip() if Debug.GetLevel() > 0 and exc_traceback: sys.stderr.write(exception) if showTraceback and exc_traceback: wx.MessageBox(parent = parent, message = message + '\n\n%s: %s\n\n%s' % \ (_('Reason'), reason, exception), caption = caption, style = style) else: wx.MessageBox(parent=parent, message=message, caption=caption, style=style)
def _parseCapFile(self, cap_file): """Parse capabilities data and emits capParsed signal (see class constructor). """ try: self.cap = self.ws_drvs[self.ws]['cap_parser'](cap_file) except (IOError, ParseError) as error: error_msg = _( "%s web service was not found in fetched capabilities file from <%s>:\n%s\n" % (self.ws, self.conn['url'], str(error))) if Debug.GetLevel() != 0: Debug.msg(1, error_msg) self._postCapParsedEvt(None) else: self._postCapParsedEvt(error_msg=error_msg) return self.is_connected = True # WMS standard has formats defined for all layers if 'WMS' in self.ws: self.formats_list = sorted(self._getFormats()) self._updateFormatRadioBox(self.formats_list) self._setDefaultFormatVal() self.list.LoadData(self.cap) self.OnListSelChanged(event=None) self._postCapParsedEvt(None)
def OnCmdOutput(self, event): """Manage cmd output. """ if Debug.GetLevel() != 0: Debug.msg(1, event.text) elif event.type != 'message' and event.type != 'warning': self.cmd_err_str += event.text + os.linesep
def Render(self, cmd, env): """If it is needed, download missing WMS data. .. todo:: lmgr deletes mapfile and maskfile when order of layers was changed (drag and drop) - if deleted, fetch data again """ if not haveGdal: return env = copy.copy(env) self.dstSize['cols'] = int(env["GRASS_WIDTH"]) self.dstSize['rows'] = int(env["GRASS_HEIGHT"]) region = self._getRegionDict(env) self._fitAspect(region, self.dstSize) self.updateMap = True fetchData = False zoomChanged = False if self.renderedRegion is None or \ cmd != self.fetched_data_cmd: fetchData = True else: for c in ['north', 'south', 'east', 'west']: if self.renderedRegion and \ region[c] != self.renderedRegion[c]: fetchData = True break for c in ['e-w resol', 'n-s resol']: if self.renderedRegion and \ region[c] != self.renderedRegion[c]: zoomChanged = True break if fetchData: self.fetched_data_cmd = None self.renderedRegion = region try_remove(self.mapfile) try_remove(self.tempMap) self.currentPid = self.thread.GetId() self.thread.abort() self.downloading = True self.fetching_cmd = cmd cmdList = utils.CmdTupleToList(cmd) if Debug.GetLevel() < 3: cmdList.append('--quiet') env["GRASS_PNGFILE"] = self.tempMap env["GRASS_REGION"] = self._createRegionStr(region) self.thread.RunCmd(cmdList, env=env, stderr=self.cmdStdErr)
def OnCmdOutput(self, event): """Handle cmd output according to debug level.""" if Debug.GetLevel() == 0: if event.type == "error": msg = _("Unable to fetch data.\n") msg += event.text GWarning(parent=self, message=msg) else: Debug.msg(1, event.text)
def OnCmdOutput(self, event): """Print cmd output according to debug level. """ if Debug.GetLevel() == 0: if event.type == 'error': sys.stderr.write(event.text) sys.stderr.flush() else: Debug.msg(1, event.text)
def Redirect(self): """Redirect stdout/stderr """ if Debug.GetLevel() == 0 and grass.debug_level(force=True) == 0: # don't redirect when debugging is enabled sys.stdout = self.cmdStdOut sys.stderr = self.cmdStdErr else: enc = locale.getdefaultlocale()[1] if enc: sys.stdout = codecs.getwriter(enc)(sys.__stdout__) sys.stderr = codecs.getwriter(enc)(sys.__stderr__) else: sys.stdout = sys.__stdout__ sys.stderr = sys.__stderr__
def Redirect(self): """Redirect stdout/stderr""" if Debug.GetLevel() == 0 and grass.debug_level(force=True) == 0: # don't redirect when debugging is enabled sys.stdout = self.cmdStdOut sys.stderr = self.cmdStdErr else: enc = locale.getdefaultlocale()[1] if enc: if sys.version_info.major == 2: sys.stdout = codecs.getwriter(enc)(sys.__stdout__) sys.stderr = codecs.getwriter(enc)(sys.__stderr__) else: # https://stackoverflow.com/questions/4374455/how-to-set-sys-stdout-encoding-in-python-3 sys.stdout = codecs.getwriter(enc)(sys.__stdout__.detach()) sys.stderr = codecs.getwriter(enc)(sys.__stderr__.detach()) else: sys.stdout = sys.__stdout__ sys.stderr = sys.__stderr__
def __init__(self, message, parent=None, caption=None, showTraceback=True): if not caption: caption = _('Error') style = wx.OK | wx.ICON_ERROR | wx.CENTRE exc_type, exc_value, exc_traceback = sys.exc_info() if exc_traceback: exception = traceback.format_exc() reason = exception.splitlines()[-1].split(':', 1)[-1].strip() if Debug.GetLevel() > 0 and exc_traceback: sys.stderr.write(exception) if showTraceback and exc_traceback: wx.MessageBox(parent = parent, message = message + '\n\n%s: %s\n\n%s' % \ (_('Reason'), reason, exception), caption = caption, style = style) else: wx.MessageBox(parent=parent, message=message, caption=caption, style=style)