def loadAlgorithms(self): if self.is_loading: return self.is_loading = True for definition in self.model_definitions.values(): algorithm = QgsProcessingModelAlgorithm() if algorithm.loadVariant(definition): self.addAlgorithm(algorithm) else: QgsMessageLog.logMessage( self.tr('Could not load model from project', 'ProjectProvider'), self.tr('Processing'), Qgis.Critical) self.is_loading = False
def loadAlgorithms(self): if self.is_loading: return self.is_loading = True for definition in self.model_definitions: algorithm = QgsProcessingModelAlgorithm() if algorithm.loadVariant(definition): self.addAlgorithm(algorithm) else: QgsMessageLog.logMessage( self.tr('Could not load model from project', 'ProjectProvider'), self.tr('Processing'), Qgis.Critical) self.is_loading = False
def read_project(self, doc): """ Reads the project model definitions from the project DOM document :param doc: DOM document """ self.model_definitions = {} project_models_nodes = doc.elementsByTagName('projectModels') if project_models_nodes: project_models_node = project_models_nodes.at(0) model_nodes = project_models_node.childNodes() for n in range(model_nodes.count()): model_element = model_nodes.at(n).toElement() definition = QgsXmlUtils.readVariant(model_element) algorithm = QgsProcessingModelAlgorithm() if algorithm.loadVariant(definition): self.model_definitions[algorithm.name()] = definition self.refreshAlgorithms()
def remove_model(self, model): """ Removes a model from the project :type model: QgsProcessingModelAlgorithm :param model: model to remove """ if model is None: return filtered_model_definitions = [] for m in self.model_definitions: algorithm = QgsProcessingModelAlgorithm() if algorithm.loadVariant(m) and algorithm.name() == model.name(): # found matching model definition, skip it continue filtered_model_definitions.append(m) self.model_definitions = filtered_model_definitions self.refreshAlgorithms()