Пример #1
0
 def display_mapfile_validity(self):
     """Display on GUI the validity of current mapfile."""
     if self.editor.getText(
     ) <> '' and self.temp_mapfile and os.path.exists(self.temp_mapfile):
         self.update_file()
         renderer = MapfileRenderer(self.temp_mapfile)
         message = renderer.load_mapfile()
         if self.messageTextEdit is not None:
             self.messageTextEdit.append(message)
         mapobj = renderer.getMapObj()
         if mapobj is None:
             self.addLayerButton.setEnabled(False)
             self.replaceLayerButton.setEnabled(False)
         else:
             self.addLayerButton.setEnabled(True)
             self.replaceLayerButton.setEnabled(True)
             self.editor.markerDeleteAll()
         # display error line
         regexp = re.compile('.*\(line ([0-9]*)\)')
         try:
             # get error line number
             linenb = int(regexp.findall(message.split("\n")[-1])[-1])
             # add a marker on error line in editor
             # FIXME : move this code into editor's mark_error()
             self.editor.markerAdd(linenb - 1, self.editor.ARROW_MARKER_NUM)
         except ValueError:
             # error with no line number, just ignore
             pass
         except IndexError:
             pass
Пример #2
0
    def loadMapfile(self, mapfile, layers=(), name=None):
        message = ''
        self.mapfile = mapfile
        self.layers = layers
        if self.mapfile == "":
            return False

        # open mapfile
        self.maprenderer = MapfileRenderer(str(self.mapfile))
        message = self.maprenderer.load_mapfile()
        self.messageTextEdit.append(message)
        mapobj = self.maprenderer.getMapObj()
        if mapobj is None:
            return False

        if name is None:
            self.setLayerName(mapobj.name)
        else:
            self.setLayerName(name)

        # get projection as EPSG
        crs = QgsCoordinateReferenceSystem()
        crs.createFromProj4(self.maprenderer.getProj())
        if not crs.isValid():
            crs.validate()

        srs = "EPSG:%d" % crs.epsg()

        # always use default format for now
        self.maprenderer.setup(self.layers, srs)

        # set projection
        self.setCrs(crs)

        # TODO: set extents
        #    extents = self.maprenderer.getExtents()
        #    self.setExtent(QgsRectangle(extents[0], extents[1], extents[2], extents[3]))

        if self.pixmap == None:
            self.pixmap = QPixmap()

        # trigger repaint
        self.setCacheImage(None)
        self.emit(SIGNAL("repaintRequested()"))
        return True