[Qgis-developer] Reliable way to determine a groupIndex in the legend tree
Denis Rouzaud
denis.rouzaud at gmail.com
Tue Oct 8 23:12:00 PDT 2013
Hi,
I am not sure we should make any publicity to the legend API which is
very bad.
I hope these methods will deprecated soon ;)
Cheers,
Denis
On 10/08/2013 04:08 PM, Andreas Neumann wrote:
> Hi,
>
> Thank you Bernhard. This works better than my code with the
> legend.groupLayerRelationship()
>
> We should add this to the Python Cookbook
> (http://www.qgis.org/en/docs/pyqgis_developer_cookbook/) - Do you mind?
> Or should I do a pull request?
>
> Do you have a clever strategy to make this same code available in
> multiple QGIS plugins?
>
> But really this should go into the core QGIS API. It is annoying taking
> care of such things.
>
> Andreas
>
> Am 08.10.2013 13:32, schrieb Bernhard Ströbl:
>> Hi Andreas,
>>
>> this is how I do it:
>>
>> def getGroupIndex(self, groupName):
>> '''Find the index for group groupName'''
>> retValue = -1
>> groups = self.iface.legendInterface().groups()
>>
>> for i in range(len(groups)):
>> if groups[i] == groupName:
>> retValue = i
>> break
>>
>> return retValue
>>
>> def moveToGroup(self, layer, groupName):
>> '''move layer into a group'''
>>
>> grpIdx = self.getGroupIndex(groupName)
>>
>> if grpIdx == -1:
>> # add the group
>> grpIdx = self.iface.legendInterface().addGroup(groupName)
>>
>> self.iface.legendInterface().moveLayer(layer, grpIdx)
>>
>> Bernhard
>>
>> Am 08.10.2013 15:17, schrieb Andreas Neumann:
>>> Hi,
>>>
>>> In my python script I would like to append a filtered Postgis layer into
>>> a group with a given name.
>>>
>>> This works fine as long as the user did not activate a group already
>>> interactively. If a group is already active, my method to find the
>>> groupIndex fails. If not group is active, the script works fine.
>>>
>>> Here is my method:
>>>
>>> ---------------
>>> #read the legend tree to find the index of the group defined in groupName
>>> groups = []
>>> for group in self.legend.groupLayerRelationship():
>>> groups.append(group[0])
>>> groupIndex = groups.index(groupName)
>>> if QGis.QGIS_VERSION[0:3] >= "1.9":
>>> groupIndex -= 1
>>>
>>> #move new layer to existing group
>>> self.legend.moveLayer(schulkreisLayer, groupIndex)
>>> --------------
>>>
>>> Is there a more reliable way to find the groupIndex if the user selected
>>> a group already?
>>>
>>> Maybe there is some interference with the setting "New layers should be
>>> added to chosen or current group" setting in "Settings" --> "Options"
>>> --> "Map & Legend" --> "Layerlegend"?
>>>
>>> Thanks,
>>> Andreas
>>> _______________________________________________
>>> Qgis-developer mailing list
>>> Qgis-developer at lists.osgeo.org
>>> http://lists.osgeo.org/mailman/listinfo/qgis-developer
>>>
>>>
>>
>>
>> __________ Information from ESET Mail Security, version of virus
>> signature database 8890 (20131008) __________
>>
>> The message was checked by ESET Mail Security.
>> http://www.eset.com
>>
>>
>> _______________________________________________
>> Qgis-developer mailing list
>> Qgis-developer at lists.osgeo.org
>> http://lists.osgeo.org/mailman/listinfo/qgis-developer
> _______________________________________________
> Qgis-developer mailing list
> Qgis-developer at lists.osgeo.org
> http://lists.osgeo.org/mailman/listinfo/qgis-developer
More information about the Qgis-developer
mailing list