#include <SVTK_ViewWindow.h>
#include <SVTK_ViewModel.h>
+#include <VTKViewer_ViewManager.h>
+
#include "SMESHGUI_Utils.h"
#include "SMESHGUI_GEOMGenUtils.h"
#include "SMESHGUI_MeshUtils.h"
QObject::tr("SMESH_BUT_OK"));
wc.resume();
}
+
+ SMESHGUI::GetSMESHGUI()->updateObjBrowser();
}
catch (const SALOME::SALOME_Exception& S_ex){
wc.suspend();
aStudyBuilder->CommitCommand();
/* Clear any previous selection */
- aSel->setSelectedObjects( SALOME_ListIO() );
+ SALOME_ListIO l1;
+ aSel->setSelectedObjects( l1 );
SMESHGUI::GetSMESHGUI()->updateObjBrowser();
}
}
-//=============================================================================
-/*!
- *
- */
-//=============================================================================
-class CustomItem : public QCustomMenuItem
-{
-public:
- CustomItem(const QString& s, const QFont& f) : myString(s), myFont(f) {}
- ~CustomItem() {}
-
- void paint(QPainter* p, const QColorGroup& cg, bool act, bool /*enabled*/, int x, int y, int w, int h)
- {
- p->save();
- p->fillRect( x, y, w, h, act ? cg.highlight() : cg.mid() );
- p->setPen( act ? cg.highlightedText() : cg.buttonText() );
- p->setFont( myFont );
- p->drawText( x, y, w, h, AlignHCenter | AlignVCenter | ShowPrefix | DontClip | SingleLine, myString );
- p->restore();
- }
-
- QSize sizeHint()
- {
- return QFontMetrics( myFont ).size( AlignHCenter | AlignVCenter | ShowPrefix | DontClip | SingleLine, myString );
- }
-
- bool fullSpan() const
- {
- return true;
- }
-
-private:
- QString myString;
- QFont myFont;
-};
-
extern "C" {
Standard_EXPORT CAM_Module* createModule()
{
- return SMESHGUI::GetSMESHGUI();
+ return new SMESHGUI();
}
}
*/
//=============================================================================
SMESHGUI::SMESHGUI() :
- SalomeApp_Module( "SMESH" )
+SalomeApp_Module( "SMESH" )
{
if ( CORBA::is_nil( myComponentSMESH ) )
{
myComponentSMESH = SMESH::SMESH_Gen::_narrow( comp );
}
+ myAutomaticUpdate = false;
myActiveDialogBox = 0 ;
myState = -1 ;
//=============================================================================
SMESHGUI* SMESHGUI::GetSMESHGUI()
{
- static SMESHGUI* aSMESHGUI = NULL;
- if( !aSMESHGUI )
- aSMESHGUI = new SMESHGUI();
-
- if(_PTR(Study) aStudy = SMESH::GetActiveStudyDocument())
- GetSMESHGen()->SetCurrentStudy( _CAST(Study,aStudy)->GetStudy() );
+ SMESHGUI* smeshMod = 0;
+ SalomeApp_Application* app = dynamic_cast<SalomeApp_Application*>(SUIT_Session::session()->activeApplication());
+ if ( app )
+ {
+ CAM_Module* module = app->module( "Mesh" );
+ smeshMod = dynamic_cast<SMESHGUI*>( module );
+ }
- SUIT_ResourceMgr* mgr = resourceMgr();
- if( mgr )
- /* Automatic Update flag */
- aSMESHGUI->myAutomaticUpdate = ( mgr->stringValue( "SMESH", "AutomaticUpdate" ).compare( "true" ) == 0 );
+ if ( smeshMod && smeshMod->application() && smeshMod->application()->activeStudy() )
+ {
+ SalomeApp_Study* study = dynamic_cast<SalomeApp_Study*>( smeshMod->application()->activeStudy() );
+ if ( study )
+ {
+ _PTR(Study) aStudy = study->studyDS();
+ if ( aStudy )
+ GetSMESHGen()->SetCurrentStudy( _CAST(Study,aStudy)->GetStudy() );
+ }
+ }
- return aSMESHGUI;
+ return smeshMod;
}
extern "C"
{
- Standard_EXPORT SMESHGUI* GetComponentGUI() {
+ Standard_EXPORT SMESHGUI* GetComponentGUI()
+ {
return SMESHGUI::GetSMESHGUI();
}
}
if( !mgr )
return false;
- SUIT_ViewManager* vm = application()->activeViewManager();
- if( !vm )
- return false;
-
- SUIT_ViewWindow* view =vm->getActiveView();
+ SUIT_ViewWindow* view = application()->desktop()->activeWindow();
SVTK_ViewWindow* vtkwnd = dynamic_cast<SVTK_ViewWindow*>( view );
QAction* act = action( theCommandID );
{
if(checkLock(aStudy)) break;
SMESH::UpdateView();
+
+ SALOME_ListIO l;
+ SalomeApp_SelectionMgr *aSel = SMESHGUI::selectionMgr();
+ aSel->setSelectedObjects( l );
break;
}
}
}
}
- aSel->setSelectedObjects( SALOME_ListIO() );
+ SALOME_ListIO l1;
+ aSel->setSelectedObjects( l1 );
break;
}
tr("SMESH_WRN_VIEWER_VTK"),
tr("SMESH_BUT_OK"));
}
+ updateObjBrowser();
break;
}
}
case 801: // CREATE GROUP
{
+ if ( !vtkwnd )
+ {
+ SUIT_MessageBox::warn1( desktop(), tr( "SMESH_WRN_WARNING" ),
+ tr( "NOT_A_VTK_VIEWER" ),tr( "SMESH_BUT_OK" ) );
+ break;
+ }
+
if(checkLock(aStudy)) break;
EmitSignalDeactivateDialog();
SMESH::SMESH_Mesh_var aMesh = SMESH::SMESH_Mesh::_nil();
case 802: // CONSTRUCT GROUP
{
+ if ( !vtkwnd )
+ {
+ SUIT_MessageBox::warn1( desktop(), tr( "SMESH_WRN_WARNING" ),
+ tr( "NOT_A_VTK_VIEWER" ),tr( "SMESH_BUT_OK" ) );
+ break;
+ }
+
if(checkLock(aStudy)) break;
EmitSignalDeactivateDialog();
mgr->setValue( "SMESH", "SettingsElementsSelectTol", aTolItems );
// update current study settings
- SMESH::UpdateSelectionProp();
+ SMESH::UpdateSelectionProp( this );
if( vtkwnd ) {
// update VTK viewer properties
}
}
}
+ updateObjBrowser( true );
break;
}
Handle(SALOME_InteractiveObject) IObject = It.Value();
SMESH::RemoveHypothesisOrAlgorithmOnMesh(IObject);
}
- aSel->setSelectedObjects( SALOME_ListIO() );
+ SALOME_ListIO l1;
+ aSel->setSelectedObjects( l1 );
updateObjBrowser();
break;
}
}
- updateObjBrowser();
+ //updateObjBrowser();
return true;
}
//=============================================================================
bool SMESHGUI::SetSettings(SUIT_Desktop* parent)
{
- MESSAGE("SMESHGUI::SetSettings.");
SMESHGUI::GetSMESHGUI();
SUIT_ResourceMgr* mgr = resourceMgr();
action( 10001 )->setOn( false );
action( 10003 )->setOn( true );
}
+
action( 10003 )->setOn( Shrink );
// Automatic Update
action( 10071 )->setOn( false );
// Selection
- SMESH::UpdateSelectionProp();
+ SMESH::UpdateSelectionProp( this );
// menus disable
- //action( 111 )->setEnabled( false ); // IMPORT DAT
+ action( 111 )->setEnabled( false ); // IMPORT DAT
+
+ //action( 112 )->setEnabled( false );
//parent->menuBar()->setItemEnabled(112, false); // IMPORT UNV
return true;
{
SalomeApp_Module::initialize( app );
+ SUIT_ResourceMgr* mgr = app->resourceMgr();
+ if ( mgr )
+ /* Automatic Update flag */
+ myAutomaticUpdate = mgr->booleanValue( "SMESH", "AutomaticUpdate", myAutomaticUpdate );
+
// ----- create actions --------------
createSMESHAction( 111, "DAT", "", (CTRL+Key_B) );
createSMESHAction( 6012, "TAPER", "ICON_TAPER" , 0, true );
createSMESHAction( 6013, "ASPECT", "ICON_ASPECT" , 0, true );
createSMESHAction( 6014, "MIN_ANG", "ICON_ANGLE" , 0, true );
- createSMESHAction( 6015, "WRAP", "ICON_WRAP" , 0, true );
+ createSMESHAction( 6015, "WARP", "ICON_WARP" , 0, true );
createSMESHAction( 6016, "SKEW", "ICON_SKEW", 0, true );
createSMESHAction( 6017, "ASPECT_3D", "ICON_ASPECT_3D", 0, true );
createSMESHAction( 6018, "LENGTH_2D", "ICON_LENGTH_2D", 0, true );
createSMESHAction( 401, "EDGE", "ICON_DLG_EDGE" );
createSMESHAction( 4021, "TRIANGLE", "ICON_DLG_TRIANGLE" );
createSMESHAction( 4022, "QUAD", "ICON_DLG_QUADRANGLE" );
+ createSMESHAction( 4023, "POLYGON", "ICON_DLG_POLYGON" );
createSMESHAction( 4031, "TETRA", "ICON_DLG_TETRAS" );
createSMESHAction( 4032, "HEXA", "ICON_DLG_HEXAS" );
- createSMESHAction( 4041, "NODES", "ICON_DLG_REM_NODE" );
- createSMESHAction( 4042, "ELEMENTS", "ICON_DLG_REM_ELEMENT" );
- createSMESHAction( 4051, "NODES", "ICON_DLG_RENUMBERING_NODES" );
- createSMESHAction( 4052, "ELEMENTS", "ICON_DLG_RENUMBERING_ELEMENTS" );
+ createSMESHAction( 4041, "REMOVE_NODES", "ICON_DLG_REM_NODE" );
+ createSMESHAction( 4042, "REMOVE_ELEMENTS", "ICON_DLG_REM_ELEMENT" );
+ createSMESHAction( 4051, "RENUM_NODES", "ICON_DLG_RENUMBERING_NODES" );
+ createSMESHAction( 4052, "RENUM_ELEMENTS", "ICON_DLG_RENUMBERING_ELEMENTS" );
createSMESHAction( 4061, "TRANS", "ICON_SMESH_TRANSLATION_VECTOR" );
createSMESHAction( 4062, "ROT", "ICON_DLG_ROTATION" );
createSMESHAction( 4063, "SYM", "ICON_SMESH_SYMMETRY_PLANE" );
createSMESHAction( 300, "ERASE" );
createSMESHAction( 301, "DISPLAY" );
createSMESHAction( 302, "DISPLAY_ONLY" );
+ createSMESHAction( 4033, "POLYHEDRON", "ICON_DLG_POLYHEDRON" );
// ----- create menu --------------
int fileId = createMenu( tr( "MEN_FILE" ), -1, 1 ),
createMenu( 401, addId, -1 );
createMenu( 4021, addId, -1 );
createMenu( 4022, addId, -1 );
+ createMenu( 4023, addId, -1 );
createMenu( 4031, addId, -1 );
createMenu( 4032, addId, -1 );
+ createMenu( 4033, addId, -1 );
createMenu( 4041, removeId, -1 );
createMenu( 4042, removeId, -1 );
createTool( 401, addRemTb );
createTool( 4021, addRemTb );
createTool( 4022, addRemTb );
+ createTool( 4023, addRemTb );
createTool( 4031, addRemTb );
createTool( 4032, addRemTb );
+ createTool( 4033, addRemTb );
createTool( separator(), addRemTb );
createTool( 4041, addRemTb );
createTool( 4042, addRemTb );
isNotEmpty("numberOfNodes <> 0"),
// has nodes, edges, etc in VISIBLE! actor
- hasNodes("(numberOfNodes > 0 && isVisible)"),
- hasElems("count( elemTypes ) > 0"),
- hasDifferentElems("count( elemTypes ) > 1"),
- hasEdges("{'Edge'} in elemTypes"),
- hasFaces("{'Face'} in elemTypes"),
- hasVolumes("{'Volume'} in elemTypes");
+ hasNodes("(numberOfNodes > 0 )"),//&& isVisible)"),
+ hasElems("(count( elemTypes ) > 0)"),
+ hasDifferentElems("(count( elemTypes ) > 1)"),
+ hasEdges("({'Edge'} in elemTypes)"),
+ hasFaces("({'Face'} in elemTypes)"),
+ hasVolumes("({'Volume'} in elemTypes)");
QString aSelCount = QString( "%1 = 1" ).arg( QtxPopupMgr::Selection::defSelCountParam() );
- QString aClient = QString( "%1client in {%2}" ).arg( QtxPopupMgr::Selection::defEquality() ).arg( View );
+ QString lc = QtxPopupMgr::Selection::defEquality();
+ QString aClient = QString( "%1client in {%2}" ).arg( lc ).arg( "'VTKViewer'" );
QString aType = QString( "%1type in {%2}" ).arg( QtxPopupMgr::Selection::defEquality() ).arg( mesh_group );
- QString aMeshInVTK = aClient + "&&" + aType + "&&" + aSelCount;
+ QString aMeshInVTK = aClient + "&&" + aType;// + "&&" + aSelCount;
//-------------------------------------------------
// Numbering
popupMgr()->setRule( action( 6014 ), aMeshInVtkHasFaces, true );
popupMgr()->setRule( action( 6014 ), "controlMode = 'eMinimumAngle'", false );
- popupMgr()->insert( action( 6015 ), anId, -1 ); // WRAP
+ popupMgr()->insert( action( 6015 ), anId, -1 ); // WARP
popupMgr()->setRule( action( 6015 ), aMeshInVtkHasFaces, true );
popupMgr()->setRule( action( 6015 ), "controlMode = 'eWarping'", false );
popupMgr()->setRule( action( 302 ), aRule + "&&" + isNotEmpty, true );
popupMgr()->insert( separator(), -1, -1 );
+
+ connect( application(), SIGNAL( viewManagerAdded( SUIT_ViewManager* ) ),
+ this, SLOT( onViewManagerAdded( SUIT_ViewManager* ) ) );
}
-void SMESHGUI::activateModule( SUIT_Study* study )
+bool SMESHGUI::activateModule( SUIT_Study* study )
{
- SalomeApp_Module::activateModule( study );
+ bool res = SalomeApp_Module::activateModule( study );
setMenuShown( true );
setToolShown( true );
+ SetSettings( desktop() );
- //SetSettings( desktop() );
+ return res;
}
-void SMESHGUI::deactivateModule( SUIT_Study* study )
+bool SMESHGUI::deactivateModule( SUIT_Study* study )
{
setMenuShown( false );
setToolShown( false );
EmitSignalCloseAllDialogs();
- SalomeApp_Module::deactivateModule( study );
+ return SalomeApp_Module::deactivateModule( study );
}
void SMESHGUI::OnGUIEvent()
SMESH::SMESH_Gen_var SMESHGUI::GetSMESHGen()
{
+ if ( CORBA::is_nil( myComponentSMESH ) )
+ {
+ SMESHGUI aGUI; //SRN BugID: IPAL9186: Create an instance of SMESHGUI to initialize myComponentSMESH
+ return aGUI.myComponentSMESH;
+ }
return myComponentSMESH;
}
{
list.append( SVTK_Viewer::Type() );
}
+
+void SMESHGUI::onViewManagerAdded( SUIT_ViewManager* mgr )
+{
+ if( dynamic_cast<VTKViewer_ViewManager*>( mgr ) )
+ SMESH::UpdateSelectionProp( this );
+}