コード例 #1
0
 def on_mEndMarkerLineEdit_textChanged(self, text):
     if (self.mArrow):
         self.mArrow.beginCommand(QString("Arrow end marker"))
         fi = QFileInfo(text)
         if (fi.exists() and fi.isFile()):
             self.mArrow.setEndMarker(text)
         else:
             self.mArrow.setEndMarker("")
         self.mArrow.update()
         self.mArrow.endCommand()
コード例 #2
0
    def _get_data_from_interface(self):
        """ This function extracts the data from the interface and checks
        that all is well and present.

        """

        data = {}

        svgPathName = self.svgPathEdit.text()
        svgFileInfo = QFileInfo(svgPathName)
        if not svgFileInfo.isFile():
            logger.error(msg.noSvgFileErrorText)
            QMessageBox.critical(None, msg.noSvgFileErrorTitle,
                                 msg.noSvgFileErrorText,
                                 QMessageBox.Close)
            return None
        else:
            data["svgPath"] = svgPathName

        name = self.symbolNameEntry.text()
        if not name:
            logger.error(msg.noNameErrorText)
            QMessageBox.critical(None, msg.noNameErrorTitle,
                                 msg.noNameErrorText,
                                 QMessageBox.Close)
            return None
        else:
            data["name"] = name

            # since we use this as a file path get rid of whitespace
            data["svgName"] = sanitize_name(name)


        category = self.categoryChooser.currentText()
        if not category:
            logger.error(msg.noCategoryErrorText)
            QMessageBox.critical(None, msg.noCategoryErrorTitle,
                                 msg.noCategoryErrorText,
                                 QMessageBox.Close)
            return None
        else:
            data["category"] = category


        data["description"]  = self.symbolDescriptionEntry.toPlainText()
        data["width"]        = self.symbolWidthSpinner.value()
        data["category_pos"] = "100000"

        return data
コード例 #3
0
    def vfkFileLineEdit_textChanged(self, arg1):
        """

        :type arg1: str
        :return:
        """
        info = QFileInfo(arg1)

        if info.isFile():
            self.loadVfkButton.setEnabled(True)
            self.vfkFileLineEdit.setPalette(self.__mDefaultPalette)
        else:
            self.loadVfkButton.setEnabled(False)
            pal = QPalette(self.vfkFileLineEdit.palette())
            pal.setColor(QPalette.text(), Qt.red)
            self.vfkFileLineEdit.setPalette(pal)
    def vfkFileLineEdit_textChanged(self, arg1):
        """

        :type arg1: str
        :return:
        """
        info = QFileInfo(arg1)

        if info.isFile():
            self.loadVfkButton.setEnabled(True)
            self.vfkFileLineEdit.setPalette(self.__mDefaultPalette)
        else:
            self.loadVfkButton.setEnabled(False)
            pal = QPalette(self.vfkFileLineEdit.palette())
            pal.setColor(QPalette.text(), Qt.red)
            self.vfkFileLineEdit.setPalette(pal)
コード例 #5
0
    def _check_vfk_file_path(self):
        """Checks if the text in the browseVfkLineEdit is a path to a VFK file.
        
        If so, the loadVfkPushButton is enabled,
        otherwise the loadVfkPushButton is disabled.
        
        """

        tempText = self.browseVfkLineEdit.text()

        tempFileInfo = QFileInfo(tempText)

        if tempFileInfo.isFile() and tempFileInfo.suffix() in (u'vfk', u'VFK'):
            self.loadVfkPushButton.setEnabled(True)
        else:
            self.loadVfkPushButton.setEnabled(False)
コード例 #6
0
    def _get_data_from_interface(self):
        """ This function extracts the data from the interface and checks
        that all is well and present.

        """

        data = {}

        svgPathName = self.svgPathEdit.text()
        svgFileInfo = QFileInfo(svgPathName)
        if not svgFileInfo.isFile():
            logger.error(msg.noSvgFileErrorText)
            QMessageBox.critical(None, msg.noSvgFileErrorTitle,
                                 msg.noSvgFileErrorText, QMessageBox.Close)
            return None
        else:
            data["svgPath"] = svgPathName

        name = self.symbolNameEntry.text()
        if not name:
            logger.error(msg.noNameErrorText)
            QMessageBox.critical(None, msg.noNameErrorTitle,
                                 msg.noNameErrorText, QMessageBox.Close)
            return None
        else:
            data["name"] = name

            # since we use this as a file path get rid of whitespace
            data["svgName"] = sanitize_name(name)

        category = self.categoryChooser.currentText()
        if not category:
            logger.error(msg.noCategoryErrorText)
            QMessageBox.critical(None, msg.noCategoryErrorTitle,
                                 msg.noCategoryErrorText, QMessageBox.Close)
            return None
        else:
            data["category"] = category

        data["description"] = self.symbolDescriptionEntry.toPlainText()
        data["width"] = self.symbolWidthSpinner.value()
        data["category_pos"] = "100000"

        return data
コード例 #7
0
    def _create_spatialite_db_file(self, dbPath):
        """Creates a SpatiaLite database file.
        
        Args:
            dbPath (str): A full path to the database.
        
        Returns:
            dbPath (str): A full path to the SpatiaLite database.
        
        """

        dbInfo = QFileInfo(dbPath)

        sdbPath = QDir(dbInfo.absolutePath())\
            .filePath(dbInfo.completeBaseName() + '.sdb')

        sdbInfo = QFileInfo(sdbPath)

        if not sdbInfo.isFile():
            self.set_text_statusbar.emit(
                u'Importuji data do SpatiaLite databáze...', 0, False)

            QgsApplication.processEvents()

            sqliteDriver = ogr.GetDriverByName('SQLite')
            spatialiteDataSource = sqliteDriver.CreateDataSource(
                sdbPath, ['SPATIALITE=YES'])

            sqliteDataSource = ogr.Open(dbPath)

            for layerCode in (
                    self.dW.parLayerCode, ) + self.dW.vertexLayerCodes:
                originalLayer = sqliteDataSource.GetLayerByName(layerCode)
                copiedLayer = spatialiteDataSource.CopyLayer(
                    originalLayer, layerCode, ['LAUNDER=NO'])

            sqliteDataSource.Destroy()
            spatialiteDataSource.Destroy()

        QgsApplication.processEvents()

        return sdbPath
コード例 #8
0
 def btnAdd_clicked(self):
     filePath = QFileDialog.getOpenFileName(
         self, "Open xml file", QCoreApplication.applicationDirPath(),
         "xml files(*.xml )")
     if filePath == "":
         return
     fileInfo = QFileInfo(filePath)
     if not fileInfo.isFile():
         return
     str0 = ""
     drawingSpace = DrawingSpace.PaperSpace
     result, str0, drawingSpace = DlgChartingTemplate.smethod_0(
         self, str0, drawingSpace, filePath)
     if result:
         numArray = fileInfo.size()
         rowCount = self.parametersPanel.gridModel.rowCount()
         self.parametersPanel.gridModel.setItem(rowCount, 0,
                                                QStandardItem(str0))
         self.parametersPanel.gridModel.setItem(rowCount, 1,
                                                QStandardItem(drawingSpace))
         self.parametersPanel.gridModel.setItem(
             rowCount, 2, QStandardItem(str(numArray)))
     self.method_30()
コード例 #9
0
    def addStyleLayerQuery():
      def getStyleDB():
        drv_conn = f_connections[ name ]( uri )
        cur = drv_conn['conn'].cursor()
        #
        result = runSQL( drv_conn[ 'sqlStyleTable' ], cur, drv_conn )
        if not result[ 'isOk']:
          return result
        #
        hasTable = False if cur.fetchone() is None else True
        if hasTable is None:
          data = ( self.nameLayerSQL, drv_conn[ 'tableStyle' ] )
          msg = "Error in query '%s' (for verify style). Not exist table '%s'!" % data
          return { 'isOk': True, 'exits': False, 'msg': msg }
        #
        data = ( drv_conn[ 'tableStyle' ], self.styleLayerSQL )
        sql = "SELECT styleQML FROM %s WHERE styleName = '%s'" % data
        result = runSQL( sql, cur, drv_conn )
        if not result[ 'isOk']:
          return result
        #
        value = cur.fetchone()
        if value is None:
          data = ( self.nameLayerSQL, self.styleLayerSQL, rv_conn[ 'tableStyle' ] )
          msg = "Error in query '%s' (for verify style). Not exist style '%s' in table '%s'!" % data
          return { 'isOk': True, 'exits': False, 'msg': msg }
        #
        cur.close()
        drv_conn['conn'].close()
        #
        return { 'isOk': True, 'exits': True, 'qml': value[0] }
        #

      def setStyleLayer(qml):
        qmlFile = "%saddlayersql_action_temp.qml" % ( QgsApplication.qgisSettingsDirPath() )
        if os.path.exists(qmlFile):
          os.remove( qmlFile )
        f = codecs.open( qmlFile, 'w', encoding='utf8')
        f.write( qml )
        f.close()
        #
        layerQuery.loadNamedStyle( qmlFile )
        #
        os.remove( qmlFile )

      if self.styleLayerSQL is None:
        return
      # File
      fileStyle = QFileInfo( self.styleLayerSQL )
      if fileStyle.exists() and fileStyle.isFile():
        layerQuery.loadNamedStyle( self.styleLayerSQL )
        return
      # DB *** Had self.styleLayerSQL and not is file -> Need be a DB
      result = getStyleDB()
      if not result['isOk'] or not result['exits']:
        rb = self._addHighlightGeom()
        self.msgBar.pushMessage( self.nameModulus, result['msg'], QgsMessageBar.WARNING, 5 )
        self._removeHighlightGeom( rb, 5 )
        return
      #
      setStyleLayer( result['qml'] )
コード例 #10
0
    def _create_db_file(self, filePath, dbPath, layerCode, vfkDriverName):
        """Creates a database file.
        
        It checks if a database of the same name as the file exists.
        If not it creates the database with a VFK driver.
        
        Args:
            filePath (str): A full path to the file.
            dbPath (str): A full path to the database.
            layerCode (str): A code of the layer.
            vfkDriverName (str): A name of the VFK driver.
        
        Raises:
            dw.puError: When the VFK driver failed to open VFK file
                or when the SQlite driver failed to open the database.
        
        """

        QgsApplication.processEvents()

        dbInfo = QFileInfo(dbPath)

        if not dbInfo.isFile():
            self.set_text_statusbar.emit(
                u'Importuji data do SQLite databáze...', 0, False)

            QgsApplication.processEvents()

            QgsApplication.registerOgrDrivers()

            vfkDriver = ogr.GetDriverByName(vfkDriverName)
            vfkDataSource = vfkDriver.Open(filePath)

            QgsApplication.processEvents()

            if not vfkDataSource:
                raise self.dW.puError(
                    self.dW, self,
                    u'Failed to load data, "{}" is not a valid VFK datasource.'
                    .format(dbPath), u'Data nelze načíst.',
                    u'Data nelze načíst, "{}" není platný datový zdroj VFK.'.
                    format(dbPath))

            layerCount, layerNames = self._check_layer_code(
                vfkDataSource, layerCode)

            self.loadVfkProgressBar.setMaximum(layerCount)

            for i in xrange(layerCount):
                self.set_value_loadVfkProgressBar.emit(i + 1)
                self.set_text_statusbar.emit(
                    u'Načítám vrstvu {} ({}/{})...'.format(
                        layerNames[i], i + 1, layerCount), 0, False)

            QgsApplication.processEvents()

            self._build_geometry(layerCode, vfkDataSource)

            QgsApplication.processEvents()

            for vertexLayerCode in self.dW.vertexLayerCodes:
                if vertexLayerCode in layerNames:
                    self._build_geometry(vertexLayerCode, vfkDataSource)

                    QgsApplication.processEvents()

            vfkDataSource.Destroy()

        sqliteDriver = ogr.GetDriverByName('SQLite')
        sqliteDataSource = sqliteDriver.Open(dbPath)

        if not sqliteDataSource:
            raise self.dW.puError(
                self.dW, self,
                u'Failed to load data, "{}" is not a valid SQLite datasource.'.
                format(dbPath), u'Data nelze načíst.',
                u'Data nelze načíst, "{}" není platný datový zdroj SQLite.'.
                format(dbPath))

        layerCount, layerNames = self._check_layer_code(
            sqliteDataSource, layerCode)

        sqliteDataSource.Destroy()
コード例 #11
0
ファイル: dyr.py プロジェクト: iacopy/dyr
 def open_path(self, path):
     qfi = QFileInfo(path)
     if qfi.isDir():
         self.open_dir(path)
     elif qfi.isFile():
         self.open_file(path)