@@ -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