- QWidget* aParent = qobject_cast<QWidget*>( this->parent() );
-
- this->Suspend();
-
- MeasureGUI_CreateDimensionDlg* aCreateDlg = new MeasureGUI_CreateDimensionDlg( myEditObject, myGeomGUI, aParent );
-
- connect( aCreateDlg, SIGNAL( finished( int ) ), this, SLOT( Resume() ) );
-
- // this is necessary as the GEOMBase_Helper switches selection mode on destruction
- connect( aCreateDlg, SIGNAL( destroyed( QObject* ) ), this, SLOT( Resume() ) );
-
- aCreateDlg->updateGeometry();
- aCreateDlg->resize( aCreateDlg->minimumSizeHint() );
- aCreateDlg->show();
+ if(!myCreateDialog) {
+ QWidget* aParent = qobject_cast<QWidget*>( this->parent() );
+ this->Suspend();
+ myCreateDialog = new MeasureGUI_CreateDimensionDlg( myEditObject, myGeomGUI, aParent );
+ connect( myCreateDialog, SIGNAL( finished( int ) ), this, SLOT( Resume() ) );
+ // this is necessary as the GEOMBase_Helper switches selection mode on destruction
+ connect( myCreateDialog, SIGNAL( destroyed( QObject* ) ), this, SLOT( Resume() ) );
+ connect( myCreateDialog, SIGNAL( applyClicked() ), this, SLOT( OnDimensionAdded() ) );
+ myCreateDialog->updateGeometry();
+ myCreateDialog->resize( myCreateDialog->minimumSizeHint() );
+ myCreateDialog->show();
+ } else {
+ myCreateDialog->activateWindow();
+ }
+ myObjectSelector->setEnabled(false);
+ myDimensionView->setEnabled(false);