X-Git-Url: http://git.salome-platform.org/gitweb/?p=modules%2Fsmesh.git;a=blobdiff_plain;f=src%2FSMESHGUI%2FSMESHGUI_EditHypothesesDlg.cxx;h=c2d0185b6aaa9579d13034ca1d7510d5f3ccecaa;hp=2d162996a61f4f802591562e11171649b49b4b7e;hb=b0105f0f9d05ef09ad770cf0d343901589cba620;hpb=ed456586bfb1411c5bff73b221658766689a6253 diff --git a/src/SMESHGUI/SMESHGUI_EditHypothesesDlg.cxx b/src/SMESHGUI/SMESHGUI_EditHypothesesDlg.cxx index 2d162996a..c2d0185b6 100644 --- a/src/SMESHGUI/SMESHGUI_EditHypothesesDlg.cxx +++ b/src/SMESHGUI/SMESHGUI_EditHypothesesDlg.cxx @@ -1,23 +1,23 @@ // SMESH SMESHGUI : GUI for SMESH component // // Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org +// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org // // // @@ -33,18 +33,25 @@ #include "SMESHGUI_GEOMGenUtils.h" #include "SMESHGUI_HypothesesUtils.h" +#include "SMESH_TypeFilter.hxx" +#include "SMESH_NumberFilter.hxx" + +#include "SALOME_ListIO.hxx" #include "SALOME_ListIteratorOfListIO.hxx" -#include "QAD_Application.h" -#include "QAD_Desktop.h" -#include "QAD_WaitCursor.h" -#include "QAD_Operation.h" +#include "SALOMEDSClient_Study.hxx" +#include "SALOMEDSClient_AttributeIOR.hxx" +#include "SALOMEDSClient_AttributeName.hxx" -#include "SALOMEconfig.h" -#include CORBA_CLIENT_HEADER(SALOMEDS_Attributes) +#include "SUIT_Session.h" +#include "SUIT_OverrideCursor.h" +#include "SUIT_Operation.h" +#include "SUIT_Desktop.h" #include "utilities.h" +#include "SVTK_ViewModel.h" + // QT Includes #include #include @@ -67,10 +74,10 @@ public: enum { RTTI_IOR = 1000 }; public: - ListBoxIOR( QListBox* listbox, + ListBoxIOR (QListBox* listbox, const char* ior, const QString& text = QString::null) - : QListBoxText( listbox, text ), myIOR( ior ) {} + : QListBoxText(listbox, text), myIOR(ior) {} virtual ~ListBoxIOR() {}; virtual int rtti() const { return RTTI_IOR; } const char* GetIOR() { return myIOR.c_str(); } @@ -81,12 +88,12 @@ private: #define ALLOW_CHANGE_SHAPE 0 -int findItem( QListBox* listBox, const string& ior ) +int findItem (QListBox* listBox, const string& ior) { - for ( int i = 0; i < listBox->count(); i++ ) { - if ( listBox->item( i )->rtti() == ListBoxIOR::RTTI_IOR ) { - ListBoxIOR* anItem = ( ListBoxIOR* )( listBox->item( i ) ); - if ( anItem && ior == string( anItem->GetIOR() ) ) + for (int i = 0; i < listBox->count(); i++) { + if (listBox->item(i)->rtti() == ListBoxIOR::RTTI_IOR) { + ListBoxIOR* anItem = (ListBoxIOR*)(listBox->item(i)); + if (anItem && ior == string(anItem->GetIOR())) return i; } } @@ -94,215 +101,218 @@ int findItem( QListBox* listBox, const string& ior ) } //================================================================================= -// class : SMESHGUI_EditHypothesesDlg() -// purpose : Constructs a SMESHGUI_EditHypothesesDlg which is a child of 'parent', with the +// function : SMESHGUI_EditHypothesesDlg() +// purpose : Constructs a SMESHGUI_EditHypothesesDlg which is a child of 'parent', with the // name 'name' and widget flags set to 'f'. // The dialog will by default be modeless, unless you set 'modal' to // TRUE to construct a modal dialog. //================================================================================= -SMESHGUI_EditHypothesesDlg::SMESHGUI_EditHypothesesDlg( QWidget* parent, const char* name, SALOME_Selection* Sel, bool modal, WFlags fl ) - : QDialog( parent, name, modal, WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu | WDestructiveClose ), - myImportedMesh( false ) +SMESHGUI_EditHypothesesDlg::SMESHGUI_EditHypothesesDlg (SMESHGUI* theModule, const char* name, + bool modal, WFlags fl) + : QDialog( SMESH::GetDesktop( theModule ), name, modal, WStyle_Customize | WStyle_NormalBorder | + WStyle_Title | WStyle_SysMenu | WDestructiveClose), + myImportedMesh(false), + mySMESHGUI( theModule ), + mySelectionMgr( SMESH::GetSelectionMgr( theModule ) ) { - QPixmap image0(QAD_Desktop::getResourceManager()->loadPixmap( "SMESH",tr("ICON_SELECT"))); - if ( !name ) - setName( "SMESHGUI_EditHypothesesDlg" ); - setCaption( tr( "SMESH_EDIT_HYPOTHESES" ) ); - setSizeGripEnabled( TRUE ); - QGridLayout* SMESHGUI_EditHypothesesDlgLayout = new QGridLayout( this ); - SMESHGUI_EditHypothesesDlgLayout->setSpacing( 6 ); - SMESHGUI_EditHypothesesDlgLayout->setMargin( 11 ); + QPixmap image0 (SMESH::GetResourceMgr( mySMESHGUI )->loadPixmap("SMESH", tr("ICON_SELECT"))); + if (!name) + setName("SMESHGUI_EditHypothesesDlg"); + setCaption(tr("SMESH_EDIT_HYPOTHESES")); + setSizeGripEnabled(TRUE); + QGridLayout* SMESHGUI_EditHypothesesDlgLayout = new QGridLayout(this); + SMESHGUI_EditHypothesesDlgLayout->setSpacing(6); + SMESHGUI_EditHypothesesDlgLayout->setMargin(11); /***************************************************************/ - GroupC1 = new QGroupBox( tr( "SMESH_ARGUMENTS" ), this, "GroupC1" ); - GroupC1->setColumnLayout(0, Qt::Vertical ); - GroupC1->layout()->setSpacing( 0 ); - GroupC1->layout()->setMargin( 0 ); - QGridLayout* GroupC1Layout = new QGridLayout( GroupC1->layout() ); - GroupC1Layout->setAlignment( Qt::AlignTop ); - GroupC1Layout->setSpacing( 6 ); - GroupC1Layout->setMargin( 11 ); - - TextLabelC1A1 = new QLabel( tr( "SMESH_OBJECT_MESHorSUBMESH" ), GroupC1, "TextLabelC1A1" ); - GroupC1Layout->addWidget( TextLabelC1A1, 0, 0 ); - SelectButtonC1A1 = new QPushButton( GroupC1, "SelectButtonC1A1" ); - SelectButtonC1A1->setPixmap( image0 ); - GroupC1Layout->addWidget( SelectButtonC1A1, 0, 1 ); - LineEditC1A1 = new QLineEdit( GroupC1, "LineEditC1A1" ); - LineEditC1A1->setReadOnly( true ); - GroupC1Layout->addWidget( LineEditC1A1, 0, 2 ); - - TextLabelC1A2 = new QLabel( tr( "SMESH_OBJECT_GEOM" ), GroupC1, "TextLabelC1A2" ); - GroupC1Layout->addWidget( TextLabelC1A2, 1, 0 ); - SelectButtonC1A2 = new QPushButton( GroupC1, "SelectButtonC1A2" ); - SelectButtonC1A2->setPixmap( image0 ); - SelectButtonC1A2->setToggleButton( FALSE ); - GroupC1Layout->addWidget( SelectButtonC1A2, 1, 1 ); - LineEditC1A2 = new QLineEdit( GroupC1, "LineEditC1A2" ); - LineEditC1A2->setReadOnly( true ); - GroupC1Layout->addWidget( LineEditC1A2, 1, 2 ); - - SMESHGUI_EditHypothesesDlgLayout->addWidget( GroupC1, 0, 0 ); + GroupC1 = new QGroupBox(tr("SMESH_ARGUMENTS"), this, "GroupC1"); + GroupC1->setColumnLayout(0, Qt::Vertical); + GroupC1->layout()->setSpacing(0); + GroupC1->layout()->setMargin(0); + QGridLayout* GroupC1Layout = new QGridLayout(GroupC1->layout()); + GroupC1Layout->setAlignment(Qt::AlignTop); + GroupC1Layout->setSpacing(6); + GroupC1Layout->setMargin(11); + + TextLabelC1A1 = new QLabel(tr("SMESH_OBJECT_MESHorSUBMESH"), GroupC1, "TextLabelC1A1"); + GroupC1Layout->addWidget(TextLabelC1A1, 0, 0); + SelectButtonC1A1 = new QPushButton(GroupC1, "SelectButtonC1A1"); + SelectButtonC1A1->setPixmap(image0); + GroupC1Layout->addWidget(SelectButtonC1A1, 0, 1); + LineEditC1A1 = new QLineEdit(GroupC1, "LineEditC1A1"); + LineEditC1A1->setReadOnly(true); + GroupC1Layout->addWidget(LineEditC1A1, 0, 2); + + TextLabelC1A2 = new QLabel(tr("SMESH_OBJECT_GEOM"), GroupC1, "TextLabelC1A2"); + GroupC1Layout->addWidget(TextLabelC1A2, 1, 0); + SelectButtonC1A2 = new QPushButton(GroupC1, "SelectButtonC1A2"); + SelectButtonC1A2->setPixmap(image0); + SelectButtonC1A2->setToggleButton(FALSE); + GroupC1Layout->addWidget(SelectButtonC1A2, 1, 1); + LineEditC1A2 = new QLineEdit(GroupC1, "LineEditC1A2"); + LineEditC1A2->setReadOnly(true); + GroupC1Layout->addWidget(LineEditC1A2, 1, 2); + + SMESHGUI_EditHypothesesDlgLayout->addWidget(GroupC1, 0, 0); /***************************************************************/ - GroupHypotheses = new QGroupBox( tr( "SMESH_HYPOTHESES" ), this, "GroupHypotheses" ); - GroupHypotheses->setColumnLayout(0, Qt::Vertical ); - GroupHypotheses->layout()->setSpacing( 0 ); - GroupHypotheses->layout()->setMargin( 0 ); - QGridLayout* grid_3 = new QGridLayout( GroupHypotheses->layout() ); - grid_3->setAlignment( Qt::AlignTop ); - grid_3->setSpacing( 6 ); - grid_3->setMargin( 11 ); + GroupHypotheses = new QGroupBox(tr("SMESH_HYPOTHESES"), this, "GroupHypotheses"); + GroupHypotheses->setColumnLayout(0, Qt::Vertical); + GroupHypotheses->layout()->setSpacing(0); + GroupHypotheses->layout()->setMargin(0); + QGridLayout* grid_3 = new QGridLayout(GroupHypotheses->layout()); + grid_3->setAlignment(Qt::AlignTop); + grid_3->setSpacing(6); + grid_3->setMargin(11); - TextHypDefinition = new QLabel( tr( "SMESH_AVAILABLE" ), GroupHypotheses, "TextHypDefinition" ); - grid_3->addWidget( TextHypDefinition, 0, 0 ); + TextHypDefinition = new QLabel(tr("SMESH_AVAILABLE"), GroupHypotheses, "TextHypDefinition"); + grid_3->addWidget(TextHypDefinition, 0, 0); - ListHypDefinition = new QListBox( GroupHypotheses, "ListHypDefinition" ); - ListHypDefinition->setMinimumSize( 100, 100 ); - grid_3->addWidget( ListHypDefinition, 1, 0 ); + ListHypDefinition = new QListBox(GroupHypotheses, "ListHypDefinition"); + ListHypDefinition->setMinimumSize(100, 100); + grid_3->addWidget(ListHypDefinition, 1, 0); - TextHypAssignation = new QLabel( tr( "SMESH_EDIT_USED" ), GroupHypotheses, "TextHypAssignation" ); - grid_3->addWidget( TextHypAssignation, 0, 1 ); + TextHypAssignation = new QLabel(tr("SMESH_EDIT_USED"), GroupHypotheses, "TextHypAssignation"); + grid_3->addWidget(TextHypAssignation, 0, 1); - ListHypAssignation = new QListBox( GroupHypotheses, "ListHypAssignation" ); - ListHypAssignation->setMinimumSize( 100, 100 ); - grid_3->addWidget( ListHypAssignation, 1, 1 ); + ListHypAssignation = new QListBox(GroupHypotheses, "ListHypAssignation"); + ListHypAssignation->setMinimumSize(100, 100); + grid_3->addWidget(ListHypAssignation, 1, 1); - SMESHGUI_EditHypothesesDlgLayout->addWidget( GroupHypotheses, 1, 0 ); + SMESHGUI_EditHypothesesDlgLayout->addWidget(GroupHypotheses, 1, 0); /***************************************************************/ - GroupAlgorithms = new QGroupBox( tr( "SMESH_ADD_ALGORITHM" ), this, "GroupAlgorithms" ); - GroupAlgorithms->setColumnLayout(0, Qt::Vertical ); - GroupAlgorithms->layout()->setSpacing( 0 ); - GroupAlgorithms->layout()->setMargin( 0 ); - QGridLayout* grid_4 = new QGridLayout( GroupAlgorithms->layout() ); - grid_4->setAlignment( Qt::AlignTop ); - grid_4->setSpacing( 6 ); - grid_4->setMargin( 11 ); + GroupAlgorithms = new QGroupBox(tr("SMESH_ADD_ALGORITHM"), this, "GroupAlgorithms"); + GroupAlgorithms->setColumnLayout(0, Qt::Vertical); + GroupAlgorithms->layout()->setSpacing(0); + GroupAlgorithms->layout()->setMargin(0); + QGridLayout* grid_4 = new QGridLayout(GroupAlgorithms->layout()); + grid_4->setAlignment(Qt::AlignTop); + grid_4->setSpacing(6); + grid_4->setMargin(11); - TextAlgoDefinition = new QLabel( tr( "SMESH_AVAILABLE" ), GroupAlgorithms, "TextAlgoDefinition" ); - grid_4->addWidget( TextAlgoDefinition, 0, 0 ); + TextAlgoDefinition = new QLabel(tr("SMESH_AVAILABLE"), GroupAlgorithms, "TextAlgoDefinition"); + grid_4->addWidget(TextAlgoDefinition, 0, 0); - ListAlgoDefinition = new QListBox( GroupAlgorithms, "ListAlgoDefinition" ); - ListAlgoDefinition->setMinimumSize( 100, 100 ); - grid_4->addWidget( ListAlgoDefinition, 1, 0 ); + ListAlgoDefinition = new QListBox(GroupAlgorithms, "ListAlgoDefinition"); + ListAlgoDefinition->setMinimumSize(100, 100); + grid_4->addWidget(ListAlgoDefinition, 1, 0); - TextAlgoAssignation = new QLabel( tr( "SMESH_EDIT_USED" ), GroupAlgorithms, "TextAlgoAssignation" ); - grid_4->addWidget( TextAlgoAssignation, 0, 1 ); + TextAlgoAssignation = new QLabel(tr("SMESH_EDIT_USED"), GroupAlgorithms, "TextAlgoAssignation"); + grid_4->addWidget(TextAlgoAssignation, 0, 1); - ListAlgoAssignation = new QListBox( GroupAlgorithms, "ListAlgoAssignation" ); - ListAlgoAssignation ->setMinimumSize( 100, 100 ); - grid_4->addWidget( ListAlgoAssignation, 1, 1 ); + ListAlgoAssignation = new QListBox(GroupAlgorithms, "ListAlgoAssignation"); + ListAlgoAssignation ->setMinimumSize(100, 100); + grid_4->addWidget(ListAlgoAssignation, 1, 1); - SMESHGUI_EditHypothesesDlgLayout->addWidget( GroupAlgorithms, 2, 0 ); + SMESHGUI_EditHypothesesDlgLayout->addWidget(GroupAlgorithms, 2, 0); /***************************************************************/ - GroupButtons = new QGroupBox( this, "GroupButtons" ); - GroupButtons->setColumnLayout(0, Qt::Vertical ); - GroupButtons->layout()->setSpacing( 0 ); - GroupButtons->layout()->setMargin( 0 ); - QGridLayout* GroupButtonsLayout = new QGridLayout( GroupButtons->layout() ); - GroupButtonsLayout->setAlignment( Qt::AlignTop ); - GroupButtonsLayout->setSpacing( 6 ); - GroupButtonsLayout->setMargin( 11 ); - - buttonOk = new QPushButton( tr( "SMESH_BUT_OK" ), GroupButtons, "buttonOk" ); - buttonOk->setAutoDefault( TRUE ); - buttonOk->setDefault( FALSE ); - GroupButtonsLayout->addWidget( buttonOk, 0, 0 ); - - buttonApply = new QPushButton( tr( "SMESH_BUT_APPLY" ), GroupButtons, "buttonApply" ); - buttonApply->setAutoDefault( TRUE ); - buttonApply->setDefault( FALSE ); - GroupButtonsLayout->addWidget( buttonApply, 0, 1 ); - - GroupButtonsLayout->addItem( new QSpacerItem( 20, 20, QSizePolicy::Expanding, QSizePolicy::Minimum ), 0, 2 ); - - buttonCancel = new QPushButton( tr( "SMESH_BUT_CLOSE" ), GroupButtons, "buttonCancel" ); - buttonCancel->setAutoDefault( TRUE ); - buttonCancel->setDefault( TRUE ); - buttonCancel->setEnabled( TRUE ) ; - GroupButtonsLayout->addWidget( buttonCancel, 0, 3 ); - - SMESHGUI_EditHypothesesDlgLayout->addWidget( GroupButtons, 4, 0 ); + GroupButtons = new QGroupBox(this, "GroupButtons"); + GroupButtons->setColumnLayout(0, Qt::Vertical); + GroupButtons->layout()->setSpacing(0); + GroupButtons->layout()->setMargin(0); + QGridLayout* GroupButtonsLayout = new QGridLayout(GroupButtons->layout()); + GroupButtonsLayout->setAlignment(Qt::AlignTop); + GroupButtonsLayout->setSpacing(6); + GroupButtonsLayout->setMargin(11); + + buttonOk = new QPushButton(tr("SMESH_BUT_OK"), GroupButtons, "buttonOk"); + buttonOk->setAutoDefault(TRUE); + buttonOk->setDefault(FALSE); + GroupButtonsLayout->addWidget(buttonOk, 0, 0); + + buttonApply = new QPushButton(tr("SMESH_BUT_APPLY"), GroupButtons, "buttonApply"); + buttonApply->setAutoDefault(TRUE); + buttonApply->setDefault(FALSE); + GroupButtonsLayout->addWidget(buttonApply, 0, 1); + + GroupButtonsLayout->addItem(new QSpacerItem(20, 20, QSizePolicy::Expanding, QSizePolicy::Minimum), 0, 2); + + buttonCancel = new QPushButton(tr("SMESH_BUT_CLOSE"), GroupButtons, "buttonCancel"); + buttonCancel->setAutoDefault(TRUE); + buttonCancel->setDefault(TRUE); + buttonCancel->setEnabled(TRUE); + GroupButtonsLayout->addWidget(buttonCancel, 0, 3); + + SMESHGUI_EditHypothesesDlgLayout->addWidget(GroupButtons, 4, 0); /***************************************************************/ - Init(Sel) ; + Init(); } - //================================================================================= // function : ~SMESHGUI_EditHypothesesDlg() // purpose : Destroys the object and frees any allocated resources //================================================================================= SMESHGUI_EditHypothesesDlg::~SMESHGUI_EditHypothesesDlg() { - // no need to delete child widgets, Qt does it all for us + // no need to delete child widgets, Qt does it all for us } - //================================================================================= // function : Init() // purpose : //================================================================================= -void SMESHGUI_EditHypothesesDlg::Init( SALOME_Selection* Sel ) +void SMESHGUI_EditHypothesesDlg::Init() { - mySelection = Sel; - mySMESHGUI = SMESHGUI::GetSMESHGUI() ; - mySMESHGUI->SetActiveDialogBox( (QDialog*)this ) ; + mySMESHGUI->SetActiveDialogBox((QDialog*)this); InitHypDefinition(); InitAlgoDefinition(); - myGeomFilter = new SALOME_TypeFilter( "GEOM" ); - myMeshOrSubMeshFilter = new SMESH_TypeFilter( MESHorSUBMESH ); + //myGeomFilter = new SALOME_TypeFilter ("GEOM"); + TColStd_MapOfInteger allTypesMap; + for (int i = 0; i < 10; i++) + allTypesMap.Add(i); + myGeomFilter = new SMESH_NumberFilter ("GEOM", TopAbs_SHAPE, 0, allTypesMap); + myMeshOrSubMeshFilter = new SMESH_TypeFilter (MESHorSUBMESH); myGeomShape = GEOM::GEOM_Object::_nil(); myMesh = SMESH::SMESH_Mesh::_nil(); mySubMesh = SMESH::SMESH_subMesh::_nil(); /* signals and slots connections */ - connect( buttonOk, SIGNAL( clicked() ), this, SLOT( ClickOnOk() ) ); - connect( buttonApply, SIGNAL( clicked() ), this, SLOT( ClickOnApply() ) ); - connect( buttonCancel, SIGNAL( clicked() ), this, SLOT( ClickOnCancel() ) ); - - connect( SelectButtonC1A1, SIGNAL (clicked() ), this, SLOT( SetEditCurrentArgument() ) ) ; - connect( SelectButtonC1A2, SIGNAL (clicked() ), this, SLOT( SetEditCurrentArgument() ) ) ; - - connect( mySelection, SIGNAL( currentSelectionChanged() ), this, SLOT( SelectionIntoArgument() ) ); - connect( mySMESHGUI, SIGNAL( SignalDeactivateActiveDialog() ), this, SLOT( DeactivateActiveDialog() ) ) ; - connect( mySMESHGUI, SIGNAL( SignalCloseAllDialogs() ), this, SLOT( ClickOnCancel() ) ) ; - - connect( ListHypAssignation, SIGNAL( doubleClicked(QListBoxItem*) ), this, SLOT( removeItem(QListBoxItem*) ) ); - connect( ListAlgoAssignation, SIGNAL( doubleClicked(QListBoxItem*) ), this, SLOT( removeItem(QListBoxItem*) ) ); - - connect( ListHypDefinition, SIGNAL( doubleClicked(QListBoxItem*) ), this, SLOT( addItem(QListBoxItem*) ) ); - connect( ListAlgoDefinition, SIGNAL( doubleClicked(QListBoxItem*) ), this, SLOT( addItem(QListBoxItem*) ) ); - - int x, y ; - mySMESHGUI->DefineDlgPosition( this, x, y ) ; - this->move( x, y ) ; - this->show() ; - - LineEditC1A1->setFocus() ; + connect(buttonOk, SIGNAL(clicked()), this, SLOT(ClickOnOk())); + connect(buttonApply, SIGNAL(clicked()), this, SLOT(ClickOnApply())); + connect(buttonCancel, SIGNAL(clicked()), this, SLOT(ClickOnCancel())); + + connect(SelectButtonC1A1, SIGNAL (clicked()), this, SLOT(SetEditCurrentArgument())); + connect(SelectButtonC1A2, SIGNAL (clicked()), this, SLOT(SetEditCurrentArgument())); + + connect(mySelectionMgr, SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())); + connect(mySMESHGUI, SIGNAL(SignalDeactivateActiveDialog()), this, SLOT(DeactivateActiveDialog())); + connect(mySMESHGUI, SIGNAL(SignalCloseAllDialogs()), this, SLOT(ClickOnCancel())); + + connect(ListHypAssignation, SIGNAL(doubleClicked(QListBoxItem*)), this, SLOT(removeItem(QListBoxItem*))); + connect(ListAlgoAssignation, SIGNAL(doubleClicked(QListBoxItem*)), this, SLOT(removeItem(QListBoxItem*))); + + connect(ListHypDefinition, SIGNAL(doubleClicked(QListBoxItem*)), this, SLOT(addItem(QListBoxItem*))); + connect(ListAlgoDefinition, SIGNAL(doubleClicked(QListBoxItem*)), this, SLOT(addItem(QListBoxItem*))); + + int x, y; + mySMESHGUI->DefineDlgPosition(this, x, y); + this->move(x, y); + this->show(); + + LineEditC1A1->setFocus(); myEditCurrentArgument = LineEditC1A1; - mySelection->ClearFilters() ; - mySelection->AddFilter(myMeshOrSubMeshFilter) ; + mySelectionMgr->clearFilters(); + mySelectionMgr->installFilter(myMeshOrSubMeshFilter); SelectionIntoArgument(); UpdateControlState(); } - //================================================================================= // function : ClickOnOk() // purpose : //================================================================================= void SMESHGUI_EditHypothesesDlg::ClickOnOk() { - if ( ClickOnApply() ) - ClickOnCancel() ; + if (ClickOnApply()) + ClickOnCancel(); } //================================================================================= @@ -311,40 +321,40 @@ void SMESHGUI_EditHypothesesDlg::ClickOnOk() //================================================================================= bool SMESHGUI_EditHypothesesDlg::ClickOnApply() { - if (mySMESHGUI->ActiveStudyLocked()) + if (mySMESHGUI->isActiveStudyLocked()) return false; bool aRes = false; - QAD_WaitCursor wc; + SUIT_OverrideCursor wc; - QAD_Operation* op = new QAD_Operation( mySMESHGUI->GetActiveStudy() ); + SUIT_Operation* op = new SUIT_Operation + (SUIT_Session::session()->activeApplication()); // start transaction op->start(); - - if ( !myMesh->_is_nil() ) + + if (!myMesh->_is_nil()) aRes = StoreMesh(); - else if ( !mySubMesh->_is_nil() ) + else if (!mySubMesh->_is_nil()) aRes = StoreSubMesh(); - if ( true/*aRes*/ ) // abort desynchronizes contents of a Study and a mesh on server - { + if (true/*aRes*/) { // abort desynchronizes contents of a Study and a mesh on server // commit transaction - op->finish(); + op->commit(); InitHypAssignation(); InitAlgoAssignation(); - } - else + } else { // abort transaction op->abort(); + } UpdateControlState(); + mySMESHGUI->updateObjBrowser(); return aRes; } - //================================================================================= // function : ClickOnCancel() // purpose : @@ -354,56 +364,58 @@ void SMESHGUI_EditHypothesesDlg::ClickOnCancel() close(); } - //================================================================================= // function : SelectionIntoArgument() // purpose : Called when selection as changed or other case //================================================================================= void SMESHGUI_EditHypothesesDlg::SelectionIntoArgument() { - QString aString = ""; - - int nbSel = SMESH::GetNameOfSelectedIObjects(mySelection, aString) ; - - if ( myEditCurrentArgument == LineEditC1A1 ) { - if ( nbSel != 1 ) { - myMesh = SMESH::SMESH_Mesh::_nil(); - mySubMesh = SMESH::SMESH_subMesh::_nil(); - aString = ""; + QString aString = ""; + + SALOME_ListIO aList; + mySelectionMgr->selectedObjects(aList,SVTK_Viewer::Type()); + + int nbSel = SMESH::GetNameOfSelectedIObjects(mySelectionMgr, aString); + + if (myEditCurrentArgument == LineEditC1A1) { + if (nbSel != 1) { + myMesh = SMESH::SMESH_Mesh::_nil(); + mySubMesh = SMESH::SMESH_subMesh::_nil(); + aString = ""; } else { - Handle(SALOME_InteractiveObject) IO = mySelection->firstIObject() ; - myMesh = SMESH::IObjectToInterface(IO) ; - if(myMesh->_is_nil()){ - mySubMesh = SMESH::IObjectToInterface(IO) ; - if(mySubMesh->_is_nil()){ + Handle(SALOME_InteractiveObject) IO = aList.First(); + myMesh = SMESH::IObjectToInterface(IO); + if (myMesh->_is_nil()) { + mySubMesh = SMESH::IObjectToInterface(IO); + if (mySubMesh->_is_nil()) { aString = ""; } } } - myEditCurrentArgument->setText( aString ); - - myGeomShape = GEOM::GEOM_Object::_nil(); // InitGeom() will try to retrieve a shape from myMesh or mySubMesh + myEditCurrentArgument->setText(aString); + + // InitGeom() will try to retrieve a shape from myMesh or mySubMesh + myGeomShape = GEOM::GEOM_Object::_nil(); InitGeom(); - + myImportedMesh = myGeomShape->_is_nil(); - + InitHypAssignation(); InitAlgoAssignation(); - } - else if ( myEditCurrentArgument == LineEditC1A2 ) { - if ( nbSel != 1 ) + + } else if (myEditCurrentArgument == LineEditC1A2) { + if (nbSel != 1) { myGeomShape = GEOM::GEOM_Object::_nil(); - else { - Handle(SALOME_InteractiveObject) IO = mySelection->firstIObject() ; - myGeomShape = SMESH::IObjectToInterface(IO) ; + } else { + Handle(SALOME_InteractiveObject) IO = aList.First(); + myGeomShape = SMESH::IObjectToInterface(IO); } InitGeom(); - } + } UpdateControlState(); } - //================================================================================= // function : SetEditCurrentArgument() // purpose : @@ -412,17 +424,17 @@ void SMESHGUI_EditHypothesesDlg::SetEditCurrentArgument() { QPushButton* send = (QPushButton*)sender(); if(send == SelectButtonC1A1) { - LineEditC1A1->setFocus() ; + LineEditC1A1->setFocus(); myEditCurrentArgument = LineEditC1A1; - mySelection->ClearFilters() ; - mySelection->AddFilter(myMeshOrSubMeshFilter) ; + mySelectionMgr->clearFilters(); + mySelectionMgr->installFilter(myMeshOrSubMeshFilter); } else if (send == SelectButtonC1A2) { - LineEditC1A2->setFocus() ; + LineEditC1A2->setFocus(); myEditCurrentArgument = LineEditC1A2; - mySelection->ClearFilters() ; - mySelection->AddFilter(myGeomFilter) ; - } - SelectionIntoArgument() ; + mySelectionMgr->clearFilters(); + mySelectionMgr->installFilter(myGeomFilter); + } + SelectionIntoArgument(); } //================================================================================= @@ -431,61 +443,57 @@ void SMESHGUI_EditHypothesesDlg::SetEditCurrentArgument() //================================================================================= void SMESHGUI_EditHypothesesDlg::DeactivateActiveDialog() { - if ( GroupC1->isEnabled() ) { - disconnect( mySelection, 0, this, 0 ); - GroupC1->setEnabled(false) ; - GroupButtons->setEnabled(false) ; + if (GroupC1->isEnabled()) { + disconnect(mySelectionMgr, 0, this, 0); + GroupC1->setEnabled(false); + GroupButtons->setEnabled(false); } } - //================================================================================= // function : ActivateThisDialog() // purpose : //================================================================================= void SMESHGUI_EditHypothesesDlg::ActivateThisDialog() { - mySMESHGUI->EmitSignalDeactivateDialog() ; - GroupC1->setEnabled(true) ; - GroupButtons->setEnabled(true) ; - connect ( mySelection, SIGNAL( currentSelectionChanged() ), this, SLOT( SelectionIntoArgument() ) ); + mySMESHGUI->EmitSignalDeactivateDialog(); + GroupC1->setEnabled(true); + GroupButtons->setEnabled(true); + connect (mySelectionMgr, SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())); } - //================================================================================= // function : enterEvent() // purpose : //================================================================================= -void SMESHGUI_EditHypothesesDlg::enterEvent(QEvent* e) +void SMESHGUI_EditHypothesesDlg::enterEvent (QEvent*) { - if ( !GroupC1->isEnabled() ) + if (!GroupC1->isEnabled()) ActivateThisDialog(); } - //================================================================================= // function : closeEvent() // purpose : //================================================================================= -void SMESHGUI_EditHypothesesDlg::closeEvent( QCloseEvent* e ) +void SMESHGUI_EditHypothesesDlg::closeEvent (QCloseEvent* e) { - disconnect( mySelection, 0, this, 0 ); - mySMESHGUI->ResetState() ; - mySelection->ClearFilters() ; - QDialog::closeEvent( e ); + disconnect(mySelectionMgr, 0, this, 0); + mySMESHGUI->ResetState(); + mySelectionMgr->clearFilters(); + QDialog::closeEvent(e); } //======================================================================= -//function : IsOld -//purpose : +// function : IsOld() +// purpose : //======================================================================= - -bool SMESHGUI_EditHypothesesDlg::IsOld(QListBoxItem* hypItem) +bool SMESHGUI_EditHypothesesDlg::IsOld (QListBoxItem* hypItem) { - if ( hypItem->rtti() == ListBoxIOR::RTTI_IOR ) { - ListBoxIOR* hyp = ( ListBoxIOR* ) hypItem; - return (myMapOldHypos.find( hyp->GetIOR() ) != myMapOldHypos.end() || - myMapOldAlgos.find( hyp->GetIOR() ) != myMapOldAlgos.end() ); + if (hypItem->rtti() == ListBoxIOR::RTTI_IOR) { + ListBoxIOR* hyp = (ListBoxIOR*) hypItem; + return (myMapOldHypos.find(hyp->GetIOR()) != myMapOldHypos.end() || + myMapOldAlgos.find(hyp->GetIOR()) != myMapOldAlgos.end()); } return false; @@ -495,75 +503,74 @@ bool SMESHGUI_EditHypothesesDlg::IsOld(QListBoxItem* hypItem) // function : removeItem() // purpose : //================================================================================= -void SMESHGUI_EditHypothesesDlg::removeItem(QListBoxItem* item) +void SMESHGUI_EditHypothesesDlg::removeItem (QListBoxItem* item) { const QObject* aSender = sender(); if (!item) return; - if ( aSender == ListHypAssignation ) { - myNbModification += IsOld( item ) ? 1 : -1; - ListHypAssignation->removeItem( ListHypAssignation->index( item ) ); - } - else if ( aSender == ListAlgoAssignation ) { - myNbModification += IsOld( item ) ? 1 : -1; - ListAlgoAssignation->removeItem( ListAlgoAssignation->index( item ) ); + if (aSender == ListHypAssignation) { + myNbModification += IsOld(item) ? 1 : -1; + ListHypAssignation->removeItem(ListHypAssignation->index(item)); + } + else if (aSender == ListAlgoAssignation) { + myNbModification += IsOld(item) ? 1 : -1; + ListAlgoAssignation->removeItem(ListAlgoAssignation->index(item)); } - UpdateControlState(); } - //================================================================================= // function : addItem() // purpose : //================================================================================= -void SMESHGUI_EditHypothesesDlg::addItem(QListBoxItem* item) +void SMESHGUI_EditHypothesesDlg::addItem (QListBoxItem* item) { const QObject* aSender = sender(); if (!item) return; ListBoxIOR* i = 0; - if ( item->rtti() == ListBoxIOR::RTTI_IOR ) + if (item->rtti() == ListBoxIOR::RTTI_IOR) i = (ListBoxIOR*)item; if (!i) return; - + bool isFound = false; - if ( aSender == ListHypDefinition ) { - for ( int j = 0, n = ListHypAssignation->count(); !isFound && j < n; j++ ) { - if ( ListHypAssignation->item( j )->rtti() == ListBoxIOR::RTTI_IOR ) { - ListBoxIOR* anItem = (ListBoxIOR*)ListHypAssignation->item( j ); - isFound = !strcmp( anItem->GetIOR(), i->GetIOR() ); + ListBoxIOR* anItem; + if (aSender == ListHypDefinition) { + for (int j = 0, n = ListHypAssignation->count(); !isFound && j < n; j++) { + if (ListHypAssignation->item(j)->rtti() == ListBoxIOR::RTTI_IOR) { + anItem = (ListBoxIOR*)ListHypAssignation->item(j); + isFound = !strcmp(anItem->GetIOR(), i->GetIOR()); } } - if ( !isFound ) - ListBoxIOR* anItem = new ListBoxIOR( ListHypAssignation, - CORBA::string_dup( i->GetIOR() ), - CORBA::string_dup( i->text().latin1() ) ); - } - else if ( aSender == ListAlgoDefinition ) { - for ( int j = 0, n = ListAlgoAssignation->count(); !isFound && j < n; j++ ) { - if ( ListAlgoAssignation->item( j )->rtti() == ListBoxIOR::RTTI_IOR ) { - ListBoxIOR* anItem = (ListBoxIOR*)ListAlgoAssignation->item( j ); - isFound = !strcmp( anItem->GetIOR(), i->GetIOR() ); + if (!isFound) + anItem = new ListBoxIOR (ListHypAssignation, + CORBA::string_dup(i->GetIOR()), + CORBA::string_dup(i->text().latin1())); + + } else if (aSender == ListAlgoDefinition) { + for (int j = 0, n = ListAlgoAssignation->count(); !isFound && j < n; j++) { + if (ListAlgoAssignation->item(j)->rtti() == ListBoxIOR::RTTI_IOR) { + anItem = (ListBoxIOR*)ListAlgoAssignation->item(j); + isFound = !strcmp(anItem->GetIOR(), i->GetIOR()); } } - if ( !isFound ) - ListBoxIOR* anItem = new ListBoxIOR( ListAlgoAssignation, - CORBA::string_dup( i->GetIOR() ), - CORBA::string_dup( i->text().latin1() ) ); + if (!isFound) + anItem = new ListBoxIOR (ListAlgoAssignation, + CORBA::string_dup(i->GetIOR()), + CORBA::string_dup(i->text().latin1())); + } else { } - if ( !isFound ) - myNbModification += IsOld( item ) ? -1 : 1; + if (!isFound) + myNbModification += IsOld(item) ? -1 : 1; UpdateControlState(); } - //================================================================================= // function : InitHypDefinition() // purpose : @@ -572,27 +579,29 @@ void SMESHGUI_EditHypothesesDlg::InitHypDefinition() { ListHypDefinition->clear(); - SALOMEDS::SComponent_var father = SMESH::GetActiveStudyDocument()->FindComponent("SMESH"); - if ( father->_is_nil() ) + _PTR(SComponent) father = SMESH::GetActiveStudyDocument()->FindComponent("SMESH"); + if (!father) return; - SALOMEDS::SObject_var HypothesisRoot; - SALOMEDS::GenericAttribute_var anAttr; - SALOMEDS::AttributeName_var aName; - SALOMEDS::AttributeIOR_var anIOR; + _PTR(SObject) HypothesisRoot; + _PTR(GenericAttribute) anAttr; + _PTR(AttributeName) aName; + _PTR(AttributeIOR) anIOR; - int Tag_HypothesisRoot = 1; - if (father->FindSubObject (1, HypothesisRoot)) { - SALOMEDS::ChildIterator_var it = SMESH::GetActiveStudyDocument()->NewChildIterator(HypothesisRoot); + //int Tag_HypothesisRoot = 1; + if (father->FindSubObject(1, HypothesisRoot)) { + _PTR(ChildIterator) it = + SMESH::GetActiveStudyDocument()->NewChildIterator(HypothesisRoot); + ListBoxIOR* anItem; for (; it->More();it->Next()) { - SALOMEDS::SObject_var Obj = it->Value(); - if (Obj->FindAttribute(anAttr, "AttributeName") ) { - aName = SALOMEDS::AttributeName::_narrow(anAttr); + _PTR(SObject) Obj = it->Value(); + if (Obj->FindAttribute(anAttr, "AttributeName")) { + aName = anAttr; if (Obj->FindAttribute(anAttr, "AttributeIOR")) { - anIOR = SALOMEDS::AttributeIOR::_narrow(anAttr); - ListBoxIOR* anItem = new ListBoxIOR( ListHypDefinition, - anIOR->Value(), - aName->Value() ); + anIOR = anAttr; + anItem = new ListBoxIOR (ListHypDefinition, + anIOR->Value().c_str(), + aName->Value().c_str()); } } } @@ -606,37 +615,36 @@ void SMESHGUI_EditHypothesesDlg::InitHypDefinition() void SMESHGUI_EditHypothesesDlg::InitHypAssignation() { myNbModification = 0; -// MESSAGE ( " InitHypAssignation " << myMesh->_is_nil() ) -// MESSAGE ( " InitHypAssignation " << mySubMesh->_is_nil() ) myMapOldHypos.clear(); ListHypAssignation->clear(); - if ( myImportedMesh ) + if (myImportedMesh) return; - SALOMEDS::SObject_var aMorSM, AHR, aRef; - SALOMEDS::GenericAttribute_var anAttr; - SALOMEDS::AttributeName_var aName; - SALOMEDS::AttributeIOR_var anIOR; + _PTR(SObject) aMorSM, AHR, aRef; + _PTR(GenericAttribute) anAttr; + _PTR(AttributeName) aName; + _PTR(AttributeIOR) anIOR; - if ( !myMesh->_is_nil() ) - aMorSM = SMESH::FindSObject( myMesh ); - else if ( !mySubMesh->_is_nil() ) - aMorSM = SMESH::FindSObject( mySubMesh ); + if (!myMesh->_is_nil()) + aMorSM = SMESH::FindSObject(myMesh); + else if (!mySubMesh->_is_nil()) + aMorSM = SMESH::FindSObject(mySubMesh); - if ( !aMorSM->_is_nil() && aMorSM->FindSubObject (2, AHR)) { - SALOMEDS::ChildIterator_var it = SMESH::GetActiveStudyDocument()->NewChildIterator(AHR); + if (aMorSM && aMorSM->FindSubObject(2, AHR)) { + _PTR(ChildIterator) it = + SMESH::GetActiveStudyDocument()->NewChildIterator(AHR); for (; it->More();it->Next()) { - SALOMEDS::SObject_var Obj = it->Value(); - if ( Obj->ReferencedObject(aRef) ) { - if (aRef->FindAttribute(anAttr, "AttributeName") ) { - aName = SALOMEDS::AttributeName::_narrow(anAttr); + _PTR(SObject) Obj = it->Value(); + if (Obj->ReferencedObject(aRef)) { + if (aRef->FindAttribute(anAttr, "AttributeName")) { + aName = anAttr; if (aRef->FindAttribute(anAttr, "AttributeIOR")) { - anIOR = SALOMEDS::AttributeIOR::_narrow(anAttr); - ListBoxIOR* anItem = new ListBoxIOR( ListHypAssignation, - anIOR->Value(), - aName->Value() ); - myMapOldHypos[ anIOR->Value() ] = ListHypAssignation->index( anItem ); + anIOR = anAttr; + ListBoxIOR* anItem = new ListBoxIOR (ListHypAssignation, + anIOR->Value().c_str(), + aName->Value().c_str()); + myMapOldHypos[ anIOR->Value() ] = ListHypAssignation->index(anItem); } } } @@ -652,70 +660,69 @@ void SMESHGUI_EditHypothesesDlg::InitAlgoDefinition() { ListAlgoDefinition->clear(); - SALOMEDS::SComponent_var father = SMESH::GetActiveStudyDocument()->FindComponent("SMESH"); - if ( father->_is_nil() ) + _PTR(SComponent) father = SMESH::GetActiveStudyDocument()->FindComponent("SMESH"); + if (!father) return; - SALOMEDS::SObject_var AlgorithmsRoot; - SALOMEDS::GenericAttribute_var anAttr; - SALOMEDS::AttributeName_var aName; - SALOMEDS::AttributeIOR_var anIOR; + _PTR(SObject) AlgorithmsRoot; + _PTR(GenericAttribute) anAttr; + _PTR(AttributeName) aName; + _PTR(AttributeIOR) anIOR; if (father->FindSubObject (2, AlgorithmsRoot)) { - SALOMEDS::ChildIterator_var it = SMESH::GetActiveStudyDocument()->NewChildIterator(AlgorithmsRoot); + _PTR(ChildIterator) it = + SMESH::GetActiveStudyDocument()->NewChildIterator(AlgorithmsRoot); + ListBoxIOR* anItem; for (; it->More();it->Next()) { - SALOMEDS::SObject_var Obj = it->Value(); - if (Obj->FindAttribute(anAttr, "AttributeName") ) { - aName = SALOMEDS::AttributeName::_narrow(anAttr); + _PTR(SObject) Obj = it->Value(); + if (Obj->FindAttribute(anAttr, "AttributeName")) { + aName = anAttr; if (Obj->FindAttribute(anAttr, "AttributeIOR")) { - anIOR = SALOMEDS::AttributeIOR::_narrow(anAttr); - ListBoxIOR* anItem = new ListBoxIOR( ListAlgoDefinition, - anIOR->Value(), - aName->Value() ); + anIOR = anAttr; + anItem = new ListBoxIOR (ListAlgoDefinition, + anIOR->Value().c_str(), + aName->Value().c_str()); } } } } } - //================================================================================= // function : InitAlgoAssignation() // purpose : //================================================================================= void SMESHGUI_EditHypothesesDlg::InitAlgoAssignation() { - MESSAGE ( " InitAlgoAssignation " << myMesh->_is_nil() ) - MESSAGE ( " InitAlgoAssignation " << mySubMesh->_is_nil() ) - myMapOldAlgos.clear(); ListAlgoAssignation->clear(); - if ( myImportedMesh ) + if (myImportedMesh) return; - SALOMEDS::SObject_var aMorSM, AHR, aRef; - SALOMEDS::GenericAttribute_var anAttr; - SALOMEDS::AttributeName_var aName; - SALOMEDS::AttributeIOR_var anIOR; + _PTR(SObject) aMorSM, AHR, aRef; + _PTR(GenericAttribute) anAttr; + _PTR(AttributeName) aName; + _PTR(AttributeIOR) anIOR; - if ( !myMesh->_is_nil() ) - aMorSM = SMESH::FindSObject( myMesh ); - else if ( !mySubMesh->_is_nil() ) - aMorSM = SMESH::FindSObject( mySubMesh ); + if (!myMesh->_is_nil()) + aMorSM = SMESH::FindSObject(myMesh); + else if (!mySubMesh->_is_nil()) + aMorSM = SMESH::FindSObject(mySubMesh); - if ( !aMorSM->_is_nil() && aMorSM->FindSubObject (3, AHR)) { - SALOMEDS::ChildIterator_var it = SMESH::GetActiveStudyDocument()->NewChildIterator(AHR); + if (aMorSM && aMorSM->FindSubObject(3, AHR)) { + _PTR(ChildIterator) it = + SMESH::GetActiveStudyDocument()->NewChildIterator(AHR); for (; it->More();it->Next()) { - SALOMEDS::SObject_var Obj = it->Value(); - if ( Obj->ReferencedObject(aRef) ) { - if (aRef->FindAttribute(anAttr, "AttributeName") ) { - aName = SALOMEDS::AttributeName::_narrow(anAttr); + _PTR(SObject) Obj = it->Value(); + if (Obj->ReferencedObject(aRef)) { + if (aRef->FindAttribute(anAttr, "AttributeName")) { + aName = anAttr; if (aRef->FindAttribute(anAttr, "AttributeIOR")) { - anIOR = SALOMEDS::AttributeIOR::_narrow(anAttr); - ListBoxIOR* anItem = new ListBoxIOR( ListAlgoAssignation, - anIOR->Value(), - aName->Value() ); - myMapOldAlgos[ anIOR->Value() ] = ListAlgoAssignation->index( anItem ); + anIOR = anAttr; + ListBoxIOR* anItem = new ListBoxIOR (ListAlgoAssignation, + anIOR->Value().c_str(), + aName->Value().c_str()); + myMapOldAlgos[ anIOR->Value() ] = ListAlgoAssignation->index(anItem); } } } @@ -729,28 +736,29 @@ void SMESHGUI_EditHypothesesDlg::InitAlgoAssignation() //================================================================================= void SMESHGUI_EditHypothesesDlg::InitGeom() { - LineEditC1A2->setText("") ; + LineEditC1A2->setText(""); - if ( myGeomShape->_is_nil() && !myMesh->_is_nil() ) { - SALOMEDS::SObject_var aMesh = SMESH::FindSObject( myMesh ); - if ( !aMesh->_is_nil() ) + if (myGeomShape->_is_nil() && !myMesh->_is_nil()) { + _PTR(SObject) aMesh = SMESH::FindSObject(myMesh); + if (aMesh) myGeomShape = SMESH::GetShapeOnMeshOrSubMesh(aMesh); } - if ( myGeomShape->_is_nil() && !mySubMesh->_is_nil() ) { - SALOMEDS::SObject_var aSubMesh = SMESH::FindSObject( mySubMesh ); - if ( !aSubMesh->_is_nil() ) + if (myGeomShape->_is_nil() && !mySubMesh->_is_nil()) { + _PTR(SObject) aSubMesh = SMESH::FindSObject(mySubMesh); + if (aSubMesh) myGeomShape = SMESH::GetShapeOnMeshOrSubMesh(aSubMesh); } - - SALOMEDS::GenericAttribute_var anAttr; - SALOMEDS::AttributeName_var aName; - if ( !myGeomShape->_is_nil() && (!myMesh->_is_nil() || !mySubMesh->_is_nil()) ) { - SALOMEDS::Study_var aStudy = SMESH::GetActiveStudyDocument(); - SALOMEDS::SObject_var aSO = aStudy->FindObjectIOR( aStudy->ConvertObjectToIOR(myGeomShape) ); - if ( !aSO->_is_nil() ) { - if (aSO->FindAttribute(anAttr, "AttributeName") ) { - aName = SALOMEDS::AttributeName::_narrow(anAttr); - LineEditC1A2->setText( QString(aName->Value()) ) ; + + _PTR(GenericAttribute) anAttr; + _PTR(AttributeName) aName; + if (!myGeomShape->_is_nil() && (!myMesh->_is_nil() || !mySubMesh->_is_nil())) { + _PTR(Study) aStudy = SMESH::GetActiveStudyDocument(); + //_PTR(SObject) aSO = aStudy->FindObjectIOR(aStudy->ConvertObjectToIOR(myGeomShape)); + _PTR(SObject) aSO = aStudy->FindObjectID(myGeomShape->GetStudyEntry()); + if (aSO) { + if (aSO->FindAttribute(anAttr, "AttributeName")) { + aName = anAttr; + LineEditC1A2->setText(QString(aName->Value().c_str())); } } } @@ -762,18 +770,22 @@ void SMESHGUI_EditHypothesesDlg::InitGeom() //================================================================================= void SMESHGUI_EditHypothesesDlg::UpdateControlState() { - bool isEnabled = ( !myMesh ->_is_nil() && !myGeomShape->_is_nil() && ListHypAssignation->count() && ListAlgoAssignation->count() ) || - ( !mySubMesh->_is_nil() && !myGeomShape->_is_nil() && ( ListHypAssignation->count() || ListAlgoAssignation->count() ) ); - - buttonOk ->setEnabled( myNbModification && isEnabled && !myImportedMesh ); - buttonApply->setEnabled( myNbModification && isEnabled && !myImportedMesh ); - - SelectButtonC1A2 ->setEnabled( ALLOW_CHANGE_SHAPE && !myImportedMesh ); - LineEditC1A2 ->setEnabled( ALLOW_CHANGE_SHAPE && !myImportedMesh ); - ListHypDefinition ->setEnabled( !myImportedMesh ); - ListHypAssignation ->setEnabled( !myImportedMesh ); - ListAlgoDefinition ->setEnabled( !myImportedMesh ); - ListAlgoAssignation->setEnabled( !myImportedMesh ); + // asl the check of "count" is commented because of PAL9787 + bool isEnabled = (!myMesh->_is_nil() && !myGeomShape->_is_nil() /*&& + ListHypAssignation->count() && ListAlgoAssignation->count()*/ ) + || + (!mySubMesh->_is_nil() && !myGeomShape->_is_nil() /*&& + (ListHypAssignation->count() || ListAlgoAssignation->count())*/); + + buttonOk ->setEnabled(myNbModification && isEnabled && !myImportedMesh); + buttonApply->setEnabled(myNbModification && isEnabled && !myImportedMesh); + + SelectButtonC1A2 ->setEnabled(ALLOW_CHANGE_SHAPE && !myImportedMesh); + LineEditC1A2 ->setEnabled(ALLOW_CHANGE_SHAPE && !myImportedMesh); + ListHypDefinition ->setEnabled(!myImportedMesh); + ListHypAssignation ->setEnabled(!myImportedMesh); + ListAlgoDefinition ->setEnabled(!myImportedMesh); + ListAlgoAssignation->setEnabled(!myImportedMesh); } //================================================================================= @@ -783,13 +795,15 @@ void SMESHGUI_EditHypothesesDlg::UpdateControlState() bool SMESHGUI_EditHypothesesDlg::StoreMesh() { MapIOR anOldHypos, aNewHypos; - if ( myGeomShape->_is_nil() ) + if (myGeomShape->_is_nil()) return false; + // 1. Check whether the geometric shape has changed - SALOMEDS::SObject_var aMeshSO = SMESH::FindSObject( myMesh ); - GEOM::GEOM_Object_var aIniGeomShape = SMESH::GetShapeOnMeshOrSubMesh( aMeshSO ); - bool bShapeChanged = aIniGeomShape->_is_nil() || !aIniGeomShape->_is_equivalent( myGeomShape ); - if ( bShapeChanged ) { + _PTR(SObject) aMeshSO = SMESH::FindSObject(myMesh); + GEOM::GEOM_Object_var aIniGeomShape = SMESH::GetShapeOnMeshOrSubMesh(aMeshSO); + bool bShapeChanged = aIniGeomShape->_is_nil() || + !aIniGeomShape->_is_equivalent(myGeomShape); + if (bShapeChanged) { // VSR : TODO : Set new shape - not supported yet by SMESH engine // 1. remove all old hypotheses and algorithms and also submeshes // 2. set new shape @@ -797,63 +811,71 @@ bool SMESHGUI_EditHypothesesDlg::StoreMesh() int nbFail = 0; MapIOR::iterator it; + // 2. remove not used hypotheses from the mesh - for ( it = myMapOldHypos.begin(); it != myMapOldHypos.end(); ++it ) { + for (it = myMapOldHypos.begin(); it != myMapOldHypos.end(); ++it) { string ior = it->first; - int index = findItem( ListHypAssignation, ior ); - if ( index < 0 ) { - SMESH::SMESH_Hypothesis_var aHyp = SMESH::IORToInterface(ior.c_str()); - if ( !aHyp->_is_nil() ){ - if (!SMESH::RemoveHypothesisOrAlgorithmOnMesh( aMeshSO, aHyp )) + int index = findItem(ListHypAssignation, ior); + if (index < 0) { + SMESH::SMESH_Hypothesis_var aHyp = + SMESH::IORToInterface(ior.c_str()); + if (!aHyp->_is_nil()) { + if (!SMESH::RemoveHypothesisOrAlgorithmOnMesh(aMeshSO, aHyp)) nbFail++; } } } + // 3. remove not used algorithms from the mesh - for ( it = myMapOldAlgos.begin(); it != myMapOldAlgos.end(); ++it ) { + for (it = myMapOldAlgos.begin(); it != myMapOldAlgos.end(); ++it) { string ior = it->first; - int index = findItem( ListAlgoAssignation, ior ); - if ( index < 0 ) { - SMESH::SMESH_Hypothesis_var aHyp = SMESH::IORToInterface(ior.c_str()); - if ( !aHyp->_is_nil() ){ - if (!SMESH::RemoveHypothesisOrAlgorithmOnMesh( aMeshSO, aHyp )) + int index = findItem(ListAlgoAssignation, ior); + if (index < 0) { + SMESH::SMESH_Hypothesis_var aHyp = + SMESH::IORToInterface(ior.c_str()); + if (!aHyp->_is_nil()) { + if (!SMESH::RemoveHypothesisOrAlgorithmOnMesh(aMeshSO, aHyp)) nbFail++; } } } + // 4. Add new algorithms - for ( int i = 0; i < ListAlgoAssignation->count(); i++ ) { - if ( ListAlgoAssignation->item( i )->rtti() == ListBoxIOR::RTTI_IOR ) { - ListBoxIOR* anItem = ( ListBoxIOR* )( ListAlgoAssignation->item( i ) ); - if ( anItem ) { + for (int i = 0; i < ListAlgoAssignation->count(); i++) { + if (ListAlgoAssignation->item(i)->rtti() == ListBoxIOR::RTTI_IOR) { + ListBoxIOR* anItem = (ListBoxIOR*)(ListAlgoAssignation->item(i)); + if (anItem) { string ior = anItem->GetIOR(); - if ( myMapOldAlgos.find( ior ) == myMapOldAlgos.end() ) { - SMESH::SMESH_Hypothesis_var aHyp = SMESH::IORToInterface(ior.c_str()); - if ( !aHyp->_is_nil() ){ - if (!SMESH::AddHypothesisOnMesh( myMesh, aHyp )) + if (myMapOldAlgos.find(ior) == myMapOldAlgos.end()) { + SMESH::SMESH_Hypothesis_var aHyp = + SMESH::IORToInterface(ior.c_str()); + if (!aHyp->_is_nil()) { + if (!SMESH::AddHypothesisOnMesh(myMesh, aHyp)) nbFail++; } } } } } + // 5. Add new hypotheses - for ( int i = 0; i < ListHypAssignation->count(); i++ ) { - if ( ListHypAssignation->item( i )->rtti() == ListBoxIOR::RTTI_IOR ) { - ListBoxIOR* anItem = ( ListBoxIOR* )( ListHypAssignation->item( i ) ); - if ( anItem ) { + for (int i = 0; i < ListHypAssignation->count(); i++) { + if (ListHypAssignation->item(i)->rtti() == ListBoxIOR::RTTI_IOR) { + ListBoxIOR* anItem = (ListBoxIOR*)(ListHypAssignation->item(i)); + if (anItem) { string ior = anItem->GetIOR(); - if ( myMapOldHypos.find( ior ) == myMapOldHypos.end() ) { - SMESH::SMESH_Hypothesis_var aHyp = SMESH::IORToInterface(ior.c_str()); - if ( !aHyp->_is_nil() ){ - if (!SMESH::AddHypothesisOnMesh( myMesh, aHyp )) + if (myMapOldHypos.find(ior) == myMapOldHypos.end()) { + SMESH::SMESH_Hypothesis_var aHyp = + SMESH::IORToInterface(ior.c_str()); + if (!aHyp->_is_nil()) { + if (!SMESH::AddHypothesisOnMesh(myMesh, aHyp)) nbFail++; } } } } } - return ( nbFail == 0 ); + return (nbFail == 0); } //================================================================================= @@ -863,74 +885,79 @@ bool SMESHGUI_EditHypothesesDlg::StoreMesh() bool SMESHGUI_EditHypothesesDlg::StoreSubMesh() { MapIOR anOldHypos, aNewHypos; - if ( myGeomShape->_is_nil() ) + if (myGeomShape->_is_nil()) return false; + // 1. Check whether the geometric shape has changed - SALOMEDS::SObject_var aSubMeshSO = SMESH::FindSObject( mySubMesh ); - GEOM::GEOM_Object_var aIniGeomShape = SMESH::GetShapeOnMeshOrSubMesh( aSubMeshSO ); - bool bShapeChanged = aIniGeomShape->_is_nil() || !aIniGeomShape->_is_equivalent( myGeomShape ); - if ( bShapeChanged ) { + _PTR(SObject) aSubMeshSO = SMESH::FindSObject(mySubMesh); + GEOM::GEOM_Object_var aIniGeomShape = SMESH::GetShapeOnMeshOrSubMesh(aSubMeshSO); + bool bShapeChanged = aIniGeomShape->_is_nil() || !aIniGeomShape->_is_equivalent(myGeomShape); + if (bShapeChanged) { // VSR : TODO : Set new shape - not supported yet by engine // 1. remove all old hypotheses and algorithms // 2. set new shape } int nbFail = 0; MapIOR::iterator it; + // 2. remove not used hypotheses from the submesh - for ( it = myMapOldHypos.begin(); it != myMapOldHypos.end(); ++it ) { + for (it = myMapOldHypos.begin(); it != myMapOldHypos.end(); ++it) { string ior = it->first; - int index = findItem( ListHypAssignation, ior ); - if ( index < 0 ) { + int index = findItem(ListHypAssignation, ior); + if (index < 0) { SMESH::SMESH_Hypothesis_var aHyp = SMESH::IORToInterface(ior.c_str()); - if ( !aHyp->_is_nil() ){ - if (!SMESH::RemoveHypothesisOrAlgorithmOnMesh( aSubMeshSO, aHyp )) + if (!aHyp->_is_nil()) { + if (!SMESH::RemoveHypothesisOrAlgorithmOnMesh(aSubMeshSO, aHyp)) nbFail++; } } } + // 3. remove not used algorithms from the submesh - for ( it = myMapOldAlgos.begin(); it != myMapOldAlgos.end(); ++it ) { + for (it = myMapOldAlgos.begin(); it != myMapOldAlgos.end(); ++it) { string ior = it->first; - int index = findItem( ListAlgoAssignation, ior ); - if ( index < 0 ) { + int index = findItem(ListAlgoAssignation, ior); + if (index < 0) { SMESH::SMESH_Hypothesis_var aHyp = SMESH::IORToInterface(ior.c_str()); - if ( !aHyp->_is_nil() ){ - if (!SMESH::RemoveHypothesisOrAlgorithmOnMesh( aSubMeshSO, aHyp )) + if (!aHyp->_is_nil()){ + if (!SMESH::RemoveHypothesisOrAlgorithmOnMesh(aSubMeshSO, aHyp)) nbFail++; } } } + // 4. Add new algorithms - for ( int i = 0; i < ListAlgoAssignation->count(); i++ ) { - if ( ListAlgoAssignation->item( i )->rtti() == ListBoxIOR::RTTI_IOR ) { - ListBoxIOR* anItem = ( ListBoxIOR* )( ListAlgoAssignation->item( i ) ); - if ( anItem ) { + for (int i = 0; i < ListAlgoAssignation->count(); i++) { + if (ListAlgoAssignation->item(i)->rtti() == ListBoxIOR::RTTI_IOR) { + ListBoxIOR* anItem = (ListBoxIOR*)(ListAlgoAssignation->item(i)); + if (anItem) { string ior = anItem->GetIOR(); - if ( myMapOldAlgos.find( ior ) == myMapOldAlgos.end() ) { + if (myMapOldAlgos.find(ior) == myMapOldAlgos.end()) { SMESH::SMESH_Hypothesis_var aHyp = SMESH::IORToInterface(ior.c_str()); - if ( !aHyp->_is_nil() ){ - if (!SMESH::AddHypothesisOnSubMesh( mySubMesh, aHyp )) + if (!aHyp->_is_nil()){ + if (!SMESH::AddHypothesisOnSubMesh(mySubMesh, aHyp)) nbFail++; } } } } } + // 5. Add new hypotheses - for ( int i = 0; i < ListHypAssignation->count(); i++ ) { - if ( ListHypAssignation->item( i )->rtti() == ListBoxIOR::RTTI_IOR ) { - ListBoxIOR* anItem = ( ListBoxIOR* )( ListHypAssignation->item( i ) ); - if ( anItem ) { + for (int i = 0; i < ListHypAssignation->count(); i++) { + if (ListHypAssignation->item(i)->rtti() == ListBoxIOR::RTTI_IOR) { + ListBoxIOR* anItem = (ListBoxIOR*)(ListHypAssignation->item(i)); + if (anItem) { string ior = anItem->GetIOR(); - if ( myMapOldHypos.find( ior ) == myMapOldHypos.end() ) { + if (myMapOldHypos.find(ior) == myMapOldHypos.end()) { SMESH::SMESH_Hypothesis_var aHyp = SMESH::IORToInterface(ior.c_str()); - if ( !aHyp->_is_nil() ){ - if (!SMESH::AddHypothesisOnSubMesh( mySubMesh, aHyp )) + if (!aHyp->_is_nil()){ + if (!SMESH::AddHypothesisOnSubMesh(mySubMesh, aHyp)) nbFail++; } } } } } - return ( nbFail == 0 ); + return (nbFail == 0); }