Back to index

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

#include <GenerationGUI_PipeDlg.h>

List of all members.

Public Member Functions

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

Protected Member Functions

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

Private Slots

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

Private Member Functions

void Init ()
void enterEvent (QEvent *)

Private Attributes

QList< GEOM::GeomObjPtrmyBaseObjects
GEOM::GeomObjPtr myPath
GEOM::GeomObjPtr myVec
DlgRef_3Sel1Check * GroupPoints

Detailed Description

Definition at line 39 of file GenerationGUI_PipeDlg.h.


Constructor & Destructor Documentation

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

Definition at line 55 of file GenerationGUI_PipeDlg.cxx.

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

  setWindowTitle(tr("GEOM_PIPE_TITLE"));

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

  GroupPoints = new DlgRef_3Sel1Check(centralWidget());

  GroupPoints->GroupBox1->setTitle(tr("GEOM_ARGUMENTS"));
  GroupPoints->TextLabel1->setText(tr("GEOM_BASE_OBJECT"));
  GroupPoints->TextLabel2->setText(tr("GEOM_PATH_OBJECT"));
  GroupPoints->TextLabel3->setText(tr("GEOM_BINORMAL"));
  GroupPoints->PushButton1->setIcon(image1);
  GroupPoints->PushButton2->setIcon(image1);
  GroupPoints->PushButton3->setIcon(image1);
  GroupPoints->CheckButton1->setText(tr("GEOM_SELECT_UNPUBLISHED_EDGES"));

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

  setHelpFileName("create_extrusion_alongpath_page.html");

  // Initialisation
  Init();
}

Here is the call graph for this function:

Definition at line 98 of file GenerationGUI_PipeDlg.cxx.

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

Member Function Documentation

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

Definition at line 418 of file GenerationGUI_PipeDlg.cxx.

{
  GEOMBase::PublishSubObject( myPath.get() );
  GEOMBase::PublishSubObject( myVec.get() );
}

Here is the call graph for this function:

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

Definition at line 218 of file GenerationGUI_PipeDlg.cxx.

{
  if (!onAccept())
    return false;

  initName();
  if ( getConstructorId() != 1 )
    ConstructorsClicked( getConstructorId() );
  // activate selection and connect selection manager
  GroupPoints->PushButton1->click();
  return true;
}

Here is the call graph for this function:

Here is the caller graph for this function:

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

Definition at line 207 of file GenerationGUI_PipeDlg.cxx.

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

Here is the call graph for this function:

Here is the caller graph for this function:

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

Definition at line 152 of file GenerationGUI_PipeDlg.cxx.

{
  erasePreview();

  switch (constructorId) {
  case 0:
    GroupPoints->TextLabel3->hide();
    GroupPoints->PushButton3->hide();
    GroupPoints->LineEdit3->hide();
    GroupPoints->PushButton1->click();
    break;
  case 1:
    GroupPoints->TextLabel3->show();
    GroupPoints->PushButton3->show();
    GroupPoints->LineEdit3->show();
    break;
  default:
    break;
  }

  qApp->processEvents();
  updateGeometry();
  resize(100,100);

  SelectionIntoArgument();
  processPreview();
}

Here is the call graph for this function:

Here is the caller graph for this function:

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

Definition at line 363 of file GenerationGUI_PipeDlg.cxx.

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

Definition at line 353 of file GenerationGUI_PipeDlg.cxx.

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

Here is the call graph for this function:

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

Definition at line 392 of file GenerationGUI_PipeDlg.cxx.

{
  GEOM::GEOM_Object_var anObj;

  GEOM::GEOM_I3DPrimOperations_var anOper = GEOM::GEOM_I3DPrimOperations::_narrow(getOperation());

  for (int i = 0; i < myBaseObjects.count(); i++) {
    switch ( getConstructorId() ) {
    case 0 :
      anObj = anOper->MakePipe(myBaseObjects[i].get(), myPath.get());
      break;
    case 1 :
      anObj = anOper->MakePipeBiNormalAlongVector(myBaseObjects[i].get(), myPath.get(), myVec.get());
      break;
    }
    
    if (!anObj->_is_nil())
      objects.push_back(anObj._retn());
  }
  return true;
}

Here is the call graph for this function:

bool GenerationGUI_PipeDlg::extractPrefix ( ) const [protected, virtual]

Definition at line 428 of file GenerationGUI_PipeDlg.cxx.

{
  return myBaseObjects.count() > 1;
}
void GenerationGUI_PipeDlg::Init ( ) [private]

Definition at line 107 of file GenerationGUI_PipeDlg.cxx.

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

  GroupPoints->LineEdit1->setText("");
  GroupPoints->LineEdit2->setText("");
  GroupPoints->LineEdit3->setText("");
  myPath.nullify();
  myVec.nullify();

  GroupPoints->CheckButton1->setEnabled(false);

  showOnlyPreviewControl();

  // 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->PushButton3, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument()));

  connect(GroupPoints->CheckButton1,   SIGNAL(toggled(bool)), this, SLOT(SelectionTypeButtonClicked()));

  initName(tr("GEOM_PIPE"));
  resize(100,100);

  GroupPoints->TextLabel3->hide();
  GroupPoints->PushButton3->hide();
  GroupPoints->LineEdit3->hide();
  ConstructorsClicked(0);

  GroupPoints->PushButton1->click();
  SelectionIntoArgument();
}

Here is the call graph for this function:

Here is the caller graph for this function:

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

Definition at line 372 of file GenerationGUI_PipeDlg.cxx.

{
  bool ok = false;
  switch ( getConstructorId() ) {
  case 0 :
    ok = !myBaseObjects.isEmpty() && myPath;
    break;
  case 1 :
    ok = !myBaseObjects.isEmpty() && myPath && myVec;
    break;
  default:
    break;
  }
  return ok;
}

Definition at line 235 of file GenerationGUI_PipeDlg.cxx.

{
  erasePreview();
  myEditCurrentArgument->setText("");

  if ( myEditCurrentArgument == GroupPoints->LineEdit1 ) {
    myBaseObjects.clear();
    QList<GEOM::GeomObjPtr> objects = getSelected( TopAbs_SHAPE, -1 );
    for ( int i = 0; i < objects.count(); i++ ) {
      GEOM::shape_type stype = objects[i]->GetMaxShapeType();
      GEOM::shape_type maxallowed = getConstructorId() == 1 ? GEOM::FACE : GEOM::SHELL;
      GEOM::shape_type minallowed = getConstructorId() == 1 ? GEOM::EDGE : GEOM::VERTEX;
      if ( stype < maxallowed || stype > minallowed )
       continue;
      myBaseObjects << objects[i];
    }
    if ( !myBaseObjects.isEmpty() ) {
      QString aName = myBaseObjects.count() > 1 ? QString( "%1_objects").arg( myBaseObjects.count() ) : GEOMBase::GetName( myBaseObjects[0].get() );
      myEditCurrentArgument->setText( aName );
    }
  }
  else if (myEditCurrentArgument == GroupPoints->LineEdit2) {
    QList<TopAbs_ShapeEnum> types;
    types << TopAbs_EDGE << TopAbs_WIRE;
    myPath = getSelected( types );
    if ( myPath ) {
      QString aName = GEOMBase::GetName( myPath.get() );
      myEditCurrentArgument->setText( aName );
      if ( getConstructorId() == 1 && !myVec )
       GroupPoints->PushButton3->click();
      else if ( myBaseObjects.isEmpty() )
       GroupPoints->PushButton1->click();
    }
  }
  else if (myEditCurrentArgument == GroupPoints->LineEdit3) {
    myVec = getSelected( TopAbs_EDGE );
    if ( myVec ) {
      QString aName = GEOMBase::GetName( myVec.get() );
      myEditCurrentArgument->setText( aName );
      if ( myBaseObjects.isEmpty() )
       GroupPoints->PushButton1->click();
      else if ( !myPath )
       GroupPoints->PushButton2->click();
    }
  }

  processPreview();
}

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 184 of file GenerationGUI_PipeDlg.cxx.

{
  globalSelection();
  if ( GroupPoints->CheckButton1->isChecked() ) {
    localSelection( GEOM::GEOM_Object::_nil(), TopAbs_EDGE );
  } else {
    TColStd_MapOfInteger aMap;
    aMap.Add(GEOM_COMPOUND);
    aMap.Add(GEOM_WIRE);
    aMap.Add(GEOM_LINE);
    globalSelection(aMap);
  }
  if ( myEditCurrentArgument == GroupPoints->LineEdit2 ) {
    myEditCurrentArgument->setText("");
    myPath.nullify();
  }
  processPreview();
}

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 288 of file GenerationGUI_PipeDlg.cxx.

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

  disconnect(myGeomGUI->getApp()->selectionMgr(), 0, this, 0);
  globalSelection(GEOM_ALLSHAPES);
  GroupPoints->PushButton1->setDown(false);
  GroupPoints->PushButton2->setDown(false);
  GroupPoints->PushButton3->setDown(false);
  GroupPoints->LineEdit1->setEnabled(false);
  GroupPoints->LineEdit2->setEnabled(false);
  GroupPoints->LineEdit3->setEnabled(false);
  if (send == GroupPoints->PushButton1) {
    myEditCurrentArgument = GroupPoints->LineEdit1;
    GroupPoints->CheckButton1->setEnabled(false);
  }
  else if (send == GroupPoints->PushButton2) {
    myEditCurrentArgument = GroupPoints->LineEdit2;

    if ( GroupPoints->CheckButton1->isChecked() ) {
      localSelection( GEOM::GEOM_Object::_nil(), TopAbs_EDGE );
    } else {
      TColStd_MapOfInteger aMap;
      aMap.Add(GEOM_COMPOUND);
      aMap.Add(GEOM_WIRE);
      aMap.Add(GEOM_LINE);
      globalSelection(aMap);
    }
    GroupPoints->CheckButton1->setEnabled(true);
  }
  else if(send == GroupPoints->PushButton3) {
    myEditCurrentArgument = GroupPoints->LineEdit3;
    GroupPoints->CheckButton1->setEnabled(false);
    localSelection(GEOM::GEOM_Object::_nil(), TopAbs_EDGE);
  }
  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_3Sel1Check* GenerationGUI_PipeDlg::GroupPoints [private]

Definition at line 64 of file GenerationGUI_PipeDlg.h.

Definition at line 60 of file GenerationGUI_PipeDlg.h.

Definition at line 61 of file GenerationGUI_PipeDlg.h.

Definition at line 62 of file GenerationGUI_PipeDlg.h.


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