mirror of
https://github.com/qgis/QGIS.git
synced 2025-04-17 00:04:02 -04:00
Added changeGeometry() method as have been suggested on mailing list.
git-svn-id: http://svn.osgeo.org/qgis/trunk@10701 c8812cc2-4d05-0410-92ff-de0c093fc19c
This commit is contained in:
parent
cbc57dcb27
commit
c245c644ae
@ -316,6 +316,10 @@ public:
|
|||||||
/** Make layer editable */
|
/** Make layer editable */
|
||||||
bool startEditing();
|
bool startEditing();
|
||||||
|
|
||||||
|
/** change feature's geometry
|
||||||
|
@note added in version 1.2 */
|
||||||
|
bool changeGeometry(int fid, QgsGeometry* geom);
|
||||||
|
|
||||||
/** changed an attribute value (but does not commit it */
|
/** changed an attribute value (but does not commit it */
|
||||||
bool changeAttributeValue(int fid, int field, QVariant value, bool emitSignal = true);
|
bool changeAttributeValue(int fid, int field, QVariant value, bool emitSignal = true);
|
||||||
|
|
||||||
|
@ -111,8 +111,7 @@ void QgsMapToolDeleteHole::deleteHole( int fId, int beforeVertexNr, QgsVectorLay
|
|||||||
|
|
||||||
if (g->deleteHole( ringNum, partNum ))
|
if (g->deleteHole( ringNum, partNum ))
|
||||||
{
|
{
|
||||||
vlayer->deleteFeature( fId );
|
vlayer->changeGeometry( fId, g );
|
||||||
vlayer->addFeature(f);
|
|
||||||
mCanvas->refresh();
|
mCanvas->refresh();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -106,8 +106,7 @@ void QgsMapToolDeletePart::deletePart( int fId, int beforeVertexNr, QgsVectorLay
|
|||||||
|
|
||||||
if (g->deletePart( partNum ))
|
if (g->deletePart( partNum ))
|
||||||
{
|
{
|
||||||
vlayer->deleteFeature( fId );
|
vlayer->changeGeometry( fId, g );
|
||||||
vlayer->addFeature(f);
|
|
||||||
mCanvas->refresh();
|
mCanvas->refresh();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -90,9 +90,8 @@ void QgsMapToolSimplify::storeSimplified()
|
|||||||
{
|
{
|
||||||
QgsVectorLayer * vlayer = currentVectorLayer();
|
QgsVectorLayer * vlayer = currentVectorLayer();
|
||||||
QgsSimplifyFeature::simplifyLine(mSelectedFeature, mTolerance);
|
QgsSimplifyFeature::simplifyLine(mSelectedFeature, mTolerance);
|
||||||
// TODO(md): change geometry of feature instead of delete+add
|
|
||||||
vlayer->deleteFeature( mSelectedFeature.id() );
|
vlayer->changeGeometry( mSelectedFeature.id(), mSelectedFeature.geometry() );
|
||||||
vlayer->addFeature(mSelectedFeature);
|
|
||||||
|
|
||||||
mCanvas->refresh();
|
mCanvas->refresh();
|
||||||
}
|
}
|
||||||
|
@ -2553,6 +2553,20 @@ bool QgsVectorLayer::writeSymbology( QDomNode& node, QDomDocument& doc, QString&
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool QgsVectorLayer::changeGeometry(int fid, QgsGeometry* geom)
|
||||||
|
{
|
||||||
|
if ( !mEditable || !mDataProvider )
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
mChangedGeometries[ fid ] = *geom;
|
||||||
|
setModified( true, true );
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
bool QgsVectorLayer::changeAttributeValue( int fid, int field, QVariant value, bool emitSignal )
|
bool QgsVectorLayer::changeAttributeValue( int fid, int field, QVariant value, bool emitSignal )
|
||||||
{
|
{
|
||||||
if ( !isEditable() )
|
if ( !isEditable() )
|
||||||
|
@ -378,6 +378,10 @@ class CORE_EXPORT QgsVectorLayer : public QgsMapLayer
|
|||||||
/** Make layer editable */
|
/** Make layer editable */
|
||||||
bool startEditing();
|
bool startEditing();
|
||||||
|
|
||||||
|
/** change feature's geometry
|
||||||
|
@note added in version 1.2 */
|
||||||
|
bool changeGeometry(int fid, QgsGeometry* geom);
|
||||||
|
|
||||||
/** changed an attribute value (but does not commit it) */
|
/** changed an attribute value (but does not commit it) */
|
||||||
bool changeAttributeValue( int fid, int field, QVariant value, bool emitSignal = true );
|
bool changeAttributeValue( int fid, int field, QVariant value, bool emitSignal = true );
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user