|
42 | 42 | #include <QVBoxLayout> |
43 | 43 | #include <QLineEdit> |
44 | 44 |
|
| 45 | +int QgsAttributeDialog::smFormCounter = 0; |
| 46 | + |
45 | 47 | QgsAttributeDialog::QgsAttributeDialog( QgsVectorLayer *vl, QgsFeature *thepFeature ) |
46 | 48 | : mDialog( 0 ) |
47 | 49 | , mSettingsPath( "/Windows/AttributeDialog/" ) |
48 | 50 | , mLayer( vl ) |
49 | 51 | , mpFeature( thepFeature ) |
50 | 52 | , mRubberBand( 0 ) |
| 53 | + , mFormNr( -1 ) |
51 | 54 | { |
52 | 55 | if ( mpFeature == NULL || vl->dataProvider() == NULL ) |
53 | 56 | return; |
@@ -227,9 +230,10 @@ QgsAttributeDialog::QgsAttributeDialog( QgsVectorLayer *vl, QgsFeature *thepFeat |
227 | 230 | QgisApp::instance()->runPythonString( QString( "import %1" ).arg( module.left( pos ) ) ); |
228 | 231 | } |
229 | 232 |
|
230 | | - QgisApp::instance()->runPythonString( QString( "_qgis_featureform_%1 = wrapinstance( %2, QtGui.QDialog )" ).arg( mLayer->getLayerID() ).arg(( unsigned long ) mDialog ) ); |
| 233 | + mFormNr = smFormCounter++; |
| 234 | + QgisApp::instance()->runPythonString( QString( "_qgis_featureform_%1 = wrapinstance( %2, QtGui.QDialog )" ).arg( mFormNr ).arg(( unsigned long ) mDialog ) ); |
231 | 235 |
|
232 | | - QString expr = QString( "%1(_qgis_featureform_%2,'%2',%3)" ).arg( vl->editFormInit() ).arg( vl->getLayerID() ).arg( mpFeature->id() ); |
| 236 | + QString expr = QString( "%1(_qgis_featureform_%2,'%3',%4)" ).arg( vl->editFormInit() ).arg( mFormNr ).arg( vl->getLayerID() ).arg( mpFeature->id() ); |
233 | 237 | QgsDebugMsg( QString( "running featureForm init: %1" ).arg( expr ) ); |
234 | 238 | QgisApp::instance()->runPythonString( expr ); |
235 | 239 | } |
@@ -331,8 +335,11 @@ void QgsAttributeDialog::dialogDestroyed() |
331 | 335 | mLayer->setProperty( "featureForm.dialog", QVariant() ); |
332 | 336 | mLayer->setProperty( "featureForm.id", QVariant() ); |
333 | 337 | #endif |
334 | | - QString expr = QString( "if locals().has_key('_qgis_featureform_%1'): del _qgis_featureform_%1\n" ).arg( mLayer->getLayerID() ); |
335 | | - QgisApp::instance()->runPythonString( expr ); |
| 338 | + if ( -1 < mFormNr ) |
| 339 | + { |
| 340 | + QString expr = QString( "if locals().has_key('_qgis_featureform_%1'): del _qgis_featureform_%1\n" ).arg( mFormNr ); |
| 341 | + QgisApp::instance()->runPythonString( expr ); |
| 342 | + } |
336 | 343 |
|
337 | 344 | mDialog = NULL; |
338 | 345 | deleteLater(); |
|
0 commit comments