Back to index

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

#include <PrimitiveGUI_BoxDlg.h>

List of all members.

Public Member Functions

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

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 SelectionIntoArgument ()
void SetEditCurrentArgument ()
void ConstructorsClicked (int)
void ValueChangedInSpinBox ()
void SetDoubleSpinBoxStep (double)

Private Member Functions

void Init ()
void enterEvent (QEvent *)

Private Attributes

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

Detailed Description

Definition at line 40 of file PrimitiveGUI_BoxDlg.h.


Constructor & Destructor Documentation

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

Definition at line 54 of file PrimitiveGUI_BoxDlg.cxx.

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

  setWindowTitle(tr("GEOM_BOX_TITLE"));

  /***************************************************************/
  mainFrame()->GroupConstructors->setTitle(tr("GEOM_BOX"));
  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_DIAGONAL_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);

  GroupDimensions = new DlgRef_3Spin(centralWidget());
  GroupDimensions->GroupBox1->setTitle(tr("GEOM_BOX_OBJ"));
  GroupDimensions->TextLabel1->setText(tr("GEOM_DX"));
  GroupDimensions->TextLabel2->setText(tr("GEOM_DY"));
  GroupDimensions->TextLabel3->setText(tr("GEOM_DZ"));

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

  setHelpFileName("create_box_page.html");

  Init();
}

Here is the call graph for this function:

Definition at line 99 of file PrimitiveGUI_BoxDlg.cxx.

{
  // no need to delete child widgets, Qt does it all for us
}

Member Function Documentation

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

Definition at line 322 of file PrimitiveGUI_BoxDlg.cxx.

{
  GEOMBase_Skeleton::ActivateThisDialog();
  if (getConstructorId() == 0) {
    localSelection(GEOM::GEOM_Object::_nil(), TopAbs_VERTEX);
    connect(myGeomGUI->getApp()->selectionMgr(), SIGNAL(currentSelectionChanged()),
            this, SLOT(SelectionIntoArgument()));
  }
  displayPreview(true);
}

Here is the call graph for this function:

Here is the caller graph for this function:

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

Definition at line 435 of file PrimitiveGUI_BoxDlg.cxx.

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

Here is the call graph for this function:

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

Definition at line 215 of file PrimitiveGUI_BoxDlg.cxx.

{
  if (!onAccept())
    return false;

  initName();
  // activate selection and connect selection manager
  ConstructorsClicked(getConstructorId());
  return true;
}

Here is the call graph for this function:

Here is the caller graph for this function:

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

Definition at line 204 of file PrimitiveGUI_BoxDlg.cxx.

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

Here is the call graph for this function:

Here is the caller graph for this function:

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

Definition at line 169 of file PrimitiveGUI_BoxDlg.cxx.

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

      GroupPoints->PushButton1->click();
      break;
    }
  case 1:
    {
      GroupPoints->hide();
      GroupDimensions->show();
      disconnect(myGeomGUI->getApp()->selectionMgr(), 0, this, 0);
      globalSelection(); // close local contexts, if any

      displayPreview(true);
      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 PrimitiveGUI_BoxDlg::createOperation ( ) [protected, virtual]

Definition at line 356 of file PrimitiveGUI_BoxDlg.cxx.

{
  return getGeomEngine()->GetI3DPrimOperations(getStudyId());
}
void PrimitiveGUI_BoxDlg::enterEvent ( QEvent *  ) [private]

Definition at line 337 of file PrimitiveGUI_BoxDlg.cxx.

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

Here is the call graph for this function:

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

Definition at line 388 of file PrimitiveGUI_BoxDlg.cxx.

{
  bool res = false;

  GEOM::GEOM_Object_var anObj;

  GEOM::GEOM_I3DPrimOperations_var anOper = GEOM::GEOM_I3DPrimOperations::_narrow(getOperation());
  
  switch (getConstructorId()) {
  case 0:
    {
      if ( myPoint1 && myPoint2 ) {
        anObj = anOper->MakeBoxTwoPnt(myPoint1.get(), myPoint2.get());
        res = true;
      }
    }
    break;
  case 1:
    {
      double x = GroupDimensions->SpinBox_DX->value();
      double y = GroupDimensions->SpinBox_DY->value();
      double z = GroupDimensions->SpinBox_DZ->value();

      anObj = anOper->MakeBoxDXDYDZ(x, y, z);
      if (!anObj->_is_nil() && !IsPreview())
      {
        QStringList aParameters;
        aParameters << GroupDimensions->SpinBox_DX->text();
        aParameters << GroupDimensions->SpinBox_DY->text();
        aParameters << GroupDimensions->SpinBox_DZ->text();
        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 PrimitiveGUI_BoxDlg::Init ( ) [private]

Definition at line 108 of file PrimitiveGUI_BoxDlg.cxx.

{
  // 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, 0.000001, COORD_MAX, step, "length_precision" );
  initSpinBox(GroupDimensions->SpinBox_DY, 0.000001, COORD_MAX, step, "length_precision" );
  initSpinBox(GroupDimensions->SpinBox_DZ, 0.000001, COORD_MAX, step, "length_precision" );

  // init variables
  GroupPoints->LineEdit1->setReadOnly(true);
  GroupPoints->LineEdit2->setReadOnly(true);

  GroupPoints->LineEdit1->setText("");
  GroupPoints->LineEdit2->setText("");
  myPoint1.nullify();
  myPoint2.nullify();

  double initValue = 200.0;
  GroupDimensions->SpinBox_DX->setValue(initValue);
  GroupDimensions->SpinBox_DY->setValue(initValue);
  GroupDimensions->SpinBox_DZ->setValue(initValue);

  // signals and slots connections
  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()));
  connect(GroupDimensions->SpinBox_DY, SIGNAL(valueChanged(double)), this, SLOT(ValueChangedInSpinBox()));
  connect(GroupDimensions->SpinBox_DZ, SIGNAL(valueChanged(double)), this, SLOT(ValueChangedInSpinBox()));

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

  initName(tr("GEOM_BOX"));

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

Here is the call graph for this function:

Here is the caller graph for this function:

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

Definition at line 365 of file PrimitiveGUI_BoxDlg.cxx.

{
  bool ok = false;
  if( getConstructorId() == 1 )
  {
    ok = GroupDimensions->SpinBox_DX->isValid( msg, !IsPreview() ) &&
         GroupDimensions->SpinBox_DY->isValid( msg, !IsPreview() ) &&
         GroupDimensions->SpinBox_DZ->isValid( msg, !IsPreview() ) &&
         qAbs( GroupDimensions->SpinBox_DX->value() ) > Precision::Confusion() &&
         qAbs( GroupDimensions->SpinBox_DY->value() ) > Precision::Confusion() &&
         qAbs( GroupDimensions->SpinBox_DZ->value() ) > Precision::Confusion();
  }
  else
  {
    ok = myPoint1 && myPoint2 && myPoint1 != myPoint2;
  }
  return ok;
}

Definition at line 230 of file PrimitiveGUI_BoxDlg.cxx.

{
  if (getConstructorId() != 0)
    return;

  erasePreview();
  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();
    }
    if ((myPoint1 && !myPoint2) || (myPoint2 && !myPoint1)) {
      // clear selection
      disconnect(myGeomGUI->getApp()->selectionMgr(), 0, this, 0);
      myGeomGUI->getApp()->selectionMgr()->clearSelected();
      connect(myGeomGUI->getApp()->selectionMgr(), SIGNAL(currentSelectionChanged()),
        this, SLOT(SelectionIntoArgument()));
    }
  }
  displayPreview(true);
}

Here is the call graph for this function:

Here is the caller graph for this function:

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

Definition at line 158 of file PrimitiveGUI_BoxDlg.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 280 of file PrimitiveGUI_BoxDlg.cxx.

{
  QPushButton* send = (QPushButton*)sender();

  // ?? Commented, because we need this flag in ConstructorsClicked, because
  // SelectionIntoArgument must be called only on dialog creation, and must not be called on
  // simple switch between constructors (as we need to keep old values in fields in this case)

  // clear selection
  //disconnect(myGeomGUI->getApp()->selectionMgr(), 0, this, 0);

  if (send == GroupPoints->PushButton1) {
    myEditCurrentArgument = GroupPoints->LineEdit1;
    GroupPoints->PushButton2->setDown(false);
    GroupPoints->LineEdit2->setEnabled(false);
  }
  else if (send == GroupPoints->PushButton2) {
    myEditCurrentArgument = GroupPoints->LineEdit2;
    GroupPoints->PushButton1->setDown(false);
    GroupPoints->LineEdit1->setEnabled(false);
  }

  // enable line edit
  myEditCurrentArgument->setEnabled(true);
  myEditCurrentArgument->setFocus();
  // after setFocus(), because it will be setDown(false) when loses focus
  send->setDown(true);

  disconnect(myGeomGUI->getApp()->selectionMgr(), 0, this, 0);
  globalSelection(); // close local contexts, if any
  localSelection(GEOM::GEOM_Object::_nil(), TopAbs_VERTEX);
  connect(myGeomGUI->getApp()->selectionMgr(), SIGNAL(currentSelectionChanged()),
          this, SLOT(SelectionIntoArgument()));

  // seems we need it only to avoid preview disappearing, caused by selection mode change
  displayPreview(true);
}

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 347 of file PrimitiveGUI_BoxDlg.cxx.

{
  displayPreview(true);
}

Here is the caller graph for this function:


Member Data Documentation

DlgRef_3Spin* PrimitiveGUI_BoxDlg::GroupDimensions [private]

Definition at line 63 of file PrimitiveGUI_BoxDlg.h.

DlgRef_2Sel* PrimitiveGUI_BoxDlg::GroupPoints [private]

Definition at line 62 of file PrimitiveGUI_BoxDlg.h.

Definition at line 60 of file PrimitiveGUI_BoxDlg.h.

Definition at line 60 of file PrimitiveGUI_BoxDlg.h.


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