当前位置: 首页>>代码示例>>Python>>正文


Python Loader.stop方法代码示例

本文整理汇总了Python中loader.Loader.stop方法的典型用法代码示例。如果您正苦于以下问题:Python Loader.stop方法的具体用法?Python Loader.stop怎么用?Python Loader.stop使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在loader.Loader的用法示例。


在下文中一共展示了Loader.stop方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。

示例1: featureLoader

# 需要导入模块: from loader import Loader [as 别名]
# 或者: from loader.Loader import stop [as 别名]

#.........这里部分代码省略.........
    def layerControl(self):
        if len(self.allVectorLayers) > 1:
            self.targetLayer = self.allVectorLayers[self.dlg.cmbTargetLayer.currentIndex()]
            sourceLayer = self.allVectorLayers[self.dlg.cmbSourceLayer.currentIndex()]

            openedAttrWindow = False #This variable is used for detecting opened attribute windows. During loading operation, opened windows make qgis crashed (maybe a bug)
            #so they must be closed
            for dialog in QApplication.instance().allWidgets():
                #I noticed that in my laptop getting all Qt widget's (in QGIS) names give error. But no problem with desktop. Here is try-except ;)
                try:
                    if dialog.objectName() in [u'QgsAttributeTableDialog', u'AttributeTable']:
                        openedAttrWindow = True
                except:
                    pass

            if openedAttrWindow:
                QMessageBox.warning(None,u'Notification', u'Please close all attribute windows to start the process.')

            else:
                #checking target and source layers must not be in editing mode.
                if not self.targetLayer.isEditable() and not sourceLayer.isEditable():
                    # checking for targetLayer editing capability.
                    isEditable = self.targetLayer.dataProvider().capabilities() & QgsVectorDataProvider.AddFeatures
                    if isEditable:
                        # checking targetLayer and sourceLayer are not same
                        if self.targetLayer.extent() != sourceLayer.extent() or self.targetLayer.publicSource() != sourceLayer.publicSource():
                            # checking layers geometry types
                            if self.targetLayer.geometryType() == sourceLayer.geometryType():
                                self.loader = Loader(targetLayer=self.targetLayer,sourceLayer=sourceLayer)
                                self.loader.setOptions(onlySelected=self.dlg.checkBox.isChecked())

                                self.dlg.btnStart.setEnabled(False)
                                self.dlg.btnStop.setEnabled(True)
                                self.dlg.btnStop.clicked.connect(self.loader.stop)
                                self.iface.mapCanvas().setRenderFlag(False)#QGIS can not render dramatic changes in the target layer feature count and crashes down. So before starting we need to stop rendering.

                                QObject.connect(self.loader, SIGNAL("progressLenght"), self.setProgressLength)
                                QObject.connect(self.loader, SIGNAL("progress"), self.setProgress)
                                QObject.connect(self.loader, SIGNAL("error"), self.error)
                                QObject.connect(self.loader, SIGNAL("finished()"), self.done)
                                QObject.connect(self.loader, SIGNAL('status'), self.setStatus)
                                # QObject.connect(self.loader, SIGNAL('insertFeature'), self.insert)
                                self.loader.start()
                                self.start_time = timeit.default_timer()#for calculating total run time

                            else:
                                QMessageBox.warning(self.dlg, u'Error',
                                                     u'The layers geometry types have to be same to start the process.')
                        else:
                            QMessageBox.warning(self.dlg, u'Error', u'Target Layer and Source Layer must be different.')
                    else:
                        QMessageBox.warning(self.dlg, u'Error', u'Target Layer does not support editing.')
                else:
                    QMessageBox.warning(self.dlg, u'Error', u'Target Layer and Source Layer must not be in editing mode.')
        else:
            QMessageBox.warning(self.dlg, u'Error', u'There must be at least two vector layers added in QGIS canvas.')

    def setProgress(self, val):
        self.dlg.progressBar.setValue(val)

    def setProgressLength(self, val):
        self.dlg.progressBar.setMaximum(val)
        if val==0:
            self.dlg.btnStop.setEnabled(False)#this control may prevent errors when clicking stop button during saving changes.

    # def insert(self,feat):
开发者ID:MSBilgin,项目名称:Feature-Loader,代码行数:70,代码来源:featureLoader.py

示例2: SpeedyLayer

# 需要导入模块: from loader import Loader [as 别名]
# 或者: from loader.Loader import stop [as 别名]

#.........这里部分代码省略.........
        """Generate the context menu entries and toolbar icons inside the QGIS GUI."""

        icon_path = ':/plugins/SpeedyLayer/icon.png'
        self.add_action(
            icon_path,
            text=self.tr(u'Speedy Layer'),
            callback=self.run,
            parent=self.iface.mainWindow())
        #add contextual menu
        self.dup_to_memory_layer_action = QAction(QIcon(icon_path), "Duplicate to memory layer", self.iface.legendInterface() )
        self.iface.legendInterface().addLegendLayerAction(self.dup_to_memory_layer_action, "","01", QgsMapLayer.VectorLayer,True)
        self.dup_to_memory_layer_action.triggered.connect(self.run)

    def unload(self):
        """Removes the plugin menu item and icon from QGIS GUI."""
        for action in self.actions:
            self.iface.removePluginMenu(
                self.tr(u'&Speedy Layer'),
                action)
            self.iface.removeToolBarIcon(action)
        # remove the toolbar
        del self.toolbar
        # remove contextual menu
        self.iface.legendInterface().removeLegendLayerAction(self.dup_to_memory_layer_action)

    def process(self):
        if len(self.allVectorLayers) > 0:
            self.vectorLayer = self.allVectorLayers[self.dlg.cmbVectorLayer.currentIndex()]
            self.memoryLayer = self.generateMemoryLayer(self.vectorLayer,self.selectedLayerFields)
            self.loader = Loader(targetLayer=self.memoryLayer,sourceLayer=self.vectorLayer)
            self.loader.setOptions(onlySelected=self.dlg.checkBox.isChecked())
            self.dlg.btnStart.setEnabled(False)
            self.dlg.btnStop.setEnabled(True)
            self.dlg.btnStop.clicked.connect(self.loader.stop)
            self.iface.mapCanvas().setRenderFlag(False)#QGIS can not render dramatic changes in the target layer feature count and crashes down. So before starting we need to stop rendering.

            QObject.connect(self.loader, SIGNAL("progressLenght"), self.setProgressLength)
            QObject.connect(self.loader, SIGNAL("progress"), self.setProgress)
            QObject.connect(self.loader, SIGNAL("error"), self.error)
            QObject.connect(self.loader, SIGNAL("finished()"), self.done)
            QObject.connect(self.loader, SIGNAL('status'), self.setStatus)
            # QObject.connect(self.loader, SIGNAL('debug'), self.debug)
            self.loader.start()

        else:
            QMessageBox.warning(self.dlg, u'Error', u'There must be at least one vector layers added in QGIS canvas.')

    # def debug(self,msg):
    #     QMessageBox.information(None,'debug',msg)

    def setProgress(self, val):
        self.dlg.progressBar.setValue(val)

    def setProgressLength(self, val):
        self.dlg.progressBar.setMaximum(val)
        if val==0:
            self.dlg.btnStop.setEnabled(False)#this control may prevent errors when clicking stop button during saving changes.

    def error(self, exception):
        QMessageBox.critical(self.dlg, 'Error', str(exception) + '. All changes were rollbacked.')

    def done(self):
        #this function is used by loader class's finished() signal.
        if not self.loader.hasError:
            if not self.loader.isCancel:
                QgsMapLayerRegistry.instance().addMapLayer(self.memoryLayer)
开发者ID:MSBilgin,项目名称:Speedy-Layer,代码行数:70,代码来源:SpeedyLayer.py


注:本文中的loader.Loader.stop方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。