Back to index

salome-geom  6.5.0
Public Member Functions | Protected Member Functions | Private Slots | Private Member Functions | Private Attributes
BasicGUI_VectorDlg Class Reference

#include <BasicGUI_VectorDlg.h>

List of all members.

Public Member Functions

 BasicGUI_VectorDlg (GeometryGUI *, QWidget *=0, bool=false, Qt::WindowFlags=0)
 ~BasicGUI_VectorDlg ()

Protected Member Functions

virtual GEOM::GEOM_IOperations_ptr createOperation ()
virtual bool isValid (QString &)
virtual bool execute (ObjectList &)
virtual void addSubshapesToStudy ()

Private Slots

void ClickOnOk ()
bool ClickOnApply ()
void ActivateThisDialog ()
void DeactivateActiveDialog ()
void SelectionIntoArgument ()
void SetEditCurrentArgument ()
void ConstructorsClicked (int)
void ValueChangedInSpinBox (double)
void ReverseVector (int)
void SetDoubleSpinBoxStep (double)

Private Member Functions

void Init ()
void enterEvent (QEvent *)

Private Attributes

GEOM::GeomObjPtr myPoint1
GEOM::GeomObjPtr myPoint2
DlgRef_2Sel * GroupPoints
DlgRef_3Spin1Check * GroupDimensions

Detailed Description

Definition at line 40 of file BasicGUI_VectorDlg.h.


Constructor & Destructor Documentation

BasicGUI_VectorDlg::BasicGUI_VectorDlg ( GeometryGUI *  theGeometryGUI,
QWidget *  parent = 0,
bool  modal = false,
Qt::WindowFlags  fl = 0 
)

Definition at line 53 of file BasicGUI_VectorDlg.cxx.

  : GEOMBase_Skeleton( theGeometryGUI, parent, modal, fl )
{
  QPixmap image0( SUIT_Session::session()->resourceMgr()->loadPixmap( "GEOM", tr( "ICON_DLG_VECTOR_2P" ) ) );
  QPixmap image1( SUIT_Session::session()->resourceMgr()->loadPixmap( "GEOM", tr( "ICON_DLG_VECTOR_DXYZ" ) ) );
  QPixmap image2( SUIT_Session::session()->resourceMgr()->loadPixmap( "GEOM", tr( "ICON_SELECT" ) ) );

  setWindowTitle( tr( "GEOM_VECTOR_TITLE" ) );

  /***************************************************************/
  mainFrame()->GroupConstructors->setTitle(tr("GEOM_VECTOR"));
  mainFrame()->RadioButton1->setIcon(image0);
  mainFrame()->RadioButton2->setIcon(image1);
  mainFrame()->RadioButton3->setAttribute( Qt::WA_DeleteOnClose );
  mainFrame()->RadioButton3->close();

  GroupPoints = new DlgRef_2Sel( centralWidget() );

  GroupPoints->GroupBox1->setTitle( tr( "GEOM_POINTS" ) );
  GroupPoints->TextLabel1->setText( tr( "GEOM_POINT_I" ).arg( 1 ) );
  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" ) );
  GroupDimensions->TextLabel1->setText( tr( "GEOM_DX" ) );
  GroupDimensions->TextLabel2->setText( tr( "GEOM_DY" ) );
  GroupDimensions->TextLabel3->setText( tr( "GEOM_DZ" ) );
  GroupDimensions->CheckButton1->setText( tr( "GEOM_REVERSE_VECTOR" ) );

  QVBoxLayout* layout = new QVBoxLayout( centralWidget() );
  layout->setMargin( 0 ); layout->setSpacing( 6 );
  layout->addWidget( GroupPoints );
  layout->addWidget( GroupDimensions );
  /***************************************************************/

  setHelpFileName( "create_vector_page.html" );

  /* Initialisations */
  Init();
}

Here is the call graph for this function:

Definition at line 108 of file BasicGUI_VectorDlg.cxx.

{
}

Member Function Documentation

void BasicGUI_VectorDlg::ActivateThisDialog ( ) [private, slot]

Definition at line 338 of file BasicGUI_VectorDlg.cxx.

{
  GEOMBase_Skeleton::ActivateThisDialog();
  connect( myGeomGUI->getApp()->selectionMgr(), SIGNAL( currentSelectionChanged() ),
           this, SLOT( SelectionIntoArgument() ) );
        
  ConstructorsClicked( getConstructorId() );
}

Here is the call graph for this function:

Here is the caller graph for this function:

void BasicGUI_VectorDlg::addSubshapesToStudy ( ) [protected, virtual]

Definition at line 468 of file BasicGUI_VectorDlg.cxx.

{
  if ( getConstructorId() == 0 ) {
    GEOMBase::PublishSubObject( myPoint1.get() );
    GEOMBase::PublishSubObject( myPoint2.get() );
  }
}

Here is the call graph for this function:

bool BasicGUI_VectorDlg::ClickOnApply ( ) [private, slot]

Definition at line 252 of file BasicGUI_VectorDlg.cxx.

{
  buttonApply()->setFocus();

  if ( !onAccept() )
    return false;

  initName();
  if ( getConstructorId() != 1 )
    ConstructorsClicked( getConstructorId() );
  return true;
}

Here is the call graph for this function:

Here is the caller graph for this function:

void BasicGUI_VectorDlg::ClickOnOk ( ) [private, slot]

Definition at line 241 of file BasicGUI_VectorDlg.cxx.

{
  setIsApplyAndClose( true );
  if ( ClickOnApply() )
    ClickOnCancel();
}

Here is the call graph for this function:

Here is the caller graph for this function:

void BasicGUI_VectorDlg::ConstructorsClicked ( int  constructorId) [private, slot]

Definition at line 186 of file BasicGUI_VectorDlg.cxx.

{
  disconnect( myGeomGUI->getApp()->selectionMgr(), 0, this, 0 );
  myPoint1.nullify();
  myPoint2.nullify();

  switch ( constructorId ) {
  case 0:
    {
      GroupDimensions->hide();
      GroupPoints->show();

      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 );
      connect( myGeomGUI->getApp()->selectionMgr(),
               SIGNAL( currentSelectionChanged() ), this, SLOT( SelectionIntoArgument() ) );
      break;
    }
  case 1:
    {
      GroupPoints->hide();
      GroupDimensions->show();
      globalSelection(); // close local contexts, if any

      double dx( 0. ), dy( 0. ), dz( 0. );
      GroupDimensions->SpinBox_DX->setValue( dx );
      GroupDimensions->SpinBox_DY->setValue( dy );
      GroupDimensions->SpinBox_DZ->setValue( dz );

      GroupDimensions->CheckButton1->setChecked( false );
      break;
    }
  }

  qApp->processEvents();
  updateGeometry();
  resize( minimumSizeHint() );
  SelectionIntoArgument();

  displayPreview(true);
}

Here is the call graph for this function:

Here is the caller graph for this function:

GEOM::GEOM_IOperations_ptr BasicGUI_VectorDlg::createOperation ( ) [protected, virtual]

Definition at line 396 of file BasicGUI_VectorDlg.cxx.

{
  return myGeomGUI->GetGeomGen()->GetIBasicOperations( getStudyId() );
}

Definition at line 351 of file BasicGUI_VectorDlg.cxx.

Here is the caller graph for this function:

void BasicGUI_VectorDlg::enterEvent ( QEvent *  ) [private]

Definition at line 360 of file BasicGUI_VectorDlg.cxx.

{
  if ( !mainFrame()->GroupConstructors->isEnabled() )
    ActivateThisDialog();
}

Here is the call graph for this function:

bool BasicGUI_VectorDlg::execute ( ObjectList objects) [protected, virtual]

Definition at line 423 of file BasicGUI_VectorDlg.cxx.

{
  bool res = false;

  GEOM::GEOM_Object_var anObj;

  GEOM::GEOM_IBasicOperations_var anOper = GEOM::GEOM_IBasicOperations::_narrow( getOperation() );

  switch ( getConstructorId() ) {
  case 0 :
    {
      anObj = anOper->MakeVectorTwoPnt( myPoint1.get(), myPoint2.get() );
      res = true;
      break;
    }
  case 1 :
    {
      double dx = GroupDimensions->SpinBox_DX->value();
      double dy = GroupDimensions->SpinBox_DY->value();
      double dz = GroupDimensions->SpinBox_DZ->value();
      
      QStringList aParameters;
      aParameters << GroupDimensions->SpinBox_DX->text();
      aParameters << GroupDimensions->SpinBox_DY->text();
      aParameters << GroupDimensions->SpinBox_DZ->text();
      anObj = anOper->MakeVectorDXDYDZ( dx, dy, dz );

      if ( !anObj->_is_nil() && !IsPreview() )
        anObj->SetParameters(aParameters.join(":").toLatin1().constData());
      
      res = true;
      break;
    }
  }

  if ( !anObj->_is_nil() )
    objects.push_back( anObj._retn() );

  return res;
}

Here is the call graph for this function:

void BasicGUI_VectorDlg::Init ( ) [private]

Definition at line 117 of file BasicGUI_VectorDlg.cxx.

{
    /* init variables */
  myEditCurrentArgument = GroupPoints->LineEdit1;

  myPoint1.nullify();
  myPoint2.nullify();

  /* Get setting of step value from file configuration */
  SUIT_ResourceMgr* resMgr = SUIT_Session::session()->resourceMgr();
  double step = resMgr->doubleValue( "Geometry", "SettingsGeomStep", 100 );

  /* min, max, step and decimals for spin boxes */
  initSpinBox( GroupDimensions->SpinBox_DX, COORD_MIN, COORD_MAX, step, "length_precision" );
  initSpinBox( GroupDimensions->SpinBox_DY, COORD_MIN, COORD_MAX, step, "length_precision" );
  initSpinBox( GroupDimensions->SpinBox_DZ, COORD_MIN, COORD_MAX, step, "length_precision" );

  double dx( 0. ), dy( 0. ), dz( 200. );
  GroupDimensions->SpinBox_DX->setValue( dx );
  GroupDimensions->SpinBox_DY->setValue( dy );
  GroupDimensions->SpinBox_DZ->setValue( dz );

  GroupDimensions->CheckButton1->setChecked( false );

  /* signals and slots connections */
  connect( myGeomGUI, SIGNAL( SignalDeactivateActiveDialog() ), this, SLOT( DeactivateActiveDialog() ) );
  connect( myGeomGUI, SIGNAL( SignalCloseAllDialogs() ),        this, SLOT( ClickOnCancel() ) );

  connect( buttonOk(),     SIGNAL( clicked() ), this, SLOT( ClickOnOk() ) );
  connect( buttonApply(),  SIGNAL( clicked() ), this, SLOT( ClickOnApply() ) );

  connect( this,           SIGNAL( constructorsClicked( int ) ), this, SLOT( ConstructorsClicked( int ) ) );

  connect( GroupPoints->PushButton1, SIGNAL( clicked() ), this, SLOT( SetEditCurrentArgument() ) );
  connect( GroupPoints->PushButton2, SIGNAL( clicked() ), this, SLOT( SetEditCurrentArgument() ) );

  connect( GroupDimensions->SpinBox_DX, SIGNAL( valueChanged( double ) ), this, SLOT( ValueChangedInSpinBox( double ) ) );
  connect( GroupDimensions->SpinBox_DY, SIGNAL( valueChanged( double ) ), this, SLOT( ValueChangedInSpinBox( double ) ) );
  connect( GroupDimensions->SpinBox_DZ, SIGNAL( valueChanged( double ) ), this, SLOT( ValueChangedInSpinBox( double ) ) );

  connect( myGeomGUI, SIGNAL( SignalDefaultStepValueChanged( double ) ), this, SLOT( SetDoubleSpinBoxStep( double ) ) );

  connect( GroupDimensions->CheckButton1, SIGNAL( stateChanged( int ) ), this, SLOT( ReverseVector( int ) ) );

  connect( myGeomGUI->getApp()->selectionMgr(),
           SIGNAL( currentSelectionChanged() ), this, SLOT( SelectionIntoArgument() ) );

  initName( tr("GEOM_VECTOR") );

  setConstructorId( 1 ); // simplest constructor
  ConstructorsClicked( 1 );
}

Here is the call graph for this function:

Here is the caller graph for this function:

bool BasicGUI_VectorDlg::isValid ( QString &  msg) [protected, virtual]

Definition at line 405 of file BasicGUI_VectorDlg.cxx.

{
  bool ok = false;
  if(getConstructorId() == 0) 
    ok = myPoint1 && myPoint2;
  else if(getConstructorId() == 1)
  {
    ok = GroupDimensions->SpinBox_DX->isValid( msg, !IsPreview() ) &&
         GroupDimensions->SpinBox_DY->isValid( msg, !IsPreview() ) &&
         GroupDimensions->SpinBox_DZ->isValid( msg, !IsPreview() );
  }
  return ok;
}
void BasicGUI_VectorDlg::ReverseVector ( int  state) [private, slot]

Definition at line 379 of file BasicGUI_VectorDlg.cxx.

{
  double dx = -GroupDimensions->SpinBox_DX->value();
  double dy = -GroupDimensions->SpinBox_DY->value();
  double dz = -GroupDimensions->SpinBox_DZ->value();

  GroupDimensions->SpinBox_DX->setValue( dx );
  GroupDimensions->SpinBox_DY->setValue( dy );
  GroupDimensions->SpinBox_DZ->setValue( dz );

  displayPreview(true);
}

Here is the caller graph for this function:

Definition at line 270 of file BasicGUI_VectorDlg.cxx.

{
  myEditCurrentArgument->setText( "" );
  
  LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr();
  SALOME_ListIO aSelList;
  aSelMgr->selectedObjects(aSelList);

  if (aSelList.Extent() != 1) {
    if (myEditCurrentArgument == GroupPoints->LineEdit1)
      myPoint1.nullify();
    else if (myEditCurrentArgument == GroupPoints->LineEdit2)
      myPoint2.nullify();
    return;
  }

  GEOM::GeomObjPtr aSelectedObject = getSelected( TopAbs_VERTEX );
  TopoDS_Shape aShape;
  if ( aSelectedObject && GEOMBase::GetShape( aSelectedObject.get(), aShape ) && !aShape.IsNull() ) {
    QString aName = GEOMBase::GetName( aSelectedObject.get() );
    myEditCurrentArgument->setText(aName);
    if (myEditCurrentArgument == GroupPoints->LineEdit1) {
      myPoint1 = aSelectedObject;
      if (myPoint1 && !myPoint2)
        GroupPoints->PushButton2->click();
    }
    else if (myEditCurrentArgument == GroupPoints->LineEdit2) {
      myPoint2 = aSelectedObject;
      if (myPoint2 && !myPoint1)
        GroupPoints->PushButton1->click();
    }
  }

  displayPreview(true);
}

Here is the call graph for this function:

Here is the caller graph for this function:

void BasicGUI_VectorDlg::SetDoubleSpinBoxStep ( double  step) [private, slot]

Definition at line 174 of file BasicGUI_VectorDlg.cxx.

{
  GroupDimensions->SpinBox_DX->setSingleStep(step);
  GroupDimensions->SpinBox_DY->setSingleStep(step);
  GroupDimensions->SpinBox_DZ->setSingleStep(step);
}

Here is the caller graph for this function:

Definition at line 310 of file BasicGUI_VectorDlg.cxx.

{
  QPushButton* send = (QPushButton*)sender();
  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();
  globalSelection(); // close local selection to clear it
  localSelection( GEOM::GEOM_Object::_nil(), TopAbs_VERTEX );
  send->setDown(true);
  displayPreview(true);
}

Here is the caller graph for this function:

void BasicGUI_VectorDlg::ValueChangedInSpinBox ( double  newValue) [private, slot]

Definition at line 370 of file BasicGUI_VectorDlg.cxx.

{
  displayPreview(true);
}

Here is the caller graph for this function:


Member Data Documentation

DlgRef_3Spin1Check* BasicGUI_VectorDlg::GroupDimensions [private]

Definition at line 63 of file BasicGUI_VectorDlg.h.

DlgRef_2Sel* BasicGUI_VectorDlg::GroupPoints [private]

Definition at line 62 of file BasicGUI_VectorDlg.h.

Definition at line 59 of file BasicGUI_VectorDlg.h.

Definition at line 60 of file BasicGUI_VectorDlg.h.


The documentation for this class was generated from the following files: