Back to index

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

#include <RepairGUI_RemoveHolesDlg.h>

List of all members.

Public Member Functions

 RepairGUI_RemoveHolesDlg (GeometryGUI *, QWidget *=0, bool=false)
 ~RepairGUI_RemoveHolesDlg ()

Protected Member Functions

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

Private Slots

void ClickOnOk ()
bool ClickOnApply ()
void ActivateThisDialog ()
void LineEditReturnPressed ()
void SelectionIntoArgument ()
void SetEditCurrentArgument ()
void onRemoveAllClicked ()
void onDetect ()

Private Member Functions

void Init ()
void enterEvent (QEvent *)
void initSelection ()

Private Attributes

GEOM::GEOM_Object_var myObject
GEOM::short_array_var myWiresInd
DlgRef_1Sel1Check1Sel * GroupPoints
QPushButton * myFreeBoundBtn
int myClosed
int myOpen

Detailed Description

Definition at line 39 of file RepairGUI_RemoveHolesDlg.h.


Constructor & Destructor Documentation

RepairGUI_RemoveHolesDlg::RepairGUI_RemoveHolesDlg ( GeometryGUI *  theGeometryGUI,
QWidget *  parent = 0,
bool  modal = false 
)

Definition at line 53 of file RepairGUI_RemoveHolesDlg.cxx.

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

  setWindowTitle(tr("GEOM_REMOVE_HOLES_TITLE"));

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

  GroupPoints = new DlgRef_1Sel1Check1Sel(centralWidget());
  GroupPoints->GroupBox1->setTitle(tr("GEOM_HOLES"));
  GroupPoints->TextLabel1->setText(tr("GEOM_SELECTED_SHAPE"));
  GroupPoints->PushButton1->setIcon(image1);
  GroupPoints->LineEdit1->setReadOnly(true);
  GroupPoints->CheckButton1->setText(tr("GEOM_REMOVE_ALL_HOLES"));
  GroupPoints->TextLabel2->setText(tr("GEOM_WIRES_TO_REMOVE"));
  GroupPoints->PushButton2->setIcon(image1);
  GroupPoints->LineEdit2->setReadOnly(true);

  myFreeBoundBtn = new QPushButton(tr("GEOM_DETECT") + QString(" [%1]").arg(tr("GEOM_FREE_BOUNDARIES")),
                                    GroupPoints->Box);
  QVBoxLayout* l = new QVBoxLayout(GroupPoints->Box);
  l->setMargin(0); l->setSpacing(0);
  l->addWidget(myFreeBoundBtn);

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

  setHelpFileName("suppress_holes_operation_page.html");

  Init();
}

Here is the call graph for this function:

Definition at line 100 of file RepairGUI_RemoveHolesDlg.cxx.

{
}

Member Function Documentation

Definition at line 273 of file RepairGUI_RemoveHolesDlg.cxx.

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

  myEditCurrentArgument = GroupPoints->LineEdit1;
  myEditCurrentArgument->setText( "" );
  GroupPoints->LineEdit2->setText( "" );
  myObject = GEOM::GEOM_Object::_nil();
  myWiresInd->length( 0 );

  myClosed = -1;
  myOpen = -1;

  initSelection();
}

Here is the call graph for this function:

Here is the caller graph for this function:

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

Definition at line 156 of file RepairGUI_RemoveHolesDlg.cxx.

{
  if (!onAccept())
    return false;

  initName();
  // activate first line edit
  GroupPoints->PushButton1->click();
  return true;
}

Here is the caller graph for this function:

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

Definition at line 145 of file RepairGUI_RemoveHolesDlg.cxx.

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

Here is the call graph for this function:

Here is the caller graph for this function:

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

Definition at line 305 of file RepairGUI_RemoveHolesDlg.cxx.

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

Definition at line 295 of file RepairGUI_RemoveHolesDlg.cxx.

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

Here is the call graph for this function:

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

Definition at line 324 of file RepairGUI_RemoveHolesDlg.cxx.

{
  bool aResult = false;

  if (IsPreview()) {
    // called from onDetect(): detect free boundary edges,
    // highlight them (add to objects), display message dialog
    GEOM::ListOfGO_var aClosed, anOpen;

    GEOM::GEOM_IHealingOperations_var anOper = GEOM::GEOM_IHealingOperations::_narrow(getOperation());
    aResult = anOper->GetFreeBoundary(myObject, aClosed, anOpen);

    if (aResult) {
      myClosed = aClosed->length();
      myOpen = anOpen->length();
      int i;
      for (i = 0; i < myClosed; i++)
        objects.push_back(aClosed[i]._retn());
      for (i = 0; i < myOpen; i++)
        objects.push_back(anOpen[i]._retn());
    }
    else
      myClosed = -1;
  }
  else {
    GEOM::GEOM_IHealingOperations_var anOper = GEOM::GEOM_IHealingOperations::_narrow(getOperation());
    GEOM::GEOM_Object_var anObj = anOper->FillHoles(myObject, myWiresInd);
    aResult = !anObj->_is_nil();
    if (aResult)
      objects.push_back(anObj._retn());
  }

  return aResult;
}
void RepairGUI_RemoveHolesDlg::Init ( ) [private]

Definition at line 108 of file RepairGUI_RemoveHolesDlg.cxx.

{
  // init variables
  GroupPoints->LineEdit1->clear();
  GroupPoints->LineEdit2->clear();
  myObject = GEOM::GEOM_Object::_nil();
  myWiresInd = new GEOM::short_array();
  myWiresInd->length(0);

  myClosed = -1;
  myOpen = -1;

  // signals and slots connections
  connect(buttonOk(),    SIGNAL(clicked()), this, SLOT(ClickOnOk()));
  connect(buttonApply(), SIGNAL(clicked()), this, SLOT(ClickOnApply()));

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

  connect(GroupPoints->LineEdit1,   SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed()));
  connect(GroupPoints->LineEdit2,   SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed()));

  connect(GroupPoints->CheckButton1, SIGNAL(clicked()), this, SLOT(onRemoveAllClicked()));

  connect(myFreeBoundBtn, SIGNAL(clicked()), this, SLOT(onDetect()));

  initName(tr("REMOVE_HOLES_NEW_OBJ_NAME"));

  GroupPoints->PushButton1->click();
  SelectionIntoArgument();
  resize(100,100);
}

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 379 of file RepairGUI_RemoveHolesDlg.cxx.

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

  if (myEditCurrentArgument == GroupPoints->LineEdit1) {
    TColStd_MapOfInteger aTypes;
    aTypes.Add(GEOM_COMPOUND);
    aTypes.Add(GEOM_SOLID);
    aTypes.Add(GEOM_SHELL);
    aTypes.Add(GEOM_FACE);

    globalSelection(aTypes);
  }
  else if (myEditCurrentArgument == GroupPoints->LineEdit2) {
    localSelection(myObject, TopAbs_EDGE);
    localSelection(myObject, TopAbs_WIRE);
  }

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

Here is the call graph for this function:

Here is the caller graph for this function:

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

Definition at line 314 of file RepairGUI_RemoveHolesDlg.cxx.

{
  myClosed = -1;
  return !myObject->_is_nil() && (IsPreview() || GroupPoints->CheckButton1->isChecked() || myWiresInd->length());
}

Definition at line 260 of file RepairGUI_RemoveHolesDlg.cxx.

{
  const QObject* send = sender();
  if (send == GroupPoints->LineEdit1 || send == GroupPoints->LineEdit2) {
    myEditCurrentArgument = (QLineEdit*)send;
    GEOMBase_Skeleton::LineEditReturnPressed();
  }
}

Here is the caller graph for this function:

void RepairGUI_RemoveHolesDlg::onDetect ( ) [private, slot]

Definition at line 405 of file RepairGUI_RemoveHolesDlg.cxx.

{
  displayPreview(true, false, true, true, 3);

  // field myClosed,myOpen is initialized in execute() method, called by displayPreview().
  QString msg;
  if (myClosed != -1)
    msg = tr("GEOM_FREE_BOUNDS_MSG").arg(myClosed + myOpen).arg(myClosed).arg(myOpen);
  else
    msg = tr("GEOM_FREE_BOUNDS_ERROR");
  SUIT_MessageBox::information(this, tr("GEOM_FREE_BOUNDS_TLT"), msg);
}

Here is the caller graph for this function:

Definition at line 363 of file RepairGUI_RemoveHolesDlg.cxx.

{
  bool b = GroupPoints->CheckButton1->isChecked();
  GroupPoints->TextLabel2->setEnabled(!b);
  GroupPoints->PushButton2->setEnabled(!b);
  GroupPoints->LineEdit2->setEnabled(!b);
  if (b) {
    GroupPoints->LineEdit2->setText("");
    myWiresInd->length(0);
  }
}

Here is the caller graph for this function:

Definition at line 171 of file RepairGUI_RemoveHolesDlg.cxx.

{
  erasePreview();
  myEditCurrentArgument->setText("");
  // the second argument depends on the first one
  GroupPoints->LineEdit2->setText("");
  myWiresInd->length(0);

  if (myEditCurrentArgument == GroupPoints->LineEdit1)
    myObject = GEOM::GEOM_Object::_nil();

  LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr();
  SALOME_ListIO aSelList;
  aSelMgr->selectedObjects(aSelList);

  if (aSelList.Extent() == 1) {
    Handle(SALOME_InteractiveObject) anIO = aSelList.First();

    if (myEditCurrentArgument == GroupPoints->LineEdit1) { // face selection
      myObject = GEOMBase::ConvertIOinGEOMObject( anIO );
      if ( GEOMBase::IsShape(myObject) ) {
        myEditCurrentArgument->setText(GEOMBase::GetName(myObject));

        // clear selection
        disconnect(myGeomGUI->getApp()->selectionMgr(), 0, this, 0);
        myGeomGUI->getApp()->selectionMgr()->clearSelected();
        connect(myGeomGUI->getApp()->selectionMgr(), SIGNAL(currentSelectionChanged()),
                this, SLOT(SelectionIntoArgument()));

        if (!GroupPoints->CheckButton1->isChecked())
          GroupPoints->PushButton2->click();
      }
      else
        myObject = GEOM::GEOM_Object::_nil();
    }
    else if (myEditCurrentArgument == GroupPoints->LineEdit2 &&
             !GroupPoints->CheckButton1->isChecked()) {
      TColStd_IndexedMapOfInteger aMap;
      aSelMgr->GetIndexes(anIO, aMap);
      const int n = aMap.Extent();
      myWiresInd->length(n);
      for (int i = 1; i <= n; i++)
        myWiresInd[i-1] = aMap(i);
      if (n)
        myEditCurrentArgument->setText(QString::number(n) + "_" + tr("GEOM_WIRE") + tr("_S_"));
    }
  }
}

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 224 of file RepairGUI_RemoveHolesDlg.cxx.

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

  bool isEffective = false;

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

    GroupPoints->PushButton2->setDown(false);
    GroupPoints->LineEdit2->setEnabled(false);
  }
  else if (send == GroupPoints->PushButton2 && !myObject->_is_nil()) {
    isEffective = true;
    myEditCurrentArgument = GroupPoints->LineEdit2;

    GroupPoints->PushButton1->setDown(false);
    GroupPoints->LineEdit1->setEnabled(false);
  }

  if (isEffective) {
    initSelection();

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

Here is the call graph for this function:

Here is the caller graph for this function:


Member Data Documentation

DlgRef_1Sel1Check1Sel* RepairGUI_RemoveHolesDlg::GroupPoints [private]

Definition at line 62 of file RepairGUI_RemoveHolesDlg.h.

Definition at line 65 of file RepairGUI_RemoveHolesDlg.h.

Definition at line 63 of file RepairGUI_RemoveHolesDlg.h.

GEOM::GEOM_Object_var RepairGUI_RemoveHolesDlg::myObject [private]

Definition at line 59 of file RepairGUI_RemoveHolesDlg.h.

Definition at line 66 of file RepairGUI_RemoveHolesDlg.h.

GEOM::short_array_var RepairGUI_RemoveHolesDlg::myWiresInd [private]

Definition at line 60 of file RepairGUI_RemoveHolesDlg.h.


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