コード例 #1
0
    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)
コード例 #2
0
    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)
コード例 #3
0
 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
コード例 #4
0
ファイル: ws.py プロジェクト: starseeker/archival
    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)
コード例 #5
0
 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)
コード例 #6
0
ファイル: ws.py プロジェクト: starseeker/archival
 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)
コード例 #7
0
ファイル: gconsole.py プロジェクト: rkanavath/grass-ci
 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__
コード例 #8
0
 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__
コード例 #9
0
    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)