X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FSMESHGUI%2FSMESHGUI_Hypotheses.cxx;h=4c3438dc7ace67bbdafdc9abd05a4927f1ca9c6b;hb=4d706076ffe53bf258ba28122770117bd72a48c0;hp=b6e28773aa4823ef67a79ee9cc9e6ff5260fee95;hpb=3a401076892f2f372c58a07199e36486a6c5c9af;p=modules%2Fsmesh.git diff --git a/src/SMESHGUI/SMESHGUI_Hypotheses.cxx b/src/SMESHGUI/SMESHGUI_Hypotheses.cxx index b6e28773a..4c3438dc7 100644 --- a/src/SMESHGUI/SMESHGUI_Hypotheses.cxx +++ b/src/SMESHGUI/SMESHGUI_Hypotheses.cxx @@ -1,30 +1,28 @@ -// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE // -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +// Copyright (C) 2003-2007 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 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. +// 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 +// 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.salome-platform.org/ or email : webmaster.salome@opencascade.com +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // +// File : SMESHGUI_Hypotheses.cxx +// Author : Julia DOROVSKIKH, Open CASCADE S.A.S. +// SMESH includes -// SMESH SMESHGUI : GUI for SMESH component -// File : SMESHGUI_Hypotheses.cxx -// Author : Julia DOROVSKIKH, Open CASCADE S.A.S. -// SMESH includes -// #include "SMESHGUI_Hypotheses.h" #include "SMESHGUI.h" @@ -53,6 +51,10 @@ #define SPACING 6 #define MARGIN 11 +//To disable automatic genericobj management, the following line should be commented. +//Otherwise, it should be uncommented. Refer to KERNEL_SRC/src/SALOMEDSImpl/SALOMEDSImpl_AttributeIOR.cxx +#define WITHGENERICOBJ + SMESHGUI_GenericHypothesisCreator::SMESHGUI_GenericHypothesisCreator( const QString& theHypType ) : myHypType( theHypType ), myIsCreate( false ), myDlg( 0 ) { @@ -86,14 +88,22 @@ void SMESHGUI_GenericHypothesisCreator::create( bool isAlgo, myIsCreate = true; // Create hypothesis/algorithm - if (isAlgo) - SMESH::CreateHypothesis( hypType(), theHypName, isAlgo ); - - else - { - SMESH::SMESH_Hypothesis_var aHypothesis = + if (isAlgo) { + SMESH::SMESH_Hypothesis_var anAlgo = + SMESH::CreateHypothesis( hypType(), theHypName, isAlgo ); +#ifdef WITHGENERICOBJ + if (!CORBA::is_nil(anAlgo)) + anAlgo->UnRegister(); +#endif + } + else { + SMESH::SMESH_Hypothesis_var aHypothesis = SMESH::CreateHypothesis( hypType(), theHypName, false ); editHypothesis( aHypothesis.in(), theHypName, theParent, obj, slot ); +#ifdef WITHGENERICOBJ + if (!CORBA::is_nil(aHypothesis)) + aHypothesis->UnRegister(); +#endif } } @@ -111,13 +121,16 @@ void SMESHGUI_GenericHypothesisCreator::edit( SMESH::SMESH_Hypothesis_ptr theHyp editHypothesis( theHypothesis, theHypName, theParent, obj, slot ); } -void SMESHGUI_GenericHypothesisCreator::editHypothesis( SMESH::SMESH_Hypothesis_ptr h, +void SMESHGUI_GenericHypothesisCreator::editHypothesis( SMESH::SMESH_Hypothesis_ptr h, const QString& theHypName, QWidget* theParent, QObject* obj, const QString& slot ) { myHypName = theHypName; myHypo = SMESH::SMESH_Hypothesis::_duplicate( h ); +#ifdef WITHGENERICOBJ + myHypo->Register(); +#endif SMESHGUI_HypothesisDlg* Dlg = new SMESHGUI_HypothesisDlg( this, theParent ); connect( Dlg, SIGNAL( finished( int ) ), this, SLOT( onDialogFinished( int ) ) ); @@ -137,10 +150,12 @@ void SMESHGUI_GenericHypothesisCreator::editHypothesis( SMESH::SMESH_Hypothesis_ Dlg->show(); Dlg->resize( Dlg->minimumSizeHint() ); } - else + else { emit finished( QDialog::Accepted ); + delete myDlg; + } } - + QFrame* SMESHGUI_GenericHypothesisCreator::buildStdFrame() { if( CORBA::is_nil( hypothesis() ) ) @@ -169,7 +184,7 @@ QFrame* SMESHGUI_GenericHypothesisCreator::buildStdFrame() GroupC1Layout->addWidget( lab, i, 0 ); QWidget* w = getCustomWidget( *anIt, GroupC1, i ); - if ( !w ) + if ( !w ) switch( (*anIt).myValue.type() ) { case QVariant::Int: @@ -287,12 +302,15 @@ void SMESHGUI_GenericHypothesisCreator::onDialogFinished( int result ) } } SMESHGUI::GetSMESHGUI()->updateObjBrowser( true, 0 ); +#ifdef WITHGENERICOBJ + myHypo->UnRegister(); +#endif myHypo = SMESH::SMESH_Hypothesis::_nil(); myInitParamsHypo = SMESH::SMESH_Hypothesis::_nil(); disconnect( myDlg, SIGNAL( finished( int ) ), this, SLOT( onDialogFinished( int ) ) ); myDlg->close(); - //delete myDlg; + //delete myDlg; since WA_DeleteOnClose==true myDlg = 0; emit finished( result ); } @@ -316,26 +334,22 @@ bool SMESHGUI_GenericHypothesisCreator::getStdParamFromDlg( ListOfStdParams& par item.myValue = sb->value(); params.append( item ); } - else if( (*anIt)->inherits( "SalomeApp_DoubleSpinBox" ) ) { SalomeApp_DoubleSpinBox* sb = ( SalomeApp_DoubleSpinBox* )( *anIt ); item.myValue = sb->value(); params.append( item ); } - else if( (*anIt)->inherits( "QLineEdit" ) ) { QLineEdit* line = ( QLineEdit* )( *anIt ); item.myValue = line->text(); params.append( item ); } - else if ( getParamFromCustomWidget( item, *anIt )) { params.append( item ); } - else res = false; } @@ -351,7 +365,7 @@ QStringList SMESHGUI_GenericHypothesisCreator::getVariablesFromDlg() const if( (*anIt)->inherits( "QAbstractSpinBox" ) ) { QAbstractSpinBox* sb = ( QAbstractSpinBox* )( *anIt ); aResult.append(sb->text()); - } + } } return aResult; } @@ -440,7 +454,7 @@ SMESHGUI_GenericHypothesisCreator::ListOfWidgets& SMESHGUI_GenericHypothesisCrea } QtxDialog* SMESHGUI_GenericHypothesisCreator:: dlg() const -{ +{ return myDlg; } @@ -544,18 +558,19 @@ QString SMESHGUI_GenericHypothesisCreator::helpPage() const aHelpFileName = "segments_around_vertex_algo_page.html"; else if ( aHypType == "QuadrangleParams") aHelpFileName = "a2d_meshing_hypo_page.html#hypo_quad_params_anchor"; + else if ( aHypType == "ViscousLayers") + aHelpFileName = "additional_hypo_page.html#viscous_layers_anchor"; + else if ( aHypType == "ImportSource1D" || aHypType == "ImportSource2D") + aHelpFileName = "import_algos_page.html"; return aHelpFileName; } - - - SMESHGUI_HypothesisDlg::SMESHGUI_HypothesisDlg( SMESHGUI_GenericHypothesisCreator* creator, QWidget* parent ) : QtxDialog( parent, false, true ), myCreator( creator ) { setAttribute(Qt::WA_DeleteOnClose, true); - setMinimumSize( 300, height() ); + // setMinimumSize( 300, height() ); // setFixedSize( 300, height() ); QVBoxLayout* topLayout = new QVBoxLayout( mainFrame() ); topLayout->setMargin( 0 ); @@ -565,7 +580,7 @@ SMESHGUI_HypothesisDlg::SMESHGUI_HypothesisDlg( SMESHGUI_GenericHypothesisCreato QHBoxLayout* titLay = new QHBoxLayout( titFrame ); titLay->setMargin( 0 ); titLay->setSpacing( SPACING ); - + myIconLabel = new QLabel( titFrame ); myIconLabel->setScaledContents( false ); myIconLabel->setSizePolicy( QSizePolicy( QSizePolicy::Fixed, QSizePolicy::Fixed ) ); @@ -634,7 +649,7 @@ void SMESHGUI_HypothesisDlg::onHelp() #endif SUIT_MessageBox::warning(this, tr("WRN_WARNING"), tr("EXTERNAL_BROWSER_CANNOT_SHOW_PAGE"). - arg(app->resourceMgr()->stringValue("ExternalBrowser", + arg(app->resourceMgr()->stringValue("ExternalBrowser", platform)). arg(myHelpFileName)); } @@ -642,7 +657,7 @@ void SMESHGUI_HypothesisDlg::onHelp() void SMESHGUI_HypothesisDlg::setHIcon( const QPixmap& p ) { - myIconLabel->setPixmap( p ); + myIconLabel->setPixmap( p ); } void SMESHGUI_HypothesisDlg::setType( const QString& t ) @@ -672,7 +687,7 @@ HypothesisData::HypothesisData( const QString& theTypeName, IconId( theIconId ), Dim( theDim ), IsAux( theIsAux ), - NeededHypos( theNeededHypos ), + NeededHypos( theNeededHypos ), OptionalHypos( theOptionalHypos ), InputTypes( theInputTypes ), OutputTypes( theOutputTypes ), @@ -681,19 +696,21 @@ HypothesisData::HypothesisData( const QString& theTypeName, { } -HypothesesSet::HypothesesSet( const QString& theSetName ) +HypothesesSet::HypothesesSet( const QString& theSetName ) : myHypoSetName( theSetName ), - myIsAlgo( false ) + myIsAlgo( false ), + myIsCustom( false ) { } HypothesesSet::HypothesesSet( const QString& theSetName, const QStringList& theHypoList, const QStringList& theAlgoList ) - : myHypoSetName( theSetName ), - myHypoList( theHypoList ), + : myHypoSetName( theSetName ), + myHypoList( theHypoList ), myAlgoList( theAlgoList ), - myIsAlgo( false ) + myIsAlgo( false ), + myIsCustom( false ) { } @@ -748,3 +765,27 @@ QString HypothesesSet::current() const return list()->at(myIndex); } +void HypothesesSet::setIsCustom( bool isCustom ) +{ + myIsCustom = isCustom; +} + +bool HypothesesSet::getIsCustom() const +{ + return myIsCustom; +} + +int HypothesesSet::maxDim() const +{ + HypothesesSet * thisSet = (HypothesesSet*) this; + int dim = -1; + for ( int isAlgo = 0; isAlgo < 2; ++isAlgo ) + { + thisSet->init( isAlgo ); + while ( thisSet->next(), thisSet->more() ) + if ( HypothesisData* hypData = SMESH::GetHypothesisData( thisSet->current() )) + for ( int i = 0; i < hypData->Dim.count(); ++i ) + dim = qMax( dim, hypData->Dim[i] ); + } + return dim; +}