I tried :
QgsProject.instance().layerTreeRoot().willRemoveChildren.connect(self.onWillRemoveChildren)
It works if I delete a group within in the root node. But if I delete a layer within a group QGIS crashes (core dump).
my code :
class Project:
def __init__(self):
self.name = ""
self.layer_tree_group = self.set_layer_tree_group()
self.layers = []
def set_layer_tree_group(self):
self.layer_tree_group = QgsLayerTreeGroup()
self.layer_tree_group.setName(self.name)
self.layer_tree_group.setCustomProperty("Project", self.project.name )
def add_layer(self):
point_layer = QgsVectorLayer("Point?crs=4326", "project_layer", "memory")
QgsMapLayerRegistry.instance().addMapLayer(point_layer, False)
self.layer_tree_group.insertLayer(0, layer)
class PluginInterface:
list_project = []
def __init__(self):
self.active_project = self.group_selected
QgsProject.instance().layerTreeRoot().willRemoveChildren.connect(self.onWillRemoveChildren)
def onWillRemoveChildren(self, node, indexFrom, indexTo):
print "Will remove", node.name(), indexFrom, indexTo
The aim is to delete instance of Project if a user remove a group or a layer in the legend.
How can achieve it ?