Skip to content

Commit bfc3b6c

Browse files
author
mhugent
committed
More robust parsing of project snapping options
git-svn-id: http://svn.osgeo.org/qgis/trunk@10883 c8812cc2-4d05-0410-92ff-de0c093fc19c
1 parent bc83daf commit bfc3b6c

File tree

1 file changed

+47
-19
lines changed

1 file changed

+47
-19
lines changed

src/app/qgsprojectproperties.cpp

+47-19
Original file line numberDiff line numberDiff line change
@@ -120,13 +120,12 @@ QgsProjectProperties::QgsProjectProperties( QgsMapCanvas* mapCanvas, QWidget *pa
120120
mAvoidIntersectionsCheckBox->setCheckState( Qt::Unchecked );
121121
}
122122

123-
bool ok;
124-
bool toleranceUnitOk; //1.0 project files may not have a unit entry
125-
QStringList layerIdList = QgsProject::instance()->readListEntry( "Digitizing", "/LayerSnappingList", &ok );
126-
QStringList enabledList = QgsProject::instance()->readListEntry( "Digitizing", "/LayerSnappingEnabledList", &ok );
127-
QStringList toleranceList = QgsProject::instance()->readListEntry( "Digitizing", "/LayerSnappingToleranceList", &ok );
128-
QStringList toleranceUnitList = QgsProject::instance()->readListEntry( "Digitizing", "/LayerSnappingToleranceUnitList", &toleranceUnitOk );
129-
QStringList snapToList = QgsProject::instance()->readListEntry( "Digitizing", "/LayerSnapToList", &ok );
123+
bool layerIdListOk, enabledListOk, toleranceListOk, toleranceUnitListOk, snapToListOk;
124+
QStringList layerIdList = QgsProject::instance()->readListEntry( "Digitizing", "/LayerSnappingList", &layerIdListOk );
125+
QStringList enabledList = QgsProject::instance()->readListEntry( "Digitizing", "/LayerSnappingEnabledList", &enabledListOk );
126+
QStringList toleranceList = QgsProject::instance()->readListEntry( "Digitizing", "/LayerSnappingToleranceList", & toleranceListOk);
127+
QStringList toleranceUnitList = QgsProject::instance()->readListEntry( "Digitizing", "/LayerSnappingToleranceUnitList", & toleranceUnitListOk);
128+
QStringList snapToList = QgsProject::instance()->readListEntry( "Digitizing", "/LayerSnapToList", &snapToListOk );
130129

131130
QStringList::const_iterator idIter = layerIdList.constBegin();
132131
QStringList::const_iterator enabledIter = enabledList.constBegin();
@@ -139,33 +138,62 @@ QgsProjectProperties::QgsProjectProperties( QgsMapCanvas* mapCanvas, QWidget *pa
139138
//create the new layer entries
140139
for ( ; idIter != layerIdList.constEnd(); ++idIter, ++enabledIter, ++tolIter, ++tolUnitIter, ++snapToIter )
141140
{
142-
currentLayer = QgsMapLayerRegistry::instance()->mapLayer( *idIter );
141+
if(layerIdListOk)
142+
{
143+
currentLayer = QgsMapLayerRegistry::instance()->mapLayer( *idIter );
144+
}
145+
else
146+
{
147+
break;
148+
}
149+
143150
if ( currentLayer )
144151
{
145152
LayerEntry newEntry;
146153
newEntry.layerName = currentLayer->name();
147-
if (( *enabledIter ) == "enabled" )
154+
155+
newEntry.checked = false;
156+
if(enabledListOk && enabledIter != enabledList.constEnd())
148157
{
149-
newEntry.checked = true;
158+
if (( *enabledIter ) == "enabled" )
159+
{
160+
newEntry.checked = true;
161+
}
150162
}
151-
else
163+
164+
//snap to vertex / segment / vertex and segment
165+
if(snapToListOk &&snapToIter != snapToList.constEnd())
152166
{
153-
newEntry.checked = false;
167+
if (( *snapToIter ) == "to_vertex" )
168+
{
169+
newEntry.snapTo = 0;
170+
}
171+
else if (( *snapToIter ) == "to_segment" )
172+
{
173+
newEntry.snapTo = 1;
174+
}
175+
else //to vertex and segment
176+
{
177+
newEntry.snapTo = 2;
178+
}
154179
}
155-
if (( *snapToIter ) == "to_vertex" )
180+
else
156181
{
157182
newEntry.snapTo = 0;
158183
}
159-
else if (( *snapToIter ) == "to_segment" )
184+
185+
//snap tolerance
186+
if(toleranceListOk && tolIter != toleranceList.constEnd())
160187
{
161-
newEntry.snapTo = 1;
188+
newEntry.tolerance = tolIter->toDouble();
162189
}
163-
else //to vertex and segment
190+
else
164191
{
165-
newEntry.snapTo = 2;
192+
newEntry.tolerance = 0;
166193
}
167-
newEntry.tolerance = tolIter->toDouble();
168-
if ( toleranceUnitOk )
194+
195+
//snap tolerance unit
196+
if (toleranceUnitListOk && tolUnitIter != toleranceUnitList.constEnd())
169197
{
170198
newEntry.toleranceUnit = tolUnitIter->toInt();
171199
}

0 commit comments

Comments
 (0)