//
//
//
-// File : SMESHGUI_AddSubMeshDlg.cxx
+// File : SMESHGUI_AddSubMeshOp.cxx
// Author : Nicolas REJNERI
// Module : SMESH
// $Header$
// purpose :
//=================================================================================
SMESHGUI_AddSubMeshOp::SMESHGUI_AddSubMeshOp()
-: SMESHGUI_Operation(),
- myDlg( 0 ),
- myMeshFilter( 0 ),
- myGeomFilter( 0 ),
- myHypothesisFilter( 0 ),
- myAlgorithmFilter( 0 )
+: SMESHGUI_SelectionOp(),
+ myDlg( 0 )
{
setAutoResumed( true );
}
{
if( myDlg )
delete myDlg;
-
- if( myMeshFilter )
- delete myMeshFilter;
-
- if( myGeomFilter )
- delete myGeomFilter;
-
- if( myAlgorithmFilter )
- delete myAlgorithmFilter;
-
- if( myHypothesisFilter )
- delete myHypothesisFilter;
}
//=================================================================================
{
if( !myDlg )
{
- myDlg = new SMESHGUI_AddSubMeshDlg( getSMESHGUI() );
- connect( myDlg, SIGNAL( objectActivated( int ) ), this, SLOT( onActivateObject( int ) ) );
- connect( myDlg, SIGNAL( selectionChanged( int ) ), this, SLOT( onSelectionChanged( int ) ) );
- }
-
- SMESHGUI_Operation::startOperation();
-
- if( !myGeomFilter )
- {
- TColStd_MapOfInteger allTypesMap;
- for (int i = 0; i < 10; i++)
- allTypesMap.Add(i);
- myGeomFilter = new SMESH_NumberFilter ("GEOM", TopAbs_SHAPE, 0, allTypesMap);
+ myDlg = new SMESHGUI_AddSubMeshDlg();
+ connect( myDlg, SIGNAL( nameChanged( const QString& ) ), this, SLOT( onNameChanged( const QString& ) ) );
}
- if( !myMeshFilter )
- myMeshFilter = new SMESH_TypeFilter (MESH);
-
- if( !myAlgorithmFilter )
- myAlgorithmFilter = new SMESH_TypeFilter (ALGORITHM);
+ SMESHGUI_SelectionOp::startOperation();
- if( !myHypothesisFilter )
- myHypothesisFilter = new SMESH_TypeFilter (HYPOTHESIS);
-
- init();
myDlg->show();
}
//=================================================================================
void SMESHGUI_AddSubMeshOp::selectionDone()
{
- QStringList names, ids;
- SMESHGUI_Dialog::TypesList types;
- selected( names, types, ids );
+ SMESHGUI_SelectionOp::selectionDone();
if( myDlg )
- {
- myDlg->selectObject( names, types, ids );
- myDlg->updateControlState( isValid() );
- }
+ updateDialog();
}
//=================================================================================
-// function : onActivateObject
+// function : createFilter
// purpose :
//=================================================================================
-void SMESHGUI_AddSubMeshOp::onActivateObject( int obj )
+SUIT_SelectionFilter* SMESHGUI_AddSubMeshOp::createFilter( const int id ) const
{
- SalomeApp_SelectionMgr* mgr = selectionMgr();
+ if( id==SMESHGUI_AddSubMeshDlg::GeomObj )
+ {
+ TColStd_MapOfInteger allTypesMap;
+ for (int i = 0; i < 10; i++)
+ allTypesMap.Add(i);
+ return new SMESH_NumberFilter ("GEOM", TopAbs_SHAPE, 0, allTypesMap);
+ }
- if( !mgr )
- return;
-
- mgr->clearFilters();
+ if( id==SMESHGUI_AddSubMeshDlg::MeshObj )
+ return new SMESH_TypeFilter (MESH);
- if( obj==SMESHGUI_AddSubMeshDlg::MeshObj )
- mgr->installFilter( myMeshFilter );
+ else if( id==SMESHGUI_AddSubMeshDlg::Algo )
+ return new SMESH_TypeFilter (ALGORITHM);
- else if( obj==SMESHGUI_AddSubMeshDlg::GeomObj )
- mgr->installFilter( myGeomFilter );
-
- else if( obj==SMESHGUI_AddSubMeshDlg::Hypo )
- mgr->installFilter( myHypothesisFilter );
+ else if( id==SMESHGUI_AddSubMeshDlg::Hypo )
+ return new SMESH_TypeFilter (HYPOTHESIS);
- else if( obj==SMESHGUI_AddSubMeshDlg::Algo )
- mgr->installFilter( myAlgorithmFilter );
+ else
+ return 0;
}
//=================================================================================
}
update( UF_Model | UF_ObjBrowser );
- init();
+ initDialog();
return (nbSuccess > 0);
}
//=================================================================================
-// function : init()
+// function : initDialog()
// purpose :
//=================================================================================
-void SMESHGUI_AddSubMeshOp::init()
+void SMESHGUI_AddSubMeshOp::initDialog()
{
+ SMESHGUI_SelectionOp::initDialog();
if( myDlg )
- {
- myDlg->init();
- myDlg->updateControlState( false );
+ {
+ myDlg->setSubMeshName( tr( "SMESH_SUBMESH" ) );
+ updateDialog();
}
}
-//=================================================================================
-// function : isValid()
-// purpose :
-//=================================================================================
-bool SMESHGUI_AddSubMeshOp::isValid() const
-{
- bool isEnabled = !myDlg->subMeshName().isEmpty() &&
- myDlg->hasSelection( SMESHGUI_AddSubMeshDlg::MeshObj ) &&
- myDlg->hasSelection( SMESHGUI_AddSubMeshDlg::GeomObj ) &&
- myDlg->hasSelection( SMESHGUI_AddSubMeshDlg::Hypo ) &&
- myDlg->hasSelection( SMESHGUI_AddSubMeshDlg::Algo );
-
- bool isImportedMesh = false;
-
- QStringList selMesh;
- myDlg->selectedObject( SMESHGUI_AddSubMeshDlg::MeshObj, selMesh );
- _PTR(SObject) SO = studyDS()->FindObjectID( selMesh.first() );
- GEOM::GEOM_Object_var myGeomShape = SMESH::GetShapeOnMeshOrSubMesh(SO);
- isImportedMesh = myGeomShape->_is_nil();
-
- return isEnabled && !isImportedMesh;
-}
-
//=================================================================================
// function : IsFatherOf()
// purpose :
}
//=================================================================================
-// function : onSelectionChanged()
+// function : addSubMesh()
// purpose :
//=================================================================================
SMESH::SMESH_subMesh_var SMESHGUI_AddSubMeshOp::addSubMesh( SMESH::SMESH_Mesh_ptr theMesh,
return aSubMesh._retn();
}
+//=================================================================================
+// function : updateDialog()
+// purpose :
+//=================================================================================
+void SMESHGUI_AddSubMeshOp::updateDialog()
+{
+ if( !myDlg )
+ return;
+
+ bool isEnabled = !myDlg->subMeshName().isEmpty() &&
+ myDlg->hasSelection( SMESHGUI_AddSubMeshDlg::MeshObj ) &&
+ myDlg->hasSelection( SMESHGUI_AddSubMeshDlg::GeomObj ) &&
+ myDlg->hasSelection( SMESHGUI_AddSubMeshDlg::Hypo ) &&
+ myDlg->hasSelection( SMESHGUI_AddSubMeshDlg::Algo );
+
+ bool isImportedMesh = false;
+
+ QStringList selMesh;
+ myDlg->selectedObject( SMESHGUI_AddSubMeshDlg::MeshObj, selMesh );
+ _PTR(SObject) SO = studyDS()->FindObjectID( selMesh.first() );
+ GEOM::GEOM_Object_var myGeomShape = SMESH::GetShapeOnMeshOrSubMesh(SO);
+ isImportedMesh = myGeomShape->_is_nil();
+
+ isEnabled = isEnabled && !isImportedMesh;
+
+ myDlg->setButtonEnabled( isEnabled, QtxDialog::OK | QtxDialog::Apply );
+}
+
+//=================================================================================
+// function : onNameChanged()
+// purpose :
+//=================================================================================
+void SMESHGUI_AddSubMeshOp::onNameChanged( const QString& )
+{
+ updateDialog();
+}
+
//=================================================================================
// function : isValid
// purpose :
//=================================================================================
bool SMESHGUI_AddSubMeshOp::isValid( SUIT_Operation* theOtherOp ) const
{
- if ( theOtherOp && theOtherOp->inherits( "SMESHGUI_InitMeshOp" ) )
+ //if ( theOtherOp && theOtherOp->inherits( "SMESHGUI_InitMeshOp" ) )
return true;
- else
- return false;
-
+ /*else
+ return false;*/
}