1 // Copyright (C) 2007-2019 CEA/DEN, EDF R&D, OPEN CASCADE
3 // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
4 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
6 // This library is free software; you can redistribute it and/or
7 // modify it under the terms of the GNU Lesser General Public
8 // License as published by the Free Software Foundation; either
9 // version 2.1 of the License, or (at your option) any later version.
11 // This library is distributed in the hope that it will be useful,
12 // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 // Lesser General Public License for more details.
16 // You should have received a copy of the GNU Lesser General Public
17 // License along with this library; if not, write to the Free Software
18 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
22 // File : SMESHGUI_Hypotheses.cxx
23 // Author : Julia DOROVSKIKH, Open CASCADE S.A.S.
26 #include "SMESHGUI_Hypotheses.h"
29 #include "SMESHGUI_HypothesesUtils.h"
30 #include "SMESHGUI_Utils.h"
31 #include "SMESHGUI_SpinBox.h"
32 #include "SMESHGUI_VTKUtils.h"
33 #include "SMESH_Actor.h"
35 // SALOME KERNEL includes
36 #include <SALOMEDSClient_Study.hxx>
37 #include <utilities.h>
39 // SALOME GUI includes
40 #include <LightApp_Application.h>
41 #include <SUIT_MessageBox.h>
42 #include <SUIT_OverrideCursor.h>
43 #include <SUIT_ResourceMgr.h>
44 #include <SUIT_Session.h>
45 #include <SalomeApp_IntSpinBox.h>
46 #include <SalomeApp_Tools.h>
47 #include <SVTK_ViewWindow.h>
54 #include <QVBoxLayout>
59 SMESHGUI_GenericHypothesisCreator::SMESHGUI_GenericHypothesisCreator( const QString& theHypType )
60 : myToDeleteInitParamsHypo( false ),
61 myHypType( theHypType ),
67 SMESHGUI_GenericHypothesisCreator::~SMESHGUI_GenericHypothesisCreator()
69 if ( myToDeleteInitParamsHypo && !myInitParamsHypo->_is_nil() )
70 myInitParamsHypo->UnRegister();
73 void SMESHGUI_GenericHypothesisCreator::setInitParamsHypothesis(SMESH::SMESH_Hypothesis_ptr hyp)
75 if ( !CORBA::is_nil( hyp ) ) {
76 if ( myToDeleteInitParamsHypo && !myInitParamsHypo->_is_nil() )
77 myInitParamsHypo->UnRegister();
78 CORBA::String_var hypName = hyp->GetName();
79 if ( hypType() == hypName.in() )
81 myInitParamsHypo = SMESH::SMESH_Hypothesis::_duplicate( hyp );
82 myToDeleteInitParamsHypo = !SMESH::FindSObject( myInitParamsHypo );
87 void SMESHGUI_GenericHypothesisCreator::create( SMESH::SMESH_Hypothesis_ptr initParamsHyp,
88 const QString& theHypName,
89 QWidget* parent, QObject* obj, const QString& slot )
91 setInitParamsHypothesis( initParamsHyp );
92 create( false, theHypName, parent, obj, slot );
95 void SMESHGUI_GenericHypothesisCreator::create( bool isAlgo,
96 const QString& theHypName,
103 // Create hypothesis/algorithm
105 SMESH::SMESH_Hypothesis_var anAlgo =
106 SMESH::CreateHypothesis( hypType(), theHypName, isAlgo );
107 anAlgo.out(); // avoid unused variable warning
110 SMESH::SMESH_Hypothesis_var aHypothesis =
111 SMESH::CreateHypothesis( hypType(), theHypName, false );
112 editHypothesis( aHypothesis.in(), theHypName, theParent, obj, slot );
116 void SMESHGUI_GenericHypothesisCreator::edit( SMESH::SMESH_Hypothesis_ptr theHypothesis,
117 const QString& theHypName,
118 QWidget* theParent, QObject* obj, const QString& slot )
120 if( CORBA::is_nil( theHypothesis ) )
125 editHypothesis( theHypothesis, theHypName, theParent, obj, slot );
128 void SMESHGUI_GenericHypothesisCreator::editHypothesis( SMESH::SMESH_Hypothesis_ptr h,
129 const QString& theHypName,
131 QObject* obj, const QString& slot )
133 myHypName = theHypName;
134 myHypo = SMESH::SMESH_Hypothesis::_duplicate( h );
137 SMESHGUI_HypothesisDlg* Dlg = new SMESHGUI_HypothesisDlg( this, theParent );
138 connect( Dlg, SIGNAL( finished( int ) ), this, SLOT( onDialogFinished( int ) ) );
139 connect( this, SIGNAL( finished( int ) ), obj, slot.toLatin1().constData() );
140 connect( SMESHGUI::GetSMESHGUI(), SIGNAL( SignalCloseAllDialogs() ), Dlg, SLOT( reject() ));
143 QFrame* fr = buildFrame();
146 Dlg->setCustomFrame( fr );
147 Dlg->setWindowTitle( caption() );
148 Dlg->setObjectName( theHypName );
149 Dlg->setHIcon( icon() );
150 Dlg->setType( type() );
153 Dlg->resize( Dlg->minimumSizeHint() );
156 emit finished( QDialog::Accepted );
161 QFrame* SMESHGUI_GenericHypothesisCreator::buildStdFrame()
163 if( CORBA::is_nil( hypothesis() ) )
166 ListOfStdParams params;
167 if( !stdParams( params ) || params.isEmpty() )
170 QFrame* fr = new QFrame( 0 );
171 QVBoxLayout* lay = new QVBoxLayout( fr );
173 lay->setSpacing( 0 );
175 QGroupBox* GroupC1 = new QGroupBox( tr( "SMESH_ARGUMENTS" ), fr );
176 lay->addWidget( GroupC1 );
178 QGridLayout* GroupC1Layout = new QGridLayout( GroupC1 );
179 GroupC1Layout->setSpacing( SPACING );
180 GroupC1Layout->setMargin( MARGIN );
182 ListOfStdParams::const_iterator anIt = params.begin(), aLast = params.end();
183 for( int i = 0; anIt != aLast; anIt++, i++ )
185 QLabel* lab = anIt->hasName() ? new QLabel( anIt->myName, GroupC1 ) : NULL;
187 GroupC1Layout->addWidget( lab, i, 0 );
188 myParamLabels << lab;
190 QWidget* w = getCustomWidget( *anIt, GroupC1, i );
192 switch( (*anIt).myValue.type() )
196 SalomeApp_IntSpinBox* sb = new SalomeApp_IntSpinBox( GroupC1 );
197 sb->setObjectName( (*anIt).myName );
198 attuneStdWidget( sb, i );
199 sb->setValue( (*anIt).myValue.toInt() );
200 connect( sb, SIGNAL( valueChanged( int ) ), this, SLOT( onValueChanged() ) );
204 case QVariant::Double:
206 SalomeApp_DoubleSpinBox* sb = new SMESHGUI_SpinBox( GroupC1 );
207 sb->setObjectName( (*anIt).myName );
208 attuneStdWidget( sb, i );
209 sb->setValue( (*anIt).myValue.toDouble() );
210 connect( sb, SIGNAL( valueChanged( double ) ), this, SLOT( onValueChanged() ) );
214 case QVariant::String:
216 if((*anIt).isVariable) {
217 _PTR(Study) aStudy = SMESH::getStudy();
218 QString aVar = (*anIt).myValue.toString();
219 if(aStudy->IsInteger(aVar.toLatin1().constData())){
220 SalomeApp_IntSpinBox* sb = new SalomeApp_IntSpinBox( GroupC1 );
221 sb->setObjectName( (*anIt).myName );
222 attuneStdWidget( sb, i );
224 connect( sb, SIGNAL( valueChanged( int ) ), this, SLOT( onValueChanged() ) );
227 else if(aStudy->IsReal(aVar.toLatin1().constData())){
228 SalomeApp_DoubleSpinBox* sb = new SMESHGUI_SpinBox( GroupC1 );
229 sb->setObjectName( (*anIt).myName );
230 attuneStdWidget( sb, i );
232 connect( sb, SIGNAL( valueChanged( double ) ), this, SLOT( onValueChanged() ) );
237 QLineEdit* le = new QLineEdit( GroupC1 );
238 le->setObjectName( (*anIt).myName );
239 attuneStdWidget( le, i );
240 le->setText( (*anIt).myValue.toString() );
241 connect( le, SIGNAL( textChanged( const QString& ) ), this, SLOT( onValueChanged() ) );
248 } // switch( (*anIt).myValue.type() )
253 GroupC1Layout->addWidget( w, i, 1 );
255 GroupC1Layout->addWidget( w, i, 0, 1, 2 );
256 changeWidgets().append( w );
259 if ( QWidget* w = getHelperWidget() )
262 w->move( QPoint( 0, 0 ) );
269 void SMESHGUI_GenericHypothesisCreator::onValueChanged()
271 valueChanged( (QWidget*) sender() );
274 void SMESHGUI_GenericHypothesisCreator::valueChanged( QWidget* )
278 void SMESHGUI_GenericHypothesisCreator::onDialogFinished( int result )
280 bool res = result==QDialog::Accepted;
285 SUIT_OverrideCursor wc;
287 // No longer needed since NoteBook appears and "Value" OB field shows names of variable
288 // QString paramValues = storeParams();
289 // if ( !paramValues.isEmpty() ) {
290 // if ( _PTR(SObject) SHyp = SMESH::FindSObject( myHypo ))
291 // SMESH::SetValue( SHyp, paramValues );
294 catch ( const SALOME::SALOME_Exception& S_ex ) {
295 SalomeApp_Tools::QtCatchCorbaException( S_ex );
299 changeWidgets().clear();
301 if( myIsCreate && !res )
303 //remove just created hypothesis
304 _PTR(SObject) aHypSObject = SMESH::FindSObject( myHypo );
305 _PTR(Study) aStudy = SMESH::getStudy();
306 if( aStudy && !aStudy->GetProperties()->IsLocked() )
308 _PTR(StudyBuilder) aBuilder = aStudy->NewBuilder();
309 aBuilder->RemoveObjectWithChildren( aHypSObject );
312 else if( !myIsCreate && res )
314 SMESH::SObjectList listSOmesh = SMESH::GetMeshesUsingAlgoOrHypothesis( myHypo );
315 if( listSOmesh.size() > 0 )
316 for( size_t i = 0; i < listSOmesh.size(); i++ )
318 _PTR(SObject) submSO = listSOmesh[i];
319 SMESH::SMESH_Mesh_var aMesh = SMESH::SObjectToInterface<SMESH::SMESH_Mesh>( submSO );
320 SMESH::SMESH_subMesh_var aSubMesh = SMESH::SObjectToInterface<SMESH::SMESH_subMesh>( submSO );
321 if( !aSubMesh->_is_nil() )
322 aMesh = aSubMesh->GetFather();
323 _PTR(SObject) meshSO = SMESH::FindSObject( aMesh );
324 SMESH_Actor* actor = SMESH::FindActorByEntry( meshSO->GetID().c_str() );
325 if( actor && actor->GetVisibility() )
329 SMESHGUI::GetSMESHGUI()->updateObjBrowser( true, 0 );
330 myHypo->UnRegister();
331 myHypo = SMESH::SMESH_Hypothesis::_nil();
332 myInitParamsHypo = SMESH::SMESH_Hypothesis::_nil();
334 disconnect( myDlg, SIGNAL( finished( int ) ), this, SLOT( onDialogFinished( int ) ) );
336 //delete myDlg; since WA_DeleteOnClose==true
338 if (SVTK_ViewWindow* vf = SMESH::GetCurrentVtkView()) {
341 emit finished( result );
344 bool SMESHGUI_GenericHypothesisCreator::stdParams( ListOfStdParams& ) const
349 bool SMESHGUI_GenericHypothesisCreator::getStdParamFromDlg( ListOfStdParams& params ) const
353 ListOfWidgets::const_iterator anIt = widgets().begin(), aLast = widgets().end();
354 for( ; anIt!=aLast; anIt++ )
356 item.myName = (*anIt)->objectName();
357 if( (*anIt)->inherits( "SalomeApp_IntSpinBox" ) )
359 SalomeApp_IntSpinBox* sb = ( SalomeApp_IntSpinBox* )( *anIt );
360 item.myValue = sb->value();
361 item.myText = sb->text();
362 params.append( item );
364 else if( (*anIt)->inherits( "SalomeApp_DoubleSpinBox" ) )
366 SalomeApp_DoubleSpinBox* sb = ( SalomeApp_DoubleSpinBox* )( *anIt );
367 item.myValue = sb->value();
368 item.myText = sb->text();
369 params.append( item );
371 else if( (*anIt)->inherits( "QLineEdit" ) )
373 QLineEdit* line = ( QLineEdit* )( *anIt );
374 item.myValue = item.myText = line->text();
375 params.append( item );
377 else if ( getParamFromCustomWidget( item, *anIt ))
379 params.append( item );
387 QString SMESHGUI_GenericHypothesisCreator::getVariableName(const char* methodName) const
389 SMESH::SMESH_Hypothesis_var h = hypothesis();
392 CORBA::String_var aVaribaleName = h->GetVarParameter( methodName );
393 return QString( aVaribaleName.in() );
398 QStringList SMESHGUI_GenericHypothesisCreator::getVariablesFromDlg() const
401 ListOfWidgets::const_iterator anIt = widgets().begin(), aLast = widgets().end();
402 for( ; anIt!=aLast; anIt++ ) {
403 if( (*anIt)->inherits( "QAbstractSpinBox" ) ) {
404 QAbstractSpinBox* sb = ( QAbstractSpinBox* )( *anIt );
405 aResult.append(sb->text());
411 QString SMESHGUI_GenericHypothesisCreator::stdParamValues( const ListOfStdParams& params)
413 QString valueStr = "";
414 ListOfStdParams::const_iterator param = params.begin(), aLast = params.end();
416 for ( ; param != aLast; param++ )
418 if ( valueStr.length() > len0 ) {
420 len0 = valueStr.length();
422 switch( (*param).myValue.type() )
425 valueStr += valueStr.number( (*param).myValue.toInt() );
427 case QVariant::Double:
428 valueStr += valueStr.number( (*param).myValue.toDouble() );
430 case QVariant::String:
431 valueStr += (*param).myValue.toString();
434 QVariant valCopy = (*param).myValue;
435 valueStr += valCopy.toString();
441 SMESH::SMESH_Hypothesis_var SMESHGUI_GenericHypothesisCreator::hypothesis() const
446 void SMESHGUI_GenericHypothesisCreator::setShapeEntry( const QString& theEntry )
448 myShapeEntry = theEntry;
451 //================================================================================
453 * \brief Return hypothesis containing initial parameters
454 * \param strictly - if true, always return myInitParamsHypo,
455 * else, return myInitParamsHypo only in creation mode and if it
458 //================================================================================
460 SMESH::SMESH_Hypothesis_var SMESHGUI_GenericHypothesisCreator::initParamsHypothesis(const bool strictly) const
463 return myInitParamsHypo;
464 if ( !isCreation() || CORBA::is_nil( myInitParamsHypo ))
466 return myInitParamsHypo;
469 bool SMESHGUI_GenericHypothesisCreator::hasInitParamsHypothesis() const
471 return !CORBA::is_nil( myInitParamsHypo );
474 QString SMESHGUI_GenericHypothesisCreator::hypType() const
479 QString SMESHGUI_GenericHypothesisCreator::hypName() const
484 const SMESHGUI_GenericHypothesisCreator::ListOfWidgets& SMESHGUI_GenericHypothesisCreator::widgets() const
486 return myParamWidgets;
489 SMESHGUI_GenericHypothesisCreator::ListOfWidgets& SMESHGUI_GenericHypothesisCreator::changeWidgets()
491 return myParamWidgets;
494 //================================================================================
496 * \brief Returns a QLabel of a specified parameter.
497 * If isCreation(), the 1st label (supposed to be "Name") is not countered.
499 //================================================================================
501 QLabel* SMESHGUI_GenericHypothesisCreator::getLabel(int i) const
505 if ( i < myParamLabels.size() )
506 return (QLabel*) myParamLabels.at(i);
510 QtxDialog* SMESHGUI_GenericHypothesisCreator:: dlg() const
515 bool SMESHGUI_GenericHypothesisCreator::isCreation() const
520 void SMESHGUI_GenericHypothesisCreator::attuneStdWidget( QWidget*, const int ) const
524 QString SMESHGUI_GenericHypothesisCreator::caption() const
529 QPixmap SMESHGUI_GenericHypothesisCreator::icon() const
534 QString SMESHGUI_GenericHypothesisCreator::type() const
538 QWidget* SMESHGUI_GenericHypothesisCreator::getCustomWidget( const StdParam & /*param*/,
540 const int /*index*/) const
544 //================================================================================
546 * \brief Returns a widget representing not a hypothesis parameter but some helper widget
548 //================================================================================
550 QWidget* SMESHGUI_GenericHypothesisCreator::getHelperWidget() const
555 bool SMESHGUI_GenericHypothesisCreator::getParamFromCustomWidget( StdParam&, QWidget* ) const
560 bool SMESHGUI_GenericHypothesisCreator::checkParams( QString& msg ) const
563 ListOfWidgets::const_iterator anIt = widgets().begin(), aLast = widgets().end();
564 for( ; anIt!=aLast; anIt++ )
566 if( (*anIt)->inherits( "SalomeApp_IntSpinBox" ) )
568 SalomeApp_IntSpinBox* sb = ( SalomeApp_IntSpinBox* )( *anIt );
569 ok = sb->isValid( msg, true ) && ok;
571 else if( (*anIt)->inherits( "SalomeApp_DoubleSpinBox" ) )
573 SalomeApp_DoubleSpinBox* sb = ( SalomeApp_DoubleSpinBox* )( *anIt );
574 ok = sb->isValid( msg, true ) && ok;
580 void SMESHGUI_GenericHypothesisCreator::onReject()
584 QString SMESHGUI_GenericHypothesisCreator::helpPage() const
586 QString aHypType = hypType();
587 QString aHelpFileName = "";
588 if ( aHypType == "LocalLength" )
589 aHelpFileName = "1d_meshing_hypo.html#average-length-anchor";
590 else if ( aHypType == "MaxLength" )
591 aHelpFileName = "1d_meshing_hypo.html#max-length-anchor";
592 else if ( aHypType == "Arithmetic1D")
593 aHelpFileName = "1d_meshing_hypo.html#arithmetic-1d-anchor";
594 else if ( aHypType == "GeometricProgression")
595 aHelpFileName = "1d_meshing_hypo.html#geometric-1d-anchor";
596 else if ( aHypType == "FixedPoints1D")
597 aHelpFileName = "1d_meshing_hypo.html#fixed-points-1d-anchor";
598 else if ( aHypType == "MaxElementArea")
599 aHelpFileName = "2d_meshing_hypo.html#max-element-area-anchor";
600 else if ( aHypType == "MaxElementVolume")
601 aHelpFileName = "max_element_volume_hypo.html";
602 else if ( aHypType == "StartEndLength")
603 aHelpFileName = "1d_meshing_hypo.html#start-and-end-length-anchor";
604 else if ( aHypType == "Deflection1D")
605 aHelpFileName = "1d_meshing_hypo.html#deflection-1d-anchor";
606 else if ( aHypType == "Adaptive1D")
607 aHelpFileName = "1d_meshing_hypo.html#adaptive-1d-anchor";
608 else if ( aHypType == "AutomaticLength")
609 aHelpFileName = "1d_meshing_hypo.html#automatic-length-anchor";
610 else if ( aHypType == "NumberOfSegments")
611 aHelpFileName = "1d_meshing_hypo.html#number-of-segments-anchor";
612 else if ( aHypType == "ProjectionSource1D")
613 aHelpFileName = "projection_algos.html";
614 else if ( aHypType == "ProjectionSource2D")
615 aHelpFileName = "projection_algos.html";
616 else if ( aHypType == "ProjectionSource3D")
617 aHelpFileName = "projection_algos.html";
618 else if ( aHypType == "NumberOfLayers")
619 aHelpFileName = "radial_prism_algo.html";
620 else if ( aHypType == "NumberOfLayers2D")
621 aHelpFileName = "radial_quadrangle_1D2D_algo.html";
622 else if ( aHypType == "LayerDistribution")
623 aHelpFileName = "radial_prism_algo.html";
624 else if ( aHypType == "LayerDistribution2D")
625 aHelpFileName = "radial_quadrangle_1D2D_algo.html";
626 else if ( aHypType == "SegmentLengthAroundVertex")
627 aHelpFileName = "segments_around_vertex_algo.html";
628 else if ( aHypType == "QuadrangleParams")
629 aHelpFileName = "2d_meshing_hypo.html#hypo-quad-params-anchor";
630 else if ( aHypType == "ViscousLayers")
631 aHelpFileName = "additional_hypo.html#viscous-layers-anchor";
632 else if ( aHypType == "ViscousLayers2D")
633 aHelpFileName = "additional_hypo.html#viscous-layers-anchor";
634 else if ( aHypType == "ImportSource1D" || aHypType == "ImportSource2D")
635 aHelpFileName = "use_existing_algos.html";
636 return aHelpFileName;
639 SMESHGUI_HypothesisDlg::SMESHGUI_HypothesisDlg( SMESHGUI_GenericHypothesisCreator* creator, QWidget* parent )
640 : QtxDialog( parent, false, true ),
643 setAttribute(Qt::WA_DeleteOnClose, true);
644 // setMinimumSize( 300, height() );
645 // setFixedSize( 300, height() );
646 QVBoxLayout* topLayout = new QVBoxLayout( mainFrame() );
647 topLayout->setMargin( 0 );
648 topLayout->setSpacing( 0 );
650 QFrame* titFrame = new QFrame( mainFrame() );
651 QHBoxLayout* titLay = new QHBoxLayout( titFrame );
652 titLay->setMargin( 0 );
653 titLay->setSpacing( SPACING );
655 myIconLabel = new QLabel( titFrame );
656 myIconLabel->setScaledContents( false );
657 myIconLabel->setSizePolicy( QSizePolicy( QSizePolicy::Fixed, QSizePolicy::Fixed ) );
658 myTypeLabel = new QLabel( titFrame );
660 myTypeLabel->setText( creator->hypType() );
662 titLay->addWidget( myIconLabel, 0 );
663 titLay->addWidget( myTypeLabel, 0 );
664 titLay->addStretch( 1 );
666 topLayout->addWidget( titFrame, 0 );
668 myHelpFileName = creator->helpPage();
670 connect( this, SIGNAL( dlgHelp() ), this, SLOT( onHelp() ) );
673 SMESHGUI_HypothesisDlg::~SMESHGUI_HypothesisDlg()
678 void SMESHGUI_HypothesisDlg::setCustomFrame( QFrame* f )
682 f->setParent( mainFrame() );
683 qobject_cast<QVBoxLayout*>( mainFrame()->layout() )->insertWidget( 1, f, 1 );
687 void SMESHGUI_HypothesisDlg::accept()
689 SUIT_OverrideCursor wc; // some creators temporary set params to a hyp which can be long
691 if ( myCreator && !myCreator->checkParams( msg ) )
693 QString str( tr( "SMESH_INCORRECT_INPUT" ) );
694 if ( !msg.isEmpty() )
696 SUIT_MessageBox::critical( this, tr( "SMESH_ERROR" ), str );
702 void SMESHGUI_HypothesisDlg::reject()
704 if ( myCreator ) myCreator->onReject();
708 void SMESHGUI_HypothesisDlg::onHelp()
710 LightApp_Application* app = (LightApp_Application*)(SUIT_Session::session()->activeApplication());
712 QString name = "SMESH";
714 QVariant pluginName = myCreator->property( SMESH::Plugin_Name() );
715 if( pluginName.isValid() ) {
716 QString rootDir = pluginName.toString() + "PLUGIN_ROOT_DIR";
717 QString varValue = QString( getenv(rootDir.toLatin1().constData()));
718 if(!varValue.isEmpty())
719 name = pluginName.toString() + "PLUGIN";
722 app->onHelpContextModule(name, myHelpFileName);
727 platform = "winapplication";
729 platform = "application";
731 SUIT_MessageBox::warning(this, tr("WRN_WARNING"),
732 tr("EXTERNAL_BROWSER_CANNOT_SHOW_PAGE").
733 arg(app->resourceMgr()->stringValue("ExternalBrowser",
735 arg(myHelpFileName));
739 void SMESHGUI_HypothesisDlg::setHIcon( const QPixmap& p )
741 myIconLabel->setPixmap( p );
744 void SMESHGUI_HypothesisDlg::setType( const QString& t )
746 myTypeLabel->setText( t );
749 HypothesisData::HypothesisData( const QString& theTypeName,
750 const QString& thePluginName,
751 const QString& theServerLibName,
752 const QString& theClientLibName,
753 const QString& theLabel,
754 const QString& theIconId,
755 const QString& theContext,
756 const int theGroupID,
757 const int thePriority,
758 const QList<int>& theDim,
759 const bool theIsAuxOrNeedHyp,
760 const QStringList& theBasicHypos,
761 const QStringList& theOptionalHypos,
762 const QStringList& theInputTypes,
763 const QStringList& theOutputTypes,
764 const int theIsNeedGeometry,
765 const bool theSupportSub)
766 : TypeName( theTypeName ),
767 PluginName( thePluginName ),
768 ServerLibName( theServerLibName ),
769 ClientLibName( theClientLibName ),
772 Context( theContext ),
773 GroupID( theGroupID ),
774 Priority( thePriority ),
776 IsAuxOrNeedHyp( theIsAuxOrNeedHyp ),
777 IsNeedGeometry( theIsNeedGeometry ),
778 IsSupportSubmeshes( theSupportSub ),
779 BasicHypos( theBasicHypos ),
780 OptionalHypos( theOptionalHypos ),
781 InputTypes( theInputTypes ),
782 OutputTypes( theOutputTypes )
786 HypothesesSet::HypothesesSet( const QString& theSetName )
787 : myHypoSetName( theSetName ),
793 HypothesesSet::HypothesesSet( const QString& theSetName,
794 const QStringList& theHypoList,
795 const QStringList& theAlgoList )
796 : myHypoSetName( theSetName ),
797 myHypoList( theHypoList ),
798 myAlgoList( theAlgoList ),
804 QStringList* HypothesesSet::list(bool is_algo) const
806 return const_cast<QStringList*>( &( is_algo ? myAlgoList : myHypoList ) );
809 QStringList* HypothesesSet::list() const
811 return list( myIsAlgo );
814 QString HypothesesSet::name() const
816 return myHypoSetName;
819 void HypothesesSet::set( bool isAlgo, const QStringList& lst )
824 int HypothesesSet::count( bool isAlgo ) const
826 return list(isAlgo)->count();
829 bool HypothesesSet::isAlgo() const
834 void HypothesesSet::init( bool isAlgo )
840 bool HypothesesSet::more() const
842 return myIndex < list()->count();
845 void HypothesesSet::next()
850 QString HypothesesSet::current() const
852 return list()->at(myIndex);
855 void HypothesesSet::setIsCustom( bool isCustom )
857 myIsCustom = isCustom;
860 bool HypothesesSet::getIsCustom() const
865 int HypothesesSet::maxDim() const
867 HypothesesSet * thisSet = (HypothesesSet*) this;
869 for ( int isAlgo = 0; isAlgo < 2; ++isAlgo )
871 for ( thisSet->init( isAlgo ); thisSet->more(); thisSet->next() )
872 if ( HypothesisData* hypData = SMESH::GetHypothesisData( thisSet->current() ))
873 for ( int i = 0; i < hypData->Dim.count(); ++i )
874 dim = qMax( dim, hypData->Dim[i] );