]> SALOME platform Git repositories - modules/geom.git/commitdiff
Salome HOME
0019050: EDF 521 (For GEOM/BasicGUI): Improve selection process in the dialogs
authordmv <dmv@opencascade.com>
Fri, 5 Sep 2008 14:01:48 +0000 (14:01 +0000)
committerdmv <dmv@opencascade.com>
Fri, 5 Sep 2008 14:01:48 +0000 (14:01 +0000)
12 files changed:
src/BasicGUI/BasicGUI_ArcDlg.cxx
src/BasicGUI/BasicGUI_CircleDlg.cxx
src/BasicGUI/BasicGUI_CurveDlg.cxx
src/BasicGUI/BasicGUI_EllipseDlg.cxx
src/BasicGUI/BasicGUI_LineDlg.cxx
src/BasicGUI/BasicGUI_MarkerDlg.cxx
src/BasicGUI/BasicGUI_PlaneDlg.cxx
src/BasicGUI/BasicGUI_PointDlg.cxx
src/BasicGUI/BasicGUI_VectorDlg.cxx
src/BasicGUI/BasicGUI_WorkingPlaneDlg.cxx
src/OperationGUI/OperationGUI_PartitionDlg.cxx
src/PrimitiveGUI/PrimitiveGUI_FaceDlg.cxx

index 4446ed7903d3f8ffb87a6e2137d08848fa1be4d2..8ca36253b80e5e8402d976eb782f368cb00503e2 100644 (file)
@@ -79,6 +79,10 @@ BasicGUI_ArcDlg::BasicGUI_ArcDlg( GeometryGUI* theGeometryGUI, QWidget* parent,
   Group3Pnts->LineEdit2->setReadOnly( true );
   Group3Pnts->LineEdit3->setReadOnly( true );
 
+  Group3Pnts->LineEdit1->setEnabled(true);
+  Group3Pnts->LineEdit2->setEnabled(false);
+  Group3Pnts->LineEdit3->setEnabled(false);
+
   Group3Pnts->PushButton1->setIcon(image2);
   Group3Pnts->PushButton2->setIcon(image2);
   Group3Pnts->PushButton3->setIcon(image2);
@@ -95,6 +99,10 @@ BasicGUI_ArcDlg::BasicGUI_ArcDlg( GeometryGUI* theGeometryGUI, QWidget* parent,
   Group3Pnts2->LineEdit2->setReadOnly( true );
   Group3Pnts2->LineEdit3->setReadOnly( true );
 
+  Group3Pnts2->LineEdit1->setEnabled(true);
+  Group3Pnts2->LineEdit2->setEnabled(false);
+  Group3Pnts2->LineEdit3->setEnabled(false);
+
   Group3Pnts2->PushButton1->setIcon( image2 );
   Group3Pnts2->PushButton2->setIcon( image2 );
   Group3Pnts2->PushButton3->setIcon( image2 );
@@ -132,6 +140,7 @@ void BasicGUI_ArcDlg::Init()
 
   myPoint1 = myPoint2 = myPoint3 = GEOM::GEOM_Object::_nil();
   Group3Pnts2->CheckButton1->setChecked( false );
+  Group3Pnts->PushButton1->setDown(true);
 
   /* signals and slots connections */
   connect( myGeomGUI, SIGNAL( SignalDeactivateActiveDialog() ), this, SLOT( DeactivateActiveDialog() ) );
@@ -190,6 +199,7 @@ bool BasicGUI_ArcDlg::ClickOnApply()
     return false;
 
   initName();
+  ConstructorsClicked( getConstructorId() );
 
   return true;
 }
@@ -260,16 +270,45 @@ void BasicGUI_ArcDlg::SelectionIntoArgument()
 
     myEditCurrentArgument->setText(aName);
 
+    if (!aSelectedObject->_is_nil()) { // clear selection if something selected
+      globalSelection();
+      localSelection( GEOM::GEOM_Object::_nil(), TopAbs_VERTEX );      
+    }
+
     switch ( getConstructorId() ) {
     case 0:
-      if      ( myEditCurrentArgument == Group3Pnts->LineEdit1 )   myPoint1 = aSelectedObject;
-      else if ( myEditCurrentArgument == Group3Pnts->LineEdit2 )   myPoint2 = aSelectedObject;
-      else if ( myEditCurrentArgument == Group3Pnts->LineEdit3 )   myPoint3 = aSelectedObject;
+      if      ( myEditCurrentArgument == Group3Pnts->LineEdit1 ) {
+       myPoint1 = aSelectedObject;
+       if ( !myPoint1->_is_nil() && myPoint2->_is_nil() )
+         Group3Pnts->PushButton2->click();
+      }
+      else if ( myEditCurrentArgument == Group3Pnts->LineEdit2 ) {
+       myPoint2 = aSelectedObject;
+       if ( !myPoint2->_is_nil() && myPoint3->_is_nil() )
+         Group3Pnts->PushButton3->click();
+      }
+      else if ( myEditCurrentArgument == Group3Pnts->LineEdit3 ) {
+       myPoint3 = aSelectedObject;
+       if ( !myPoint3->_is_nil() && myPoint1->_is_nil() )
+         Group3Pnts->PushButton1->click();
+      }
       break;
     case 1:
-      if      ( myEditCurrentArgument == Group3Pnts2->LineEdit1 )   myPoint1 = aSelectedObject;
-      else if ( myEditCurrentArgument == Group3Pnts2->LineEdit2 )   myPoint2 = aSelectedObject;
-      else if ( myEditCurrentArgument == Group3Pnts2->LineEdit3 )   myPoint3 = aSelectedObject;
+      if ( myEditCurrentArgument == Group3Pnts2->LineEdit1 ) {
+       myPoint1 = aSelectedObject;
+       if ( !myPoint1->_is_nil() && myPoint2->_is_nil() )
+         Group3Pnts2->PushButton2->click();
+      }
+      else if ( myEditCurrentArgument == Group3Pnts2->LineEdit2 ) {
+       myPoint2 = aSelectedObject;
+       if ( !myPoint2->_is_nil() && myPoint3->_is_nil() )
+         Group3Pnts2->PushButton3->click();
+      }
+      else if ( myEditCurrentArgument == Group3Pnts2->LineEdit3 ) {
+       myPoint3 = aSelectedObject;
+       if ( !myPoint3->_is_nil() && myPoint1->_is_nil() )
+         Group3Pnts2->PushButton1->click();
+      }
       break;
     }
   }
@@ -284,21 +323,68 @@ void BasicGUI_ArcDlg::SelectionIntoArgument()
 //=================================================================================
 void BasicGUI_ArcDlg::SetEditCurrentArgument()
 {
+  globalSelection(); // close local selection to clear it
+  localSelection( GEOM::GEOM_Object::_nil(), TopAbs_VERTEX );
+
   QPushButton* send = (QPushButton*)sender();
   switch ( getConstructorId() ) {
   case 0:
-    if      ( send == Group3Pnts->PushButton1 )   myEditCurrentArgument = Group3Pnts->LineEdit1;
-    else if ( send == Group3Pnts->PushButton2 )   myEditCurrentArgument = Group3Pnts->LineEdit2;
-    else if ( send == Group3Pnts->PushButton3 )   myEditCurrentArgument = Group3Pnts->LineEdit3;
+    if      ( send == Group3Pnts->PushButton1 ) {
+      myEditCurrentArgument = Group3Pnts->LineEdit1;
+      Group3Pnts->PushButton2->setDown(false);
+      Group3Pnts->PushButton3->setDown(false);
+      Group3Pnts->LineEdit1->setEnabled(true);
+      Group3Pnts->LineEdit2->setEnabled(false);
+      Group3Pnts->LineEdit3->setEnabled(false);
+    }
+    else if ( send == Group3Pnts->PushButton2 ) {
+      myEditCurrentArgument = Group3Pnts->LineEdit2;
+      Group3Pnts->PushButton1->setDown(false);
+      Group3Pnts->PushButton3->setDown(false);
+      Group3Pnts->LineEdit1->setEnabled(false);
+      Group3Pnts->LineEdit2->setEnabled(true);
+      Group3Pnts->LineEdit3->setEnabled(false);
+    }
+    else if ( send == Group3Pnts->PushButton3 ) {
+      myEditCurrentArgument = Group3Pnts->LineEdit3;
+      Group3Pnts->PushButton1->setDown(false);
+      Group3Pnts->PushButton2->setDown(false);
+      Group3Pnts->LineEdit1->setEnabled(false);
+      Group3Pnts->LineEdit2->setEnabled(false);
+      Group3Pnts->LineEdit3->setEnabled(true);
+    }
     break;
   case 1:
-    if      ( send == Group3Pnts2->PushButton1 )   myEditCurrentArgument = Group3Pnts2->LineEdit1;
-    else if ( send == Group3Pnts2->PushButton2 )   myEditCurrentArgument = Group3Pnts2->LineEdit2;
-    else if ( send == Group3Pnts2->PushButton3 )   myEditCurrentArgument = Group3Pnts2->LineEdit3;
+    if      ( send == Group3Pnts2->PushButton1 ) {
+      myEditCurrentArgument = Group3Pnts2->LineEdit1;
+      Group3Pnts2->PushButton2->setDown(false);
+      Group3Pnts2->PushButton3->setDown(false);
+      Group3Pnts2->LineEdit1->setEnabled(true);
+      Group3Pnts2->LineEdit2->setEnabled(false);
+      Group3Pnts2->LineEdit3->setEnabled(false);
+    }
+    else if ( send == Group3Pnts2->PushButton2 ) {
+      myEditCurrentArgument = Group3Pnts2->LineEdit2;
+      Group3Pnts2->PushButton1->setDown(false);
+      Group3Pnts2->PushButton3->setDown(false);
+      Group3Pnts2->LineEdit1->setEnabled(false);
+      Group3Pnts2->LineEdit2->setEnabled(true);
+      Group3Pnts2->LineEdit3->setEnabled(false);
+    }
+    else if ( send == Group3Pnts2->PushButton3 ) {
+      myEditCurrentArgument = Group3Pnts2->LineEdit3;
+      Group3Pnts2->PushButton1->setDown(false);
+      Group3Pnts2->PushButton2->setDown(false);
+      Group3Pnts2->LineEdit1->setEnabled(false);
+      Group3Pnts2->LineEdit2->setEnabled(false);
+      Group3Pnts2->LineEdit3->setEnabled(true);
+    }
     break;
   }
   myEditCurrentArgument->setFocus();
-  SelectionIntoArgument();
+  //  SelectionIntoArgument();
+  send->setDown(true);
+  displayPreview();
 }
 
 
@@ -439,10 +525,16 @@ void BasicGUI_ArcDlg::ConstructorsClicked( int constructorId )
 
       Group3Pnts2->hide();
       Group3Pnts->show();
-
-      Group3Pnts->LineEdit1->setText( Group3Pnts2->LineEdit1->text() );
-      Group3Pnts->LineEdit2->setText( Group3Pnts2->LineEdit2->text() );
-      Group3Pnts->LineEdit3->setText( Group3Pnts2->LineEdit3->text() );
+      Group3Pnts->PushButton1->setDown(true);
+      Group3Pnts->PushButton2->setDown(false);
+      Group3Pnts->PushButton3->setDown(false);
+      Group3Pnts->LineEdit1->setText( "" );
+      Group3Pnts->LineEdit2->setText( "" );
+      Group3Pnts->LineEdit3->setText( "" );
+      Group3Pnts->LineEdit1->setEnabled(true);
+      Group3Pnts->LineEdit2->setEnabled(false);
+      Group3Pnts->LineEdit3->setEnabled(false);
+      myPoint1 = myPoint2 = myPoint3 = GEOM::GEOM_Object::_nil();
 
       myEditCurrentArgument = Group3Pnts->LineEdit1;
       break;
@@ -454,10 +546,16 @@ void BasicGUI_ArcDlg::ConstructorsClicked( int constructorId )
 
       Group3Pnts->hide();
       Group3Pnts2->show();
-
-      Group3Pnts2->LineEdit1->setText( Group3Pnts->LineEdit1->text() );
-      Group3Pnts2->LineEdit2->setText( Group3Pnts->LineEdit2->text() );
-      Group3Pnts2->LineEdit3->setText( Group3Pnts->LineEdit3->text() );
+      Group3Pnts2->PushButton1->setDown(true);
+      Group3Pnts2->PushButton2->setDown(false);
+      Group3Pnts2->PushButton3->setDown(false);
+      Group3Pnts2->LineEdit1->setText( "" );
+      Group3Pnts2->LineEdit2->setText( "" );
+      Group3Pnts2->LineEdit3->setText( "" );
+      Group3Pnts2->LineEdit1->setEnabled(true);
+      Group3Pnts2->LineEdit2->setEnabled(false);
+      Group3Pnts2->LineEdit3->setEnabled(false);
+      myPoint1 = myPoint2 = myPoint3 = GEOM::GEOM_Object::_nil();
       
       myEditCurrentArgument = Group3Pnts2->LineEdit1;
       break;
index 23fc15a4dfa71df96f7d865490e503f334b556ce..4efa33edc63e8c1088310b28539bc1a153a27e40 100644 (file)
@@ -74,10 +74,14 @@ BasicGUI_CircleDlg::BasicGUI_CircleDlg( GeometryGUI* theGeometryGUI, QWidget* pa
   GroupPntVecR->TextLabel3->setText( tr( "GEOM_RADIUS" ) );
   GroupPntVecR->PushButton1->setIcon( image1 );
   GroupPntVecR->PushButton2->setIcon( image1 );
+  GroupPntVecR->PushButton1->setDown( true );
 
   GroupPntVecR->LineEdit1->setReadOnly( true );
   GroupPntVecR->LineEdit2->setReadOnly( true );
 
+  GroupPntVecR->LineEdit1->setEnabled( true );
+  GroupPntVecR->LineEdit2->setEnabled( false );
+
   Group3Pnts = new DlgRef_3Sel( centralWidget() );
 
   Group3Pnts->GroupBox1->setTitle( tr( "GEOM_3_POINTS" ) );
@@ -87,10 +91,14 @@ BasicGUI_CircleDlg::BasicGUI_CircleDlg( GeometryGUI* theGeometryGUI, QWidget* pa
   Group3Pnts->PushButton1->setIcon( image1 );
   Group3Pnts->PushButton2->setIcon( image1 );
   Group3Pnts->PushButton3->setIcon( image1 );
+  Group3Pnts->PushButton1->setDown( true );
 
   Group3Pnts->LineEdit1->setReadOnly( true );
   Group3Pnts->LineEdit2->setReadOnly( true );
   Group3Pnts->LineEdit3->setReadOnly( true );
+  Group3Pnts->LineEdit1->setEnabled( true );
+  Group3Pnts->LineEdit2->setEnabled( false );
+  Group3Pnts->LineEdit3->setEnabled( false );
 
   GroupCenter2Pnts = new DlgRef_3Sel( centralWidget() );
   GroupCenter2Pnts->GroupBox1->setTitle( tr( "GEOM_CENTER_2POINTS" ) );
@@ -100,11 +108,16 @@ BasicGUI_CircleDlg::BasicGUI_CircleDlg( GeometryGUI* theGeometryGUI, QWidget* pa
   GroupCenter2Pnts->PushButton1->setIcon( image1 );
   GroupCenter2Pnts->PushButton2->setIcon( image1 );
   GroupCenter2Pnts->PushButton3->setIcon( image1 );
+  GroupCenter2Pnts->PushButton1->setDown( true );
 
   GroupCenter2Pnts->LineEdit1->setReadOnly( true );
   GroupCenter2Pnts->LineEdit2->setReadOnly( true );
   GroupCenter2Pnts->LineEdit3->setReadOnly( true );
 
+  GroupCenter2Pnts->LineEdit1->setEnabled( true );
+  GroupCenter2Pnts->LineEdit2->setEnabled( false );
+  GroupCenter2Pnts->LineEdit3->setEnabled( false );
+
   QVBoxLayout* layout = new QVBoxLayout( centralWidget() );
   layout->setMargin( 0 ); layout->setSpacing( 6 );
   layout->addWidget( GroupPntVecR );
@@ -210,6 +223,10 @@ void BasicGUI_CircleDlg::ConstructorsClicked( int constructorId )
       myEditCurrentArgument = GroupPntVecR->LineEdit1;
       GroupPntVecR->LineEdit1->setText( "" );
       GroupPntVecR->LineEdit2->setText( "" );
+      GroupPntVecR->PushButton1->setDown( true );
+      GroupPntVecR->PushButton2->setDown( false );
+      GroupPntVecR->LineEdit1->setEnabled( true );
+      GroupPntVecR->LineEdit2->setEnabled( false );
       break;
     }
   case 1:
@@ -222,6 +239,12 @@ void BasicGUI_CircleDlg::ConstructorsClicked( int constructorId )
       Group3Pnts->LineEdit1->setText( "" );
       Group3Pnts->LineEdit2->setText( "" );
       Group3Pnts->LineEdit3->setText( "" );
+      Group3Pnts->PushButton1->setDown( true );
+      Group3Pnts->PushButton2->setDown( false );
+      Group3Pnts->PushButton3->setDown( false );
+      Group3Pnts->LineEdit1->setEnabled( true );
+      Group3Pnts->LineEdit2->setEnabled( false );
+      Group3Pnts->LineEdit3->setEnabled( false );
       break;
     }
   case 2:
@@ -234,6 +257,12 @@ void BasicGUI_CircleDlg::ConstructorsClicked( int constructorId )
       GroupCenter2Pnts->LineEdit1->setText( "" );
       GroupCenter2Pnts->LineEdit2->setText( "" );
       GroupCenter2Pnts->LineEdit3->setText( "" );
+      GroupCenter2Pnts->PushButton1->setDown( true );
+      GroupCenter2Pnts->PushButton2->setDown( false );
+      GroupCenter2Pnts->PushButton3->setDown( false );
+      GroupCenter2Pnts->LineEdit1->setEnabled( true );
+      GroupCenter2Pnts->LineEdit2->setEnabled( false );
+      GroupCenter2Pnts->LineEdit3->setEnabled( false );
       break;
     }
   }
@@ -308,13 +337,13 @@ void BasicGUI_CircleDlg::SelectionIntoArgument()
   if ( !CORBA::is_nil( aSelectedObject ) && aRes ) {
     QString aName = GEOMBase::GetName( aSelectedObject );
 
+    TopAbs_ShapeEnum aNeedType = TopAbs_VERTEX;
+    if ( myEditCurrentArgument == GroupPntVecR->LineEdit2 )
+      aNeedType = TopAbs_EDGE;
+
     // If selected Vertex or Edge on the some Shape Get selection Subshape
     TopoDS_Shape aShape;
     if ( GEOMBase::GetShape( aSelectedObject, aShape, TopAbs_SHAPE ) && !aShape.IsNull() ) {
-      TopAbs_ShapeEnum aNeedType = TopAbs_VERTEX;
-      if ( myEditCurrentArgument == GroupPntVecR->LineEdit2 )
-        aNeedType = TopAbs_EDGE;
-
       TColStd_IndexedMapOfInteger aMap;
       aSelMgr->GetIndexes(anIO, aMap);
       if ( aMap.Extent() == 1 ) { // Local Selection
@@ -345,14 +374,51 @@ void BasicGUI_CircleDlg::SelectionIntoArgument()
     
     myEditCurrentArgument->setText( aName );
 
-    if      ( myEditCurrentArgument == GroupPntVecR->LineEdit1 )     myPoint  = aSelectedObject;
-    else if ( myEditCurrentArgument == GroupPntVecR->LineEdit2 )     myDir    = aSelectedObject;
-    else if ( myEditCurrentArgument == Group3Pnts->LineEdit1 )       myPoint1 = aSelectedObject;
-    else if ( myEditCurrentArgument == Group3Pnts->LineEdit2 )       myPoint2 = aSelectedObject;
-    else if ( myEditCurrentArgument == Group3Pnts->LineEdit3 )       myPoint3 = aSelectedObject;
-    else if ( myEditCurrentArgument == GroupCenter2Pnts->LineEdit1 ) myPoint4 = aSelectedObject;
-    else if ( myEditCurrentArgument == GroupCenter2Pnts->LineEdit2 ) myPoint5 = aSelectedObject;
-    else if ( myEditCurrentArgument == GroupCenter2Pnts->LineEdit3 ) myPoint6 = aSelectedObject;
+    if (!aSelectedObject->_is_nil()) { // clear selection if something selected
+      globalSelection();
+      localSelection( GEOM::GEOM_Object::_nil(), aNeedType );
+    }
+
+    if      ( myEditCurrentArgument == GroupPntVecR->LineEdit1 ) {
+      myPoint  = aSelectedObject;
+      if ( !myPoint->_is_nil() && myDir->_is_nil() )
+       GroupPntVecR->PushButton2->click();
+    }
+    else if ( myEditCurrentArgument == GroupPntVecR->LineEdit2 ) {
+      myDir    = aSelectedObject;
+      if ( !myDir->_is_nil() && myPoint->_is_nil() )
+       GroupPntVecR->PushButton1->click();
+    }
+    else if ( myEditCurrentArgument == Group3Pnts->LineEdit1 ) {
+      myPoint1 = aSelectedObject;
+      if ( !myPoint1->_is_nil() && myPoint2->_is_nil() )
+       Group3Pnts->PushButton2->click();
+    }
+    else if ( myEditCurrentArgument == Group3Pnts->LineEdit2 ) {
+      myPoint2 = aSelectedObject;
+      if ( !myPoint2->_is_nil() && myPoint3->_is_nil() )
+       Group3Pnts->PushButton3->click();
+    }
+    else if ( myEditCurrentArgument == Group3Pnts->LineEdit3 ) {
+      myPoint3 = aSelectedObject;
+      if ( !myPoint3->_is_nil() && myPoint1->_is_nil() )
+       Group3Pnts->PushButton1->click();
+    }
+    else if ( myEditCurrentArgument == GroupCenter2Pnts->LineEdit1 ) {
+      myPoint4 = aSelectedObject;
+      if ( !myPoint4->_is_nil() && myPoint5->_is_nil() )
+       GroupCenter2Pnts->PushButton2->click();
+    }
+    else if ( myEditCurrentArgument == GroupCenter2Pnts->LineEdit2 ) {
+      myPoint5 = aSelectedObject;
+      if ( !myPoint5->_is_nil() && myPoint6->_is_nil() )
+       GroupCenter2Pnts->PushButton3->click();
+    }
+    else if ( myEditCurrentArgument == GroupCenter2Pnts->LineEdit3 ) {
+      myPoint6 = aSelectedObject;
+      if ( !myPoint6->_is_nil() && myPoint4->_is_nil() )
+       GroupCenter2Pnts->PushButton1->click();
+    }
   }
 
   displayPreview();
@@ -367,14 +433,67 @@ void BasicGUI_CircleDlg::SetEditCurrentArgument()
 {
   QPushButton* send = (QPushButton*)sender();
 
-  if ( send == GroupPntVecR->PushButton1 )          myEditCurrentArgument = GroupPntVecR->LineEdit1;
-  else if ( send == GroupPntVecR->PushButton2 )     myEditCurrentArgument = GroupPntVecR->LineEdit2;
-  else if ( send == Group3Pnts->PushButton1 )       myEditCurrentArgument = Group3Pnts->LineEdit1;
-  else if ( send == Group3Pnts->PushButton2 )       myEditCurrentArgument = Group3Pnts->LineEdit2;
-  else if ( send == Group3Pnts->PushButton3 )       myEditCurrentArgument = Group3Pnts->LineEdit3;
-  else if ( send == GroupCenter2Pnts->PushButton1 ) myEditCurrentArgument = GroupCenter2Pnts->LineEdit1;
-  else if ( send == GroupCenter2Pnts->PushButton2 ) myEditCurrentArgument = GroupCenter2Pnts->LineEdit2;
-  else if ( send == GroupCenter2Pnts->PushButton3 ) myEditCurrentArgument = GroupCenter2Pnts->LineEdit3;
+  if ( send == GroupPntVecR->PushButton1 ) {
+    myEditCurrentArgument = GroupPntVecR->LineEdit1;
+    GroupPntVecR->PushButton2->setDown(false);
+    GroupPntVecR->LineEdit1->setEnabled( true );
+    GroupPntVecR->LineEdit2->setEnabled( false );
+  }
+  else if ( send == GroupPntVecR->PushButton2 ) {
+    myEditCurrentArgument = GroupPntVecR->LineEdit2;
+    GroupPntVecR->PushButton1->setDown(false);
+    GroupPntVecR->LineEdit1->setEnabled( false );
+    GroupPntVecR->LineEdit2->setEnabled( true );
+  }
+  else if ( send == Group3Pnts->PushButton1 ) {
+    myEditCurrentArgument = Group3Pnts->LineEdit1;
+    Group3Pnts->PushButton2->setDown( false );
+    Group3Pnts->PushButton3->setDown( false );
+    Group3Pnts->LineEdit1->setEnabled( true );
+    Group3Pnts->LineEdit2->setEnabled( false );
+    Group3Pnts->LineEdit3->setEnabled( false );
+  }
+  else if ( send == Group3Pnts->PushButton2 )  {
+    myEditCurrentArgument = Group3Pnts->LineEdit2;
+    Group3Pnts->PushButton1->setDown( false );
+    Group3Pnts->PushButton3->setDown( false );
+    Group3Pnts->LineEdit1->setEnabled( false );
+    Group3Pnts->LineEdit2->setEnabled( true );
+    Group3Pnts->LineEdit3->setEnabled( false );
+  }
+  else if ( send == Group3Pnts->PushButton3 ) {
+    myEditCurrentArgument = Group3Pnts->LineEdit3;
+    Group3Pnts->PushButton1->setDown( false );
+    Group3Pnts->PushButton2->setDown( false );
+    Group3Pnts->LineEdit1->setEnabled( false );
+    Group3Pnts->LineEdit2->setEnabled( false );
+    Group3Pnts->LineEdit3->setEnabled( true );
+  }
+  else if ( send == GroupCenter2Pnts->PushButton1 ) {
+    myEditCurrentArgument = GroupCenter2Pnts->LineEdit1;
+    GroupCenter2Pnts->PushButton2->setDown( false );
+    GroupCenter2Pnts->PushButton3->setDown( false );
+    GroupCenter2Pnts->LineEdit1->setEnabled( true );
+    GroupCenter2Pnts->LineEdit2->setEnabled( false );
+    GroupCenter2Pnts->LineEdit3->setEnabled( false );
+  }
+  else if ( send == GroupCenter2Pnts->PushButton2 ) {
+    myEditCurrentArgument = GroupCenter2Pnts->LineEdit2;
+    GroupCenter2Pnts->PushButton1->setDown( false );
+    GroupCenter2Pnts->PushButton3->setDown( false );
+    GroupCenter2Pnts->LineEdit1->setEnabled( false );
+    GroupCenter2Pnts->LineEdit2->setEnabled( true );
+    GroupCenter2Pnts->LineEdit3->setEnabled( false );
+    
+  }
+  else if ( send == GroupCenter2Pnts->PushButton3 ) {
+    myEditCurrentArgument = GroupCenter2Pnts->LineEdit3;
+    GroupCenter2Pnts->PushButton1->setDown( false );
+    GroupCenter2Pnts->PushButton2->setDown( false );
+    GroupCenter2Pnts->LineEdit1->setEnabled( false );
+    GroupCenter2Pnts->LineEdit2->setEnabled( false );
+    GroupCenter2Pnts->LineEdit3->setEnabled( true );
+  }
 
   
   myEditCurrentArgument->setFocus();
@@ -388,7 +507,10 @@ void BasicGUI_CircleDlg::SetEditCurrentArgument()
     localSelection( GEOM::GEOM_Object::_nil(), TopAbs_VERTEX );
   }
 
-  SelectionIntoArgument();
+  myEditCurrentArgument->setFocus();
+  //  SelectionIntoArgument();
+  send->setDown(true);
+  displayPreview();
 }
 
 //=================================================================================
index a3e278ad1759f7ab3ae38ac4432f5ad960647de9..aa19218758c97dc23b878da426b3b5aba184cb38 100644 (file)
@@ -73,6 +73,7 @@ BasicGUI_CurveDlg::BasicGUI_CurveDlg( GeometryGUI* theGeometryGUI, QWidget* pare
   GroupPoints->GroupBox1->setTitle( tr( "GEOM_NODES" ) );
   GroupPoints->TextLabel1->setText( tr( "GEOM_POINTS" ) );
   GroupPoints->PushButton1->setIcon( image1 );
+  GroupPoints->PushButton1->setDown( true );
 
   GroupPoints->LineEdit1->setReadOnly( true );
 
index 519e088a36a0a3a00f96e3bb383131883ce191d4..36af5ff2147a9c10052199686dd45c324bab0113 100644 (file)
@@ -78,6 +78,8 @@ BasicGUI_EllipseDlg::BasicGUI_EllipseDlg( GeometryGUI* theGeometryGUI, QWidget*
 
   GroupPoints->LineEdit1->setReadOnly( true );
   GroupPoints->LineEdit2->setReadOnly( true );
+  GroupPoints->LineEdit1->setEnabled( true );
+  GroupPoints->LineEdit2->setEnabled( false );
 
   QVBoxLayout* layout = new QVBoxLayout( centralWidget() );
   layout->setMargin( 0 ); layout->setSpacing( 6 );
@@ -109,6 +111,7 @@ void BasicGUI_EllipseDlg::Init()
   myEditCurrentArgument = GroupPoints->LineEdit1;
   globalSelection(); // close local contexts, if any
   localSelection( GEOM::GEOM_Object::_nil(), TopAbs_VERTEX );
+  GroupPoints->PushButton1->setDown(true);
 
   myPoint = myDir = GEOM::GEOM_Object::_nil();
 
@@ -187,8 +190,12 @@ bool BasicGUI_EllipseDlg::ClickOnApply()
   myPoint = myDir = GEOM::GEOM_Object::_nil();
   GroupPoints->LineEdit1->setText( "" );
   GroupPoints->LineEdit2->setText( "" );
+  GroupPoints->PushButton1->setDown(true);
+  GroupPoints->PushButton2->setDown(false);
+  GroupPoints->LineEdit1->setEnabled( true );
+  GroupPoints->LineEdit2->setEnabled( false );
   myEditCurrentArgument = GroupPoints->LineEdit1;
-  //globalSelection(GEOM_POINT);
+
   globalSelection(); // close local contexts, if any
   localSelection( GEOM::GEOM_Object::_nil(), TopAbs_VERTEX );
   displayPreview();
@@ -218,12 +225,12 @@ void BasicGUI_EllipseDlg::SelectionIntoArgument()
     
     // Get Selected object if selected subshape
     TopoDS_Shape aShape;
+
+    TopAbs_ShapeEnum aNeedType = TopAbs_VERTEX;
+    if ( myEditCurrentArgument == GroupPoints->LineEdit2 )
+      aNeedType = TopAbs_EDGE;
     
     if ( GEOMBase::GetShape( aSelectedObject, aShape, TopAbs_SHAPE ) && !aShape.IsNull() ) {
-      TopAbs_ShapeEnum aNeedType = TopAbs_VERTEX;
-      if ( myEditCurrentArgument == GroupPoints->LineEdit2 )
-        aNeedType = TopAbs_EDGE;
-
       LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr();
       TColStd_IndexedMapOfInteger aMap;
       aSelMgr->GetIndexes( anIO, aMap );
@@ -255,8 +262,21 @@ void BasicGUI_EllipseDlg::SelectionIntoArgument()
     
     myEditCurrentArgument->setText( aName );
 
-    if      ( myEditCurrentArgument == GroupPoints->LineEdit1 ) myPoint = aSelectedObject;
-    else if ( myEditCurrentArgument == GroupPoints->LineEdit2 ) myDir   = aSelectedObject;
+    if (!aSelectedObject->_is_nil()) { // clear selection if something selected
+      globalSelection();
+      localSelection( GEOM::GEOM_Object::_nil(), aNeedType );      
+    }
+
+    if ( myEditCurrentArgument == GroupPoints->LineEdit1 ) {
+      myPoint = aSelectedObject;
+      if ( !myPoint->_is_nil() && myDir->_is_nil() )
+       GroupPoints->PushButton2->click();
+    }
+    else if ( myEditCurrentArgument == GroupPoints->LineEdit2 ) {
+      myDir   = aSelectedObject;
+      if ( !myDir->_is_nil() && myPoint->_is_nil() )
+       GroupPoints->PushButton1->click();
+    }
   }
 
   displayPreview();
@@ -270,18 +290,30 @@ void BasicGUI_EllipseDlg::SelectionIntoArgument()
 void BasicGUI_EllipseDlg::SetEditCurrentArgument()
 {
   QPushButton* send = (QPushButton*)sender();
-  globalSelection( GEOM_POINT );
 
-  if      ( send == GroupPoints->PushButton1 ) myEditCurrentArgument = GroupPoints->LineEdit1;
-  else if ( send == GroupPoints->PushButton2 ) myEditCurrentArgument = GroupPoints->LineEdit2;
-  
-  myEditCurrentArgument->setFocus();
+  if ( send == GroupPoints->PushButton1 ) {
+    myEditCurrentArgument = GroupPoints->LineEdit1;
+    GroupPoints->PushButton2->setDown(false);
+    GroupPoints->LineEdit1->setEnabled( true );
+    GroupPoints->LineEdit2->setEnabled( false );
+  }
+  else if ( send == GroupPoints->PushButton2 ) {
+    myEditCurrentArgument = GroupPoints->LineEdit2;
+    GroupPoints->PushButton1->setDown(false);
+    GroupPoints->LineEdit1->setEnabled( false );
+    GroupPoints->LineEdit2->setEnabled( true );
+  }
+
   globalSelection(); // close local contexts, if any
+  TopAbs_ShapeEnum aNeedType = TopAbs_VERTEX;
   if ( myEditCurrentArgument == GroupPoints->LineEdit2 )
-    localSelection( GEOM::GEOM_Object::_nil(), TopAbs_EDGE );
-  else
-    localSelection( GEOM::GEOM_Object::_nil(), TopAbs_VERTEX );
-  SelectionIntoArgument();
+    aNeedType = TopAbs_EDGE;
+  localSelection( GEOM::GEOM_Object::_nil(), aNeedType );
+  
+  myEditCurrentArgument->setFocus();
+  //SelectionIntoArgument();
+  send->setDown(true);
+  displayPreview();
 }
 
 //=================================================================================
index 63c938cb9f95c0118054ed88bb66b2e93985cacc..489f8ee25a7bdc0a3bb8f1c139370f3e30f94313 100644 (file)
@@ -327,14 +327,6 @@ void BasicGUI_LineDlg::SelectionIntoArgument()
 //=================================================================================
 void BasicGUI_LineDlg::SetEditCurrentArgument()
 {
-  if ( IObjectCount() != 0 ) {
-    globalSelection(); // close local selection to clear it
-    TopAbs_ShapeEnum aNeedType = TopAbs_VERTEX;
-    if ( myEditCurrentArgument == GroupFaces->LineEdit1 || myEditCurrentArgument == GroupFaces->LineEdit2 )
-      aNeedType = TopAbs_FACE;
-    localSelection( GEOM::GEOM_Object::_nil(), aNeedType );
-  }
-
   QPushButton* send = (QPushButton*)sender();
   if ( send == GroupPoints->PushButton1 ) {
     myEditCurrentArgument = GroupPoints->LineEdit1;
@@ -360,6 +352,13 @@ void BasicGUI_LineDlg::SetEditCurrentArgument()
     GroupFaces->LineEdit1->setEnabled(false);
     GroupFaces->LineEdit2->setEnabled(true);
   }
+
+  globalSelection(); // close local selection to clear it
+  TopAbs_ShapeEnum aNeedType = TopAbs_VERTEX;
+  if ( myEditCurrentArgument == GroupFaces->LineEdit1 || myEditCurrentArgument == GroupFaces->LineEdit2 )
+    aNeedType = TopAbs_FACE;
+  localSelection( GEOM::GEOM_Object::_nil(), aNeedType );
+
   myEditCurrentArgument->setFocus();
   //  SelectionIntoArgument();
   send->setDown(true);
index 3f0f2fc246262bed2f407d9f894ba2637fe65886..098e39dc0d585450883a41a2720a4a7dbdbfc2b6 100644 (file)
@@ -76,6 +76,7 @@ BasicGUI_MarkerDlg::BasicGUI_MarkerDlg( GeometryGUI* theGeometryGUI, QWidget* th
   Group1->GroupBox1->setTitle( tr( "GEOM_ARGUMENTS" ) );
   Group1->TextLabel1->setText( tr( "GEOM_OBJECT" ) );
   Group1->PushButton1->setIcon( iconSelect );
+  Group1->PushButton1->setDown( true );
 
   Group2 = new DlgRef_3Sel( centralWidget() );
 
@@ -86,6 +87,7 @@ BasicGUI_MarkerDlg::BasicGUI_MarkerDlg( GeometryGUI* theGeometryGUI, QWidget* th
   Group2->PushButton1->setIcon( iconSelect );
   Group2->PushButton2->setIcon( iconSelect );
   Group2->PushButton3->setIcon( iconSelect );
+  Group2->PushButton1->setDown( true );
 
   aMainGrp = new QFrame( centralWidget() );
   aMainGrp->setFrameStyle( QFrame::NoFrame | QFrame::Plain );
@@ -172,6 +174,9 @@ void BasicGUI_MarkerDlg::Init()
   Group2->LineEdit1->setReadOnly( true );
   Group2->LineEdit2->setReadOnly( true );
   Group2->LineEdit3->setReadOnly( true );
+  Group2->LineEdit1->setEnabled( true );
+  Group2->LineEdit2->setEnabled( false );
+  Group2->LineEdit3->setEnabled( false );
 
   connect( this,                SIGNAL( constructorsClicked( int ) ), this, SLOT( ConstructorsClicked( int ) ) );
 
@@ -267,7 +272,7 @@ void BasicGUI_MarkerDlg::ConstructorsClicked( int constructorId )
       aMainGrp->hide();
       Group2->hide();
       Group1->show();
-      
+      Group1->PushButton1->setDown( true );
       globalSelection( GEOM_ALLGEOM );
       myEditCurrentArgument = Group1->LineEdit1;
       Group1->LineEdit1->setText( "" );
@@ -276,15 +281,20 @@ void BasicGUI_MarkerDlg::ConstructorsClicked( int constructorId )
   case 2:
     {
       aMainGrp->hide();
-      Group1->show();
+      Group1->hide();
       Group2->show();
-      
+      Group2->PushButton1->setDown( true );
+      Group2->PushButton2->setDown( false );
+      Group2->PushButton3->setDown( false );
       globalSelection(); // close local contexts, if any
       localSelection( GEOM::GEOM_Object::_nil(), TopAbs_VERTEX );
       myEditCurrentArgument = Group2->LineEdit1;
       Group2->LineEdit1->setText( "" );
       Group2->LineEdit2->setText( "" );
       Group2->LineEdit3->setText( "" );
+      Group2->LineEdit1->setEnabled( true );
+      Group2->LineEdit2->setEnabled( false );
+      Group2->LineEdit3->setEnabled( false );
       break;
     }
   }
@@ -477,6 +487,8 @@ void BasicGUI_MarkerDlg::onSelectionDone()
              myData[ Y ]->setValue( aPnt.Y() );
              myData[ Z ]->setValue( aPnt.Z() );
              myEditCurrentArgument->setText( aName );
+             if (Group2->LineEdit2->text() == "")
+               Group2->PushButton2->click();
            }
            else {
              myData[ X ]->setValue( 0 );
@@ -494,6 +506,8 @@ void BasicGUI_MarkerDlg::onSelectionDone()
              myData[ DY1 ]->setValue( aDir.Y() );
              myData[ DZ1 ]->setValue( aDir.Z() );
              myEditCurrentArgument->setText( aName );
+             if (Group2->LineEdit3->text() == "")
+               Group2->PushButton3->click();
            }
            else {
              myData[ DX1 ]->setValue( 0 );
@@ -511,6 +525,8 @@ void BasicGUI_MarkerDlg::onSelectionDone()
              myData[ DY2 ]->setValue( aDir.Y() );
              myData[ DZ2 ]->setValue( aDir.Z() );
              myEditCurrentArgument->setText( aName );
+             if (Group2->LineEdit1->text() == "")
+               Group2->PushButton1->click();
            }
            else {
              myData[ DX2 ]->setValue( 0 );
@@ -565,6 +581,7 @@ void BasicGUI_MarkerDlg::onSelectionDone()
 void BasicGUI_MarkerDlg::SetEditCurrentArgument()
 {
   QPushButton* send = (QPushButton*)sender();
+  globalSelection(); // close local contexts, if any
 
   if ( send == Group1->PushButton1 ) {
     myEditCurrentArgument = Group1->LineEdit1;
@@ -572,23 +589,34 @@ void BasicGUI_MarkerDlg::SetEditCurrentArgument()
   }
   else if ( send == Group2->PushButton1 ) {
     myEditCurrentArgument = Group2->LineEdit1;
-    //globalSelection( GEOM_POINT );
-    globalSelection(); // close local contexts, if any
     localSelection( GEOM::GEOM_Object::_nil(), TopAbs_VERTEX );
+    Group2->PushButton2->setDown( false );
+    Group2->PushButton3->setDown( false );
+    Group2->LineEdit1->setEnabled( true );
+    Group2->LineEdit2->setEnabled( false );
+    Group2->LineEdit3->setEnabled( false );
   }
   else if ( send == Group2->PushButton2 ) {
     myEditCurrentArgument = Group2->LineEdit2;
-    //globalSelection( GEOM_LINE );
-    globalSelection(); // close local contexts, if any
     localSelection( GEOM::GEOM_Object::_nil(), TopAbs_EDGE );
+    Group2->PushButton1->setDown( false );
+    Group2->PushButton3->setDown( false );
+    Group2->LineEdit1->setEnabled( false );
+    Group2->LineEdit2->setEnabled( true );
+    Group2->LineEdit3->setEnabled( false );
   }
   else if ( send == Group2->PushButton3 ) {
     myEditCurrentArgument = Group2->LineEdit3;
-    globalSelection(); // close local contexts, if any
     localSelection( GEOM::GEOM_Object::_nil(), TopAbs_EDGE );
+    Group2->PushButton1->setDown( false );
+    Group2->PushButton2->setDown( false );
+    Group2->LineEdit1->setEnabled( false );
+    Group2->LineEdit2->setEnabled( false );
+    Group2->LineEdit3->setEnabled( true );
   }
   
   myEditCurrentArgument->setFocus();
+  send->setDown(true);
   onSelectionDone();
 }
 
index 598ecab16c70c1b18d7f46dd49c62415915b7ebe..1a621e0930d774df53f0ad9426fb083e345776cf 100644 (file)
@@ -78,6 +78,9 @@ BasicGUI_PlaneDlg::BasicGUI_PlaneDlg( GeometryGUI* theGeometryGUI, QWidget* pare
   GroupPntDir->PushButton2->setIcon( image3 );
   GroupPntDir->LineEdit1->setReadOnly( true );
   GroupPntDir->LineEdit2->setReadOnly( true );
+  GroupPntDir->PushButton1->setDown( true );
+  GroupPntDir->LineEdit1->setEnabled( true );
+  GroupPntDir->LineEdit2->setEnabled( false );
 
   Group3Pnts = new DlgRef_3Sel1Spin( centralWidget() );
   Group3Pnts->GroupBox1->setTitle( tr( "GEOM_3_POINTS" ) );
@@ -88,16 +91,21 @@ BasicGUI_PlaneDlg::BasicGUI_PlaneDlg( GeometryGUI* theGeometryGUI, QWidget* pare
   Group3Pnts->PushButton1->setIcon( image3 );
   Group3Pnts->PushButton2->setIcon( image3 );
   Group3Pnts->PushButton3->setIcon( image3 );
+  Group3Pnts->PushButton1->setDown( true );
 
   Group3Pnts->LineEdit1->setReadOnly( true );
   Group3Pnts->LineEdit2->setReadOnly( true );
   Group3Pnts->LineEdit3->setReadOnly( true );
+  Group3Pnts->LineEdit1->setEnabled( true );
+  Group3Pnts->LineEdit2->setEnabled( false );
+  Group3Pnts->LineEdit3->setEnabled( false );
 
   GroupFace = new DlgRef_1Sel1Spin( centralWidget() );
   GroupFace->GroupBox1->setTitle( tr( "GEOM_FACE_OR_LCS" ) );
   GroupFace->TextLabel1->setText( tr( "GEOM_SELECTION" ) );
   GroupFace->TextLabel2->setText( tr( "GEOM_PLANE_SIZE" ) );
   GroupFace->PushButton1->setIcon( image3 );
+  GroupFace->PushButton1->setDown( true );
 
   GroupFace->LineEdit1->setReadOnly( true );
 
@@ -217,6 +225,10 @@ void BasicGUI_PlaneDlg::ConstructorsClicked( int constructorId )
       myEditCurrentArgument = GroupPntDir->LineEdit1;
       GroupPntDir->LineEdit1->setText( "" );
       GroupPntDir->LineEdit2->setText( "" );
+      GroupPntDir->PushButton1->setDown( true );
+      GroupPntDir->PushButton2->setDown( false );
+      GroupPntDir->LineEdit1->setEnabled( true );
+      GroupPntDir->LineEdit2->setEnabled( false );
       
       /* for the first argument */
       globalSelection(); // close local contexts, if any
@@ -233,6 +245,12 @@ void BasicGUI_PlaneDlg::ConstructorsClicked( int constructorId )
       Group3Pnts->LineEdit1->setText( "" );
       Group3Pnts->LineEdit2->setText( "" );
       Group3Pnts->LineEdit3->setText( "" );
+      Group3Pnts->PushButton1->setDown( true );
+      Group3Pnts->PushButton2->setDown( false );
+      Group3Pnts->PushButton3->setDown( false );
+      Group3Pnts->LineEdit1->setEnabled( true );
+      Group3Pnts->LineEdit2->setEnabled( false );
+      Group3Pnts->LineEdit3->setEnabled( false );
       
       /* for the first argument */
       globalSelection(); // close local contexts, if any
@@ -247,6 +265,7 @@ void BasicGUI_PlaneDlg::ConstructorsClicked( int constructorId )
       
       myEditCurrentArgument = GroupFace->LineEdit1;
       GroupFace->LineEdit1->setText( "" );
+      GroupFace->PushButton1->setDown( true );
       
       /* for the first argument */
       //globalSelection( GEOM_PLANE );
@@ -316,15 +335,12 @@ void BasicGUI_PlaneDlg::SelectionIntoArgument()
   GEOM::GEOM_Object_var aSelectedObject = GEOMBase::ConvertIOinGEOMObject( firstIObject(), aRes );
   if ( !CORBA::is_nil( aSelectedObject ) && aRes ) {
     QString aName = GEOMBase::GetName( aSelectedObject );
+    TopAbs_ShapeEnum aNeedType = TopAbs_VERTEX;
+    if ( myEditCurrentArgument == GroupPntDir->LineEdit2 )
+      aNeedType = TopAbs_EDGE;
 
     TopoDS_Shape aShape;
     if ( GEOMBase::GetShape( aSelectedObject, aShape, TopAbs_SHAPE ) && !aShape.IsNull() ) {
-      TopAbs_ShapeEnum aNeedType = TopAbs_VERTEX;
-      if ( myEditCurrentArgument == GroupPntDir->LineEdit2 )
-        aNeedType = TopAbs_EDGE;
-      else if ( myEditCurrentArgument == GroupFace->LineEdit1 )
-        aNeedType = TopAbs_FACE;
-
       LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr();
       TColStd_IndexedMapOfInteger aMap;
       aSelMgr->GetIndexes( firstIObject(), aMap );
@@ -358,12 +374,45 @@ void BasicGUI_PlaneDlg::SelectionIntoArgument()
 
     myEditCurrentArgument->setText( aName );
 
-    if      ( myEditCurrentArgument == GroupPntDir->LineEdit1 ) myPoint  = aSelectedObject;
-    else if ( myEditCurrentArgument == GroupPntDir->LineEdit2 ) myDir    = aSelectedObject;
-    else if ( myEditCurrentArgument == Group3Pnts->LineEdit1 )  myPoint1 = aSelectedObject;
-    else if ( myEditCurrentArgument == Group3Pnts->LineEdit2 )  myPoint2 = aSelectedObject;
-    else if ( myEditCurrentArgument == Group3Pnts->LineEdit3 )  myPoint3 = aSelectedObject;
-    else if ( myEditCurrentArgument == GroupFace->LineEdit1 )   myFace   = aSelectedObject;
+    if (!aSelectedObject->_is_nil()) { // clear selection if something selected
+      globalSelection();
+      if ( myEditCurrentArgument == GroupFace->LineEdit1 ) {
+       TColStd_MapOfInteger aMap;
+       aMap.Add( GEOM_PLANE );
+       aMap.Add( GEOM_MARKER );
+       globalSelection( aMap );
+      }
+      else
+       localSelection( GEOM::GEOM_Object::_nil(), aNeedType );
+    }
+
+    if      ( myEditCurrentArgument == GroupPntDir->LineEdit1 ) {
+      myPoint  = aSelectedObject;
+      if ( !myPoint->_is_nil() && myDir->_is_nil() )
+       GroupPntDir->PushButton2->click();
+    }
+    else if ( myEditCurrentArgument == GroupPntDir->LineEdit2 ) {
+      myDir    = aSelectedObject;
+      if ( !myDir->_is_nil() && myPoint->_is_nil() )
+       GroupPntDir->PushButton1->click();
+    }
+    else if ( myEditCurrentArgument == Group3Pnts->LineEdit1 ) {
+      myPoint1 = aSelectedObject;
+      if ( !myPoint1->_is_nil() && myPoint2->_is_nil() )
+       Group3Pnts->PushButton2->click();
+    }
+    else if ( myEditCurrentArgument == Group3Pnts->LineEdit2 ) {
+      myPoint2 = aSelectedObject;
+      if ( !myPoint2->_is_nil() && myPoint3->_is_nil() )
+       Group3Pnts->PushButton3->click();
+    }
+    else if ( myEditCurrentArgument == Group3Pnts->LineEdit3 ) {
+      myPoint3 = aSelectedObject;
+      if ( !myPoint3->_is_nil() && myPoint1->_is_nil() )
+       Group3Pnts->PushButton1->click();
+    }
+    else if ( myEditCurrentArgument == GroupFace->LineEdit1 )
+      myFace   = aSelectedObject;
   }
 
   displayPreview();
@@ -379,17 +428,50 @@ void BasicGUI_PlaneDlg::SetEditCurrentArgument()
   QPushButton* send = (QPushButton*)sender();
   globalSelection( GEOM_POINT );
 
-  if      ( send == GroupPntDir->PushButton1 ) myEditCurrentArgument = GroupPntDir->LineEdit1;
-  else if ( send == GroupPntDir->PushButton2 ) myEditCurrentArgument = GroupPntDir->LineEdit2;
-  else if ( send == Group3Pnts->PushButton1 )  myEditCurrentArgument = Group3Pnts->LineEdit1;
-  else if ( send == Group3Pnts->PushButton2 )  myEditCurrentArgument = Group3Pnts->LineEdit2;
-  else if ( send == Group3Pnts->PushButton3 )  myEditCurrentArgument = Group3Pnts->LineEdit3;
-  else if ( send == GroupFace->PushButton1 )   myEditCurrentArgument = GroupFace->LineEdit1;
+  if      ( send == GroupPntDir->PushButton1 ) {
+    myEditCurrentArgument = GroupPntDir->LineEdit1;
+    GroupPntDir->PushButton2->setDown( false );
+    GroupPntDir->LineEdit1->setEnabled( true );
+    GroupPntDir->LineEdit2->setEnabled( false );
+  }
+  else if ( send == GroupPntDir->PushButton2 ) {
+    myEditCurrentArgument = GroupPntDir->LineEdit2;
+    GroupPntDir->PushButton1->setDown( false );
+    GroupPntDir->LineEdit1->setEnabled( false );
+    GroupPntDir->LineEdit2->setEnabled( true );
+  }
+  else if ( send == Group3Pnts->PushButton1 ) {
+    myEditCurrentArgument = Group3Pnts->LineEdit1;
+    Group3Pnts->PushButton2->setDown( false );
+    Group3Pnts->PushButton3->setDown( false );
+    Group3Pnts->LineEdit1->setEnabled( true );
+    Group3Pnts->LineEdit2->setEnabled( false );
+    Group3Pnts->LineEdit3->setEnabled( false );
+  }
+  else if ( send == Group3Pnts->PushButton2 ) {
+    myEditCurrentArgument = Group3Pnts->LineEdit2;
+    Group3Pnts->PushButton1->setDown( false );
+    Group3Pnts->PushButton3->setDown( false );
+    Group3Pnts->LineEdit1->setEnabled( false );
+    Group3Pnts->LineEdit2->setEnabled( true );
+    Group3Pnts->LineEdit3->setEnabled( false );
+  }
+  else if ( send == Group3Pnts->PushButton3 ) {
+    myEditCurrentArgument = Group3Pnts->LineEdit3;
+    Group3Pnts->PushButton1->setDown( false );
+    Group3Pnts->PushButton2->setDown( false );
+    Group3Pnts->LineEdit1->setEnabled( false );
+    Group3Pnts->LineEdit2->setEnabled( false );
+    Group3Pnts->LineEdit3->setEnabled( true );
+  }
+  else if ( send == GroupFace->PushButton1 ) {
+    myEditCurrentArgument = GroupFace->LineEdit1;
+    GroupFace->PushButton1->setDown( true );
+  }
 
   myEditCurrentArgument->setFocus();
 
   if ( myEditCurrentArgument == GroupPntDir->LineEdit2 ) {
-    globalSelection(); // close local contexts, if any
     localSelection( GEOM::GEOM_Object::_nil(), TopAbs_EDGE );
   }
   else if ( myEditCurrentArgument == GroupFace->LineEdit1 ) {
@@ -399,11 +481,13 @@ void BasicGUI_PlaneDlg::SetEditCurrentArgument()
     globalSelection( aMap );
   }
   else { // 3 Pnts
-    globalSelection(); // close local contexts, if any
     localSelection( GEOM::GEOM_Object::_nil(), TopAbs_VERTEX );
   }
 
-  SelectionIntoArgument();
+  //  SelectionIntoArgument();
+  myEditCurrentArgument->setFocus();
+  send->setDown(true);
+  displayPreview();
 }
 
 
index 59b1121ccf8c8f6a72c8f6895a01b6050dd78b9c..e0e620ac9250ac91de796c48fd1c149106586617 100644 (file)
@@ -112,6 +112,7 @@ BasicGUI_PointDlg::BasicGUI_PointDlg( GeometryGUI* theGeometryGUI, QWidget* pare
   GroupLineIntersection->TextLabel2->setText( tr( "GEOM_LINE2" ) );
   GroupLineIntersection->PushButton1->setIcon( image2 );
   GroupLineIntersection->PushButton2->setIcon( image2 );
+  GroupLineIntersection->LineEdit2->setEnabled(false);
 
   myCoordGrp = new QGroupBox( tr( "GEOM_COORDINATES" ), centralWidget() );
   QGridLayout* myCoordGrpLayout = new QGridLayout( myCoordGrp );
@@ -174,6 +175,8 @@ void BasicGUI_PointDlg::Init()
   GroupRefPoint->LineEdit1->setReadOnly( true );
   GroupLineIntersection->LineEdit1->setReadOnly( true );
   GroupLineIntersection->LineEdit2->setReadOnly( true );
+  GroupLineIntersection->LineEdit1->setEnabled( true );
+  GroupLineIntersection->LineEdit2->setEnabled( false );
 
   myEdge = GEOM::GEOM_Object::_nil();
   myRefPoint = GEOM::GEOM_Object::_nil();
@@ -296,7 +299,7 @@ void BasicGUI_PointDlg::ConstructorsClicked(int constructorId)
       myEditCurrentArgument = GroupRefPoint->LineEdit1;
       myEditCurrentArgument->setText( "" );
       myRefPoint = GEOM::GEOM_Object::_nil();
-      
+      GroupRefPoint->PushButton1->setDown(true);      
       localSelection( GEOM::GEOM_Object::_nil(), TopAbs_VERTEX );
       
       GroupXYZ->hide();
@@ -314,7 +317,7 @@ void BasicGUI_PointDlg::ConstructorsClicked(int constructorId)
       myEditCurrentArgument = GroupOnCurve->LineEdit1;
       myEditCurrentArgument->setText( "" );
       myEdge = GEOM::GEOM_Object::_nil();
-
+      GroupOnCurve->PushButton1->setDown(true);
       localSelection( GEOM::GEOM_Object::_nil(), TopAbs_EDGE );
 
       GroupXYZ->hide();
@@ -332,8 +335,12 @@ void BasicGUI_PointDlg::ConstructorsClicked(int constructorId)
       myEditCurrentArgument = GroupLineIntersection->LineEdit1;
       GroupLineIntersection->LineEdit1->setText( "" );
       GroupLineIntersection->LineEdit2->setText( "" );
+      GroupLineIntersection->LineEdit1->setEnabled( true );
+      GroupLineIntersection->LineEdit2->setEnabled( false );
       myLine1 = GEOM::GEOM_Object::_nil();
       myLine2 = GEOM::GEOM_Object::_nil();
+      GroupLineIntersection->PushButton1->setDown(true);
+      GroupLineIntersection->PushButton2->setDown(false);
 
       localSelection( GEOM::GEOM_Object::_nil(), TopAbs_EDGE );
 
@@ -352,7 +359,7 @@ void BasicGUI_PointDlg::ConstructorsClicked(int constructorId)
       myEditCurrentArgument = GroupOnSurface->LineEdit1;
       myEditCurrentArgument->setText( "" );
       myFace = GEOM::GEOM_Object::_nil();
-
+      GroupOnSurface->PushButton1->setDown(true);
       localSelection( GEOM::GEOM_Object::_nil(), TopAbs_FACE );
 
       GroupXYZ->hide();
@@ -483,13 +490,18 @@ void BasicGUI_PointDlg::SelectionIntoArgument()
         GroupOnCurve->LineEdit1->setText( aName );
       }
       else if ( id == 3 ) {
+       myEditCurrentArgument->setText( aName );
+       globalSelection();
+       localSelection( GEOM::GEOM_Object::_nil(), TopAbs_EDGE );
         if ( myEditCurrentArgument == GroupLineIntersection->LineEdit1 ) {
           myLine1 = aSelectedObject;
-          myEditCurrentArgument->setText( aName );
+         if ( !myLine1->_is_nil() && myLine2->_is_nil() )
+           GroupLineIntersection->PushButton2->click();
         }
         else if ( myEditCurrentArgument == GroupLineIntersection->LineEdit2 ) {
           myLine2 = aSelectedObject;
-          myEditCurrentArgument->setText( aName );
+         if ( !myLine2->_is_nil() && myLine1->_is_nil() )
+           GroupLineIntersection->PushButton1->click();
         }
       }
       else if ( id == 4 )
@@ -530,7 +542,6 @@ void BasicGUI_PointDlg::SetEditCurrentArgument()
   globalSelection(); // close local contexts, if any
 
   QPushButton* send = (QPushButton*)sender();
-  globalSelection( GEOM_POINT ); // to break previous local selection
 
   if ( send == GroupRefPoint->PushButton1 ) {
     GroupRefPoint->LineEdit1->setFocus();
@@ -554,15 +565,20 @@ void BasicGUI_PointDlg::SetEditCurrentArgument()
   else if ( send == GroupLineIntersection->PushButton1 ) {
     GroupLineIntersection->LineEdit1->setFocus();
     myEditCurrentArgument = GroupLineIntersection->LineEdit1;
-
+    GroupLineIntersection->PushButton2->setDown( false );
+    GroupLineIntersection->LineEdit1->setEnabled(true);
+    GroupLineIntersection->LineEdit2->setEnabled(false);
     localSelection( GEOM::GEOM_Object::_nil(), TopAbs_EDGE );
   }
   else if ( send == GroupLineIntersection->PushButton2 ) {
     GroupLineIntersection->LineEdit2->setFocus();
     myEditCurrentArgument = GroupLineIntersection->LineEdit2;
-
+    GroupLineIntersection->PushButton1->setDown( false );
+    GroupLineIntersection->LineEdit1->setEnabled(false);
+    GroupLineIntersection->LineEdit2->setEnabled(true);
     localSelection( GEOM::GEOM_Object::_nil(), TopAbs_EDGE );
   }
+  send->setDown(true);
 }
 
 
index 9408a0a3971f0e8bca95b1e0ebcd7e68f2b93dea..e00aacd41278989ca85922762354be4c6c953f69 100644 (file)
@@ -73,9 +73,12 @@ BasicGUI_VectorDlg::BasicGUI_VectorDlg( GeometryGUI* theGeometryGUI, QWidget* pa
   GroupPoints->TextLabel2->setText( tr( "GEOM_POINT_I" ).arg( 2 ) );
   GroupPoints->PushButton1->setIcon( image2 );
   GroupPoints->PushButton2->setIcon( image2 );
+  GroupPoints->PushButton1->setDown( true );
 
   GroupPoints->LineEdit1->setReadOnly( true );
   GroupPoints->LineEdit2->setReadOnly( true );
+  GroupPoints->LineEdit1->setEnabled( true );
+  GroupPoints->LineEdit2->setEnabled( false );
 
   GroupDimensions = new DlgRef_3Spin1Check( centralWidget() );
   GroupDimensions->GroupBox1->setTitle( tr( "GEOM_COORDINATES" ) );
@@ -197,6 +200,10 @@ void BasicGUI_VectorDlg::ConstructorsClicked( int constructorId )
       myEditCurrentArgument = GroupPoints->LineEdit1;
       GroupPoints->LineEdit1->setText( "" );
       GroupPoints->LineEdit2->setText( "" );
+      GroupPoints->PushButton1->setDown( true );
+      GroupPoints->PushButton2->setDown( false );
+      GroupPoints->LineEdit1->setEnabled( true );
+      GroupPoints->LineEdit2->setEnabled( false );
 
       globalSelection(); // close local contexts, if any
       localSelection( GEOM::GEOM_Object::_nil(), TopAbs_VERTEX );
@@ -251,7 +258,7 @@ bool BasicGUI_VectorDlg::ClickOnApply()
 
   initName();
   if ( getConstructorId() != 1 )
-       ConstructorsClicked( getConstructorId() );
+    ConstructorsClicked( getConstructorId() );
   return true;
 }
 
@@ -308,8 +315,21 @@ void BasicGUI_VectorDlg::SelectionIntoArgument()
 
     myEditCurrentArgument->setText(aName);
 
-    if      ( myEditCurrentArgument == GroupPoints->LineEdit1 ) myPoint1 = aSelectedObject;
-    else if ( myEditCurrentArgument == GroupPoints->LineEdit2 ) myPoint2 = aSelectedObject;
+    if (!aSelectedObject->_is_nil()) { // clear selection if something selected
+      globalSelection();
+      localSelection( GEOM::GEOM_Object::_nil(), TopAbs_VERTEX );
+    }
+
+    if      ( myEditCurrentArgument == GroupPoints->LineEdit1 ) {
+      myPoint1 = aSelectedObject;
+      if ( !myPoint1->_is_nil() && myPoint2->_is_nil() )
+       GroupPoints->PushButton2->click();
+    }
+    else if ( myEditCurrentArgument == GroupPoints->LineEdit2 ) {
+      myPoint2 = aSelectedObject;
+      if ( !myPoint2->_is_nil() && myPoint1->_is_nil() )
+       GroupPoints->PushButton1->click();
+    }
   }
 
   displayPreview();
@@ -323,10 +343,24 @@ void BasicGUI_VectorDlg::SelectionIntoArgument()
 void BasicGUI_VectorDlg::SetEditCurrentArgument()
 {
   QPushButton* send = (QPushButton*)sender();
-  if      ( send == GroupPoints->PushButton1 ) myEditCurrentArgument = GroupPoints->LineEdit1;
-  else if ( send == GroupPoints->PushButton2 ) myEditCurrentArgument = GroupPoints->LineEdit2;
+  if      ( send == GroupPoints->PushButton1 ) {
+    myEditCurrentArgument = GroupPoints->LineEdit1;
+    GroupPoints->PushButton2->setDown(false);
+    GroupPoints->LineEdit1->setEnabled(true);
+    GroupPoints->LineEdit2->setEnabled(false);
+  }
+  else if ( send == GroupPoints->PushButton2 ) {
+    myEditCurrentArgument = GroupPoints->LineEdit2;
+    GroupPoints->PushButton1->setDown(false);
+    GroupPoints->LineEdit1->setEnabled(false);
+    GroupPoints->LineEdit2->setEnabled(true);
+  }
   myEditCurrentArgument->setFocus();
-  SelectionIntoArgument();
+  //  SelectionIntoArgument();
+  globalSelection(); // close local selection to clear it
+  localSelection( GEOM::GEOM_Object::_nil(), TopAbs_VERTEX );
+  send->setDown(true);
+  displayPreview();
 }
 
 
index 55bba2858e9d04ca402521ce79e24fea082a592b..dd2edc4704b9cc5c828c492e6669441a34a76856 100644 (file)
@@ -91,6 +91,9 @@ BasicGUI_WorkingPlaneDlg::BasicGUI_WorkingPlaneDlg( GeometryGUI* theGeometryGUI,
   Group2->PushButton2->setIcon( image0 );
   Group2->LineEdit1->setReadOnly( true );
   Group2->LineEdit2->setReadOnly( true );
+  Group2->PushButton1->setDown( true );
+  Group2->LineEdit1->setEnabled( true );
+  Group2->LineEdit2->setEnabled( false );
 
   Group3 = new DlgRef_3Check( centralWidget() );
 
@@ -192,16 +195,14 @@ void BasicGUI_WorkingPlaneDlg::ConstructorsClicked( int constructorId )
   switch ( constructorId ) {
   case 0:
     {
-      //globalSelection( GEOM_PLANE );
       TColStd_MapOfInteger aMap;
       aMap.Add( GEOM_PLANE );
       aMap.Add( GEOM_MARKER );
       globalSelection( aMap );
-
       Group2->hide();
       Group3->hide();
       Group1->show();
-
+      Group1->PushButton1->setDown(true);
       myEditCurrentArgument = Group1->LineEdit1;
       Group1->LineEdit1->setText( "" );
       myFace = GEOM::GEOM_Object::_nil();
@@ -211,17 +212,17 @@ void BasicGUI_WorkingPlaneDlg::ConstructorsClicked( int constructorId )
     }
   case 1:
     {
-      //globalSelection( GEOM_LINE );
-      GEOM::GEOM_Object_var anObj;
-      localSelection( anObj, TopAbs_EDGE );
-
+      globalSelection( GEOM_LINE );
       Group1->hide();
       Group3->hide();
       Group2->show();
-
       myEditCurrentArgument = Group2->LineEdit1;
       Group2->LineEdit1->setText( "" );
       Group2->LineEdit2->setText( "" );
+      Group2->PushButton1->setDown( true );
+      Group2->PushButton2->setDown( false );
+      Group2->LineEdit1->setEnabled( true );
+      Group2->LineEdit2->setEnabled( false );
       myVectX = GEOM::GEOM_Object::_nil();
       myVectZ = GEOM::GEOM_Object::_nil();
 
@@ -233,7 +234,6 @@ void BasicGUI_WorkingPlaneDlg::ConstructorsClicked( int constructorId )
       Group1->hide();
       Group2->hide();
       Group3->show();
-
       Group3->RadioButton1->setChecked( true );
       aOriginType = 1;
       break;
@@ -337,10 +337,10 @@ void BasicGUI_WorkingPlaneDlg::SelectionIntoArgument()
            myVectZ = aShapesOp->GetSubShape( aSelectedObject, anIndex );
         }
         else {
-          if ( myEditCurrentArgument == Group2->LineEdit1 )
-            myVectX = aSelectedObject;
-          else
-            myVectZ = aSelectedObject;
+         if ( aShape.ShapeType() != TopAbs_EDGE ) {
+           aSelectedObject = GEOM::GEOM_Object::_nil();
+           aName = "";
+         }
         }
         aSelMgr->clearSelected();
       }
@@ -349,6 +349,17 @@ void BasicGUI_WorkingPlaneDlg::SelectionIntoArgument()
 
   myEditCurrentArgument->setText( aName );
 
+  if ( myEditCurrentArgument == Group2->LineEdit1 ) {
+    myVectX = aSelectedObject;
+    if ( !myVectX->_is_nil() && myVectZ->_is_nil() )
+      Group2->PushButton2->click();
+  }
+  else {
+    myVectZ = aSelectedObject;
+    if ( !myVectZ->_is_nil() && myVectX->_is_nil() )
+      Group2->PushButton1->click();
+  }
+
   updateWPlane();
 }
 
@@ -368,16 +379,26 @@ void BasicGUI_WorkingPlaneDlg::SetEditCurrentArgument()
   else if ( send == Group2->PushButton1 ) {
     myEditCurrentArgument = Group2->LineEdit1;
     GEOM::GEOM_Object_var anObj;
-    localSelection( anObj, TopAbs_EDGE );
+    //    localSelection( anObj, TopAbs_EDGE );
+    globalSelection( GEOM_LINE );
+    Group2->PushButton2->setDown( false );
+    Group2->LineEdit1->setEnabled( true );
+    Group2->LineEdit2->setEnabled( false );
   }
   else if ( send == Group2->PushButton2 ) {
     myEditCurrentArgument = Group2->LineEdit2;
     GEOM::GEOM_Object_var anObj;
-    localSelection( anObj, TopAbs_EDGE );
+    //    localSelection( anObj, TopAbs_EDGE );
+    globalSelection( GEOM_LINE );
+    Group2->PushButton1->setDown( false );
+    Group2->LineEdit1->setEnabled( false );
+    Group2->LineEdit2->setEnabled( true );
   }
 
   myEditCurrentArgument->setFocus();
-  SelectionIntoArgument();
+  //  SelectionIntoArgument();
+  send->setDown(true);
+  displayPreview();
 }
 
 
index 6c92e41a7a4584358c92921674f5fca7c59c1432..662cba75c0dd4d9b1110a33b1a08aec9ad701442 100644 (file)
@@ -286,6 +286,7 @@ void OperationGUI_PartitionDlg::SetEditCurrentArgument()
     GroupPoints->LineEdit2->setEnabled(false);
   }
   else if ( send == GroupPoints->PushButton2 ) {
+    myGeomGUI->getApp()->selectionMgr()->clearSelected(); //clear prewious selection
     myEditCurrentArgument = GroupPoints->LineEdit2;
     GroupPoints->PushButton1->setDown(false);
     GroupPoints->LineEdit1->setEnabled(false);
index 011ceb53b128f49915eb3bcfe4228f5cb32be8de..168a00a41bfa8bc6b6f686a44898b3530b67c2ee 100755 (executable)
@@ -102,7 +102,7 @@ PrimitiveGUI_FaceDlg::PrimitiveGUI_FaceDlg( GeometryGUI* theGeometryGUI, QWidget
 
   /***************************************************************/
 
-  setHelpFileName( "create_face_page.html" );
+  setHelpFileName( "create_squareface_page.html" );
 
   Init();
 }