Back to index

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

#include <TransformationGUI_MirrorDlg.h>

List of all members.

Public Member Functions

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

Protected Member Functions

virtual GEOM::GEOM_IOperations_ptr createOperation ()
virtual bool isValid (QString &)
virtual bool execute (ObjectList &)
virtual void addSubshapesToStudy ()
virtual void restoreSubShapes (SALOMEDS::Study_ptr, SALOMEDS::SObject_ptr)

Private Slots

void ClickOnOk ()
bool ClickOnApply ()
void ActivateThisDialog ()
void SelectionIntoArgument ()
void SetEditCurrentArgument ()
void ConstructorsClicked (int)
void CreateCopyModeChanged ()

Private Member Functions

void Init ()
void enterEvent (QEvent *)

Private Attributes

GEOM::GeomObjPtr myArgument
QList< GEOM::GeomObjPtrmyObjects
bool myInitial
DlgRef_2Sel1Spin2Check * GroupPoints

Detailed Description

Definition at line 39 of file TransformationGUI_MirrorDlg.h.


Constructor & Destructor Documentation

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

Definition at line 55 of file TransformationGUI_MirrorDlg.cxx.

  : GEOMBase_Skeleton(theGeometryGUI, parent, modal, fl),
    myInitial(true)
{
  SUIT_ResourceMgr* aResMgr = myGeomGUI->getApp()->resourceMgr();
  QPixmap image0 (aResMgr->loadPixmap("GEOM", tr("ICON_DLG_MIRROR_POINT")));
  QPixmap image1 (aResMgr->loadPixmap("GEOM", tr("ICON_DLG_MIRROR_AXE")));
  QPixmap image2 (aResMgr->loadPixmap("GEOM", tr("ICON_DLG_MIRROR_PLANE")));
  QPixmap image3 (aResMgr->loadPixmap("GEOM", tr("ICON_SELECT")));

  setWindowTitle(tr("GEOM_MIRROR_TITLE"));

  /***************************************************************/
  mainFrame()->GroupConstructors->setTitle(tr("GEOM_MIRROR"));
  mainFrame()->RadioButton1->setIcon(image0);
  mainFrame()->RadioButton2->setIcon(image1);
  mainFrame()->RadioButton3->setIcon(image2);

  GroupPoints = new DlgRef_2Sel1Spin2Check(centralWidget());
  GroupPoints->SpinBox_DX->hide();
  GroupPoints->TextLabel3->hide();
  GroupPoints->CheckButton2->hide();
  GroupPoints->GroupBox1->setTitle(tr("GEOM_ARGUMENTS"));
  GroupPoints->TextLabel1->setText(tr("GEOM_OBJECTS"));
  GroupPoints->TextLabel2->setText(tr("GEOM_POINT_MIRROR"));
  GroupPoints->TextLabel2->setFixedWidth(74);
  GroupPoints->PushButton1->setIcon(image3);
  GroupPoints->PushButton2->setIcon(image3);
  GroupPoints->CheckButton1->setText(tr("GEOM_CREATE_COPY"));

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

  setHelpFileName("mirror_operation_page.html");

  // Activate Create a Copy mode
  GroupPoints->CheckButton1->setChecked(true);
  CreateCopyModeChanged();

  Init();
}

Here is the call graph for this function:

Definition at line 104 of file TransformationGUI_MirrorDlg.cxx.

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

Member Function Documentation

Definition at line 300 of file TransformationGUI_MirrorDlg.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 TransformationGUI_MirrorDlg::addSubshapesToStudy ( ) [protected, virtual]

Definition at line 442 of file TransformationGUI_MirrorDlg.cxx.

{
  bool toCreateCopy = IsPreview() || GroupPoints->CheckButton1->isChecked();
  if (toCreateCopy) {
    switch (getConstructorId()) {
    case 0:
    case 1:
    case 2:
      GEOMBase::PublishSubObject( myArgument.get() );
      break;
    default:
      break;
    }
  }
}

Here is the call graph for this function:

Definition at line 193 of file TransformationGUI_MirrorDlg.cxx.

{
  if (!onAccept(GroupPoints->CheckButton1->isChecked()))
    return false;

  initName();

  // activate selection and connect selection manager
  ConstructorsClicked(getConstructorId());
  SelectionIntoArgument();

  return true;
}

Here is the call graph for this function:

Here is the caller graph for this function:

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

Definition at line 182 of file TransformationGUI_MirrorDlg.cxx.

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

Here is the call graph for this function:

Here is the caller graph for this function:

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

Definition at line 148 of file TransformationGUI_MirrorDlg.cxx.

{
  disconnect(myGeomGUI->getApp()->selectionMgr(), 0, this, 0);

  GroupPoints->LineEdit2->clear();
  myArgument.nullify();

  switch (constructorId) {
  case 0: // mirror an object by point
    GroupPoints->TextLabel2->setText(tr("GEOM_POINT_MIRROR"));
    break;
  case 1: // mirror an object by axe
    GroupPoints->TextLabel2->setText(tr("GEOM_AXE_MIRROR"));
    break;
  case 2: // mirror an object by plane
    GroupPoints->TextLabel2->setText(tr("GEOM_PLANE_MIRROR"));
    break;
  }

  GroupPoints->PushButton1->click();

  if (myInitial) {
    myInitial = false;
    SelectionIntoArgument();
  }
  else {
    processPreview();
  }
}

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 433 of file TransformationGUI_MirrorDlg.cxx.

{
  mainFrame()->GroupBoxName->setEnabled(GroupPoints->CheckButton1->isChecked());
}

Here is the caller graph for this function:

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

Definition at line 323 of file TransformationGUI_MirrorDlg.cxx.

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

Definition at line 313 of file TransformationGUI_MirrorDlg.cxx.

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

Here is the call graph for this function:

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

Definition at line 341 of file TransformationGUI_MirrorDlg.cxx.

{
  bool res = false;
  bool toCreateCopy = IsPreview() || GroupPoints->CheckButton1->isChecked();

  GEOM::GEOM_Object_var anObj;

  GEOM::GEOM_ITransformOperations_var anOper = GEOM::GEOM_ITransformOperations::_narrow(getOperation());

  switch (getConstructorId()) {
  case 0:
    {
      if (toCreateCopy) {
        for (int i = 0; i < myObjects.count(); i++) {
          anObj = anOper->MirrorPointCopy(myObjects[i].get(), myArgument.get());
          if (!anObj->_is_nil())
            objects.push_back(anObj._retn());
        }
      }
      else {
        for (int i = 0; i < myObjects.count(); i++) {
          anObj = anOper->MirrorPoint(myObjects[i].get(), myArgument.get());
          if (!anObj->_is_nil())
            objects.push_back(anObj._retn());
        }
      }
      res = true;
      break;
    }
  case 1:
    {
      if (toCreateCopy) {
        for (int i = 0; i < myObjects.count(); i++) {
          anObj = anOper->MirrorAxisCopy(myObjects[i].get(), myArgument.get());
          if (!anObj->_is_nil())
            objects.push_back(anObj._retn());
        }
      }
      else {
        for (int i = 0; i < myObjects.count(); i++) {
          anObj = anOper->MirrorAxis(myObjects[i].get(), myArgument.get());
          if (!anObj->_is_nil())
            objects.push_back(anObj._retn());
        }
      }
      res = true;
      break;
    }
  case 2:
    {
      if (toCreateCopy) {
        for (int i = 0; i < myObjects.count(); i++) {
            anObj = anOper->MirrorPlaneCopy(myObjects[i].get(), myArgument.get());
            if (!anObj->_is_nil())
              objects.push_back(anObj._retn());
        }
      }
      else {
        for (int i = 0; i < myObjects.count(); i++) {
          anObj = anOper->MirrorPlane(myObjects[i].get(), myArgument.get());
          if (!anObj->_is_nil())
            objects.push_back(anObj._retn());
        }
      }
      res = true;
      break;
    }
  }

  return res;
}

Here is the call graph for this function:

Definition at line 113 of file TransformationGUI_MirrorDlg.cxx.

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

  GroupPoints->LineEdit1->setText("");
  GroupPoints->LineEdit2->setText("");

  myObjects.clear();
  myArgument.nullify();

  mainFrame()->GroupBoxPublish->show();

  // 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(GroupPoints->CheckButton1, SIGNAL(toggled(bool)), this, SLOT(CreateCopyModeChanged()));

  initName(tr("GEOM_MIRROR"));

  ConstructorsClicked(0);
  resize(minimumSizeHint());
}

Here is the call graph for this function:

Here is the caller graph for this function:

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

Definition at line 332 of file TransformationGUI_MirrorDlg.cxx.

{
  return !myObjects.isEmpty() && myArgument;
}
void TransformationGUI_MirrorDlg::restoreSubShapes ( SALOMEDS::Study_ptr  theStudy,
SALOMEDS::SObject_ptr  theSObject 
) [protected, virtual]

Definition at line 417 of file TransformationGUI_MirrorDlg.cxx.

{
  if (mainFrame()->CheckBoxRestoreSS->isChecked()) {
    // empty list of arguments means that all arguments should be restored
    getGeomEngine()->RestoreSubShapesSO(theStudy, theSObject, GEOM::ListOfGO(),
                                        /*theFindMethod=*/GEOM::FSM_Transformed,
                                        /*theInheritFirstArg=*/true,
                                        mainFrame()->CheckBoxAddPrefix->isChecked());
  }
}

Definition at line 211 of file TransformationGUI_MirrorDlg.cxx.

{
  erasePreview();

  if ( myEditCurrentArgument == GroupPoints->LineEdit1 ) {
    myObjects = getSelected( TopAbs_SHAPE, -1 );
    if ( !myObjects.isEmpty() ) {
      QString aName = myObjects.count() > 1 ? QString( "%1_objects").arg( myObjects.count() ) : GEOMBase::GetName( myObjects[0].get() );
      myEditCurrentArgument->setText( aName );
    }
    else {
      myEditCurrentArgument->setText("");
    }
  }
  else {
    TopAbs_ShapeEnum aNeedType = ( getConstructorId() == 1 ) ? 
      TopAbs_EDGE : ( ( getConstructorId() == 2 ) ? TopAbs_FACE : TopAbs_VERTEX );
    GEOM::GeomObjPtr aSelectedObject = getSelected( aNeedType );
    TopoDS_Shape aShape;
    if ( aSelectedObject && GEOMBase::GetShape( aSelectedObject.get(), aShape ) && !aShape.IsNull() ) {
      QString aName = GEOMBase::GetName( aSelectedObject.get() );
      myEditCurrentArgument->setText( aName );
      myArgument = aSelectedObject;
      if ( myObjects.isEmpty() )
       GroupPoints->PushButton1->click();
    }
    else {
      if ( myEditCurrentArgument == GroupPoints->LineEdit2 )
       myArgument.nullify();
      myEditCurrentArgument->setText("");
    }
  }

  processPreview();
}

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 251 of file TransformationGUI_MirrorDlg.cxx.

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

  disconnect(myGeomGUI->getApp()->selectionMgr(), 0, this, 0);
  globalSelection();

  if (send == GroupPoints->PushButton1) {
    myEditCurrentArgument = GroupPoints->LineEdit1;

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

    switch (getConstructorId()) {
    case 0:
      localSelection(GEOM::GEOM_Object::_nil(), TopAbs_VERTEX);
      break;
    case 1:
      localSelection(GEOM::GEOM_Object::_nil(), TopAbs_EDGE);
      break;
    case 2:
      globalSelection(GEOM_PLANE);
      localSelection(GEOM::GEOM_Object::_nil(), TopAbs_FACE);
      break;
    }

    GroupPoints->PushButton1->setDown(false);
    GroupPoints->LineEdit1->setEnabled(false);
  }
  connect(myGeomGUI->getApp()->selectionMgr(), SIGNAL(currentSelectionChanged()),
          this, SLOT(SelectionIntoArgument()));

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

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

Here is the call graph for this function:

Here is the caller graph for this function:


Member Data Documentation

DlgRef_2Sel1Spin2Check* TransformationGUI_MirrorDlg::GroupPoints [private]

Definition at line 67 of file TransformationGUI_MirrorDlg.h.

Definition at line 61 of file TransformationGUI_MirrorDlg.h.

Definition at line 65 of file TransformationGUI_MirrorDlg.h.

Definition at line 62 of file TransformationGUI_MirrorDlg.h.


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