X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FSMESHGUI%2FSMESHGUI.cxx;h=2d0822288fab465a5824c36e6d2831bb01d14832;hb=bd8f1aee7c78f7d2eb82bd4fec5e08c9e3d280ce;hp=86de4f316721e8c6680303eeff1d93a7b883b749;hpb=1067ffa6e7e5c394e3a1b17219d8b355a57607cd;p=modules%2Fsmesh.git diff --git a/src/SMESHGUI/SMESHGUI.cxx b/src/SMESHGUI/SMESHGUI.cxx index 86de4f316..2d0822288 100644 --- a/src/SMESHGUI/SMESHGUI.cxx +++ b/src/SMESHGUI/SMESHGUI.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2013 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 @@ -357,12 +357,10 @@ anEntryList.append( aMeshSO->GetID().c_str() ); -#ifdef WITHGENERICOBJ // obj has been published in study. Its refcount has been incremented. // It is safe to decrement its refcount // so that it will be destroyed when the entry in study will be removed aMeshes[i]->UnRegister(); -#endif } else { isEmpty = true; @@ -545,11 +543,9 @@ { format = "GMF"; notSupportedElemTypes.push_back( SMESH::Entity_0D ); - notSupportedElemTypes.push_back( SMESH::Entity_Quad_Quadrangle ); notSupportedElemTypes.push_back( SMESH::Entity_Polygon ); notSupportedElemTypes.push_back( SMESH::Entity_Quad_Polygon ); notSupportedElemTypes.push_back( SMESH::Entity_Quad_Pyramid ); - notSupportedElemTypes.push_back( SMESH::Entity_Quad_Hexa ); notSupportedElemTypes.push_back( SMESH::Entity_Quad_Penta ); notSupportedElemTypes.push_back( SMESH::Entity_Hexagonal_Prism ); notSupportedElemTypes.push_back( SMESH::Entity_Polyhedra ); @@ -1110,9 +1106,10 @@ vtkLookupTable* lookupTable = static_cast(aScalarBarActor->GetLookupTable()); double * minmax = lookupTable->GetRange(); + bool isLogarithmic = lookupTable->GetScale() == VTK_SCALE_LOG10; std::vector nbEvents; std::vector funValues; - aNumFun->GetHistogram( nbIntervals, nbEvents, funValues, elements, minmax ); + aNumFun->GetHistogram( nbIntervals, nbEvents, funValues, elements, minmax, isLogarithmic ); QString anInitialPath = ""; if ( SUIT_FileDlg::getLastVisitedPath().isEmpty() ) anInitialPath = QDir::currentPath(); @@ -1259,7 +1256,7 @@ return; } case 1132: { - vtkFloatingPointType color[3]; + double color[3]; QColor faceColor, edgeColor, nodeColor, elem0dColor, ballColor; QColor orientationColor, outlineColor, volumeColor; int deltaF = 0, deltaV = 0; @@ -1267,8 +1264,8 @@ int ballSize = 1; int edgeWidth = 1; int outlineWidth = 1; - vtkFloatingPointType shrinkCoef = 0.0; - vtkFloatingPointType orientationScale = 0.0; + double shrinkCoef = 0.0; + double orientationScale = 0.0; bool orientation3d = false; VTK::MarkerType markerType = VTK::MT_NONE; VTK::MarkerScale markerScale = VTK::MS_NONE; @@ -1605,7 +1602,7 @@ aControl = SMESH_Actor::eCoincidentElems3D; break; } - + anActor->SetControlMode(aControl); anActor->GetScalarBarActor()->SetTitle( functorToString( anActor->GetFunctor() ).toLatin1().constData() ); SMESH::RepaintCurrentView(); @@ -1803,6 +1800,15 @@ } } + // Call mesh->Clear() to prevent loading mesh from file caused by hypotheses removal + for( It.Initialize( selected ); It.More(); It.Next()) // loop on selected IO's + { + Handle(SALOME_InteractiveObject) IObject = It.Value(); + SMESH::SMESH_Mesh_var mesh = SMESH::IObjectToInterface< SMESH::SMESH_Mesh >( IObject ); + if ( !mesh->_is_nil() ) + mesh->Clear(); + } + // Treat SO's in the list starting from the back aStudyBuilder->NewCommand(); // There is a transaction for ( ritSO = listSO.rbegin(); ritSO != listSO.rend(); ++ritSO ) @@ -1812,22 +1818,23 @@ std::string anEntry = SO->GetID(); /** Erase graphical object **/ - if(SO->FindAttribute(anAttr, "AttributeIOR")){ - ViewManagerList aViewMenegers = anApp->viewManagers(); - ViewManagerList::const_iterator it = aViewMenegers.begin(); - for( ; it != aViewMenegers.end(); it++) { - SUIT_ViewManager* vm = *it; - int nbSf = vm ? vm->getViewsCount() : 0; - if(vm) { - QVector aViews = vm->getViews(); - for(int i = 0; i < nbSf; i++){ - SUIT_ViewWindow *sf = aViews[i]; - if(SMESH_Actor* anActor = SMESH::FindActorByEntry(sf,anEntry.c_str())){ - SMESH::RemoveActor(sf,anActor); - } - } - } - } + if(SO->FindAttribute(anAttr, "AttributeIOR")) { + SMESH::RemoveVisualObjectWithActors( anEntry.c_str(), true); + // ViewManagerList aViewMenegers = anApp->viewManagers(); + // ViewManagerList::const_iterator it = aViewMenegers.begin(); + // for( ; it != aViewMenegers.end(); it++) { + // SUIT_ViewManager* vm = *it; + // int nbSf = vm ? vm->getViewsCount() : 0; + // if(vm) { + // QVector aViews = vm->getViews(); + // for(int i = 0; i < nbSf; i++){ + // SUIT_ViewWindow *sf = aViews[i]; + // if(SMESH_Actor* anActor = SMESH::FindActorByEntry(sf,anEntry.c_str())){ + // SMESH::RemoveActor(sf,anActor); + // } + // } + // } + // } } /** Remove an object from data structures **/ SMESH::SMESH_GroupBase_var aGroup = SMESH::SMESH_GroupBase::_narrow( SMESH::SObjectToObject( SO )); @@ -1891,8 +1898,7 @@ SMESH::SMESH_Gen_var SMESHGUI::myComponentSMESH = SMESH::SMESH_Gen::_nil(); */ //============================================================================= SMESHGUI::SMESHGUI() : -SalomeApp_Module( "SMESH" ), -LightApp_Module( "SMESH" ) +SalomeApp_Module( "SMESH" ) { if ( CORBA::is_nil( myComponentSMESH ) ) { @@ -1927,10 +1933,6 @@ LightApp_Module( "SMESH" ) myEventCallbackCommand->SetCallback( SMESHGUI::ProcessEvents ); myPriority = 0.0; - SMESH::GetFilterManager(); - SMESH::GetPattern(); - SMESH::GetMeasurements(); - /* load resources for all available meshers */ SMESH::InitAvailableHypotheses(); } @@ -1942,12 +1944,6 @@ LightApp_Module( "SMESH" ) //============================================================================= SMESHGUI::~SMESHGUI() { -#ifdef WITHGENERICOBJ - SMESH::GetFilterManager()->UnRegister(); - SMESH::GetMeasurements()->UnRegister(); -#endif - SMESH::GetFilterManager() = SMESH::FilterManager::_nil(); - SMESH::GetMeasurements() = SMESH::Measurements::_nil(); } //============================================================================= @@ -4730,7 +4726,7 @@ void SMESHGUI::createPreferences() int exportgroup = addPreference( tr( "PREF_GROUP_EXPORT" ), genTab ); setPreferenceProperty( exportgroup, "columns", 2 ); addPreference( tr( "PREF_AUTO_GROUPS" ), exportgroup, LightApp_Preferences::Bool, "SMESH", "auto_groups" ); - addPreference( tr( "PREF_RENUMBER" ), exportgroup, LightApp_Preferences::Bool, "SMESH", "renumbering" ); + //addPreference( tr( "PREF_RENUMBER" ), exportgroup, LightApp_Preferences::Bool, "SMESH", "renumbering" ); int computeGroup = addPreference( tr( "PREF_GROUP_COMPUTE" ), genTab ); setPreferenceProperty( computeGroup, "columns", 2 ); @@ -4747,7 +4743,7 @@ void SMESHGUI::createPreferences() setPreferenceProperty( notifyMode, "indexes", indices ); int infoGroup = addPreference( tr( "PREF_GROUP_INFO" ), genTab ); - setPreferenceProperty( infoGroup, "columns", 4 ); + setPreferenceProperty( infoGroup, "columns", 2 ); int elemInfo = addPreference( tr( "PREF_ELEM_INFO" ), infoGroup, LightApp_Preferences::Selector, "SMESH", "mesh_elem_info" ); modes.clear(); modes.append( tr( "PREF_ELEM_INFO_SIMPLE" ) ); @@ -4762,6 +4758,10 @@ void SMESHGUI::createPreferences() setPreferenceProperty( nodesLim, "max", 10000000 ); setPreferenceProperty( nodesLim, "step", 10000 ); setPreferenceProperty( nodesLim, "special", tr( "PREF_UPDATE_LIMIT_NOLIMIT" ) ); + addPreference( tr( "PREF_ELEM_INFO_GRP_DETAILS" ), infoGroup, LightApp_Preferences::Bool, "SMESH", "elem_info_grp_details" ); + addPreference( tr( "PREF_DUMP_BASE_INFO" ), infoGroup, LightApp_Preferences::Bool, "SMESH", "info_dump_base" ); + addPreference( tr( "PREF_DUMP_ELEM_INFO" ), infoGroup, LightApp_Preferences::Bool, "SMESH", "info_dump_elem" ); + addPreference( tr( "PREF_DUMP_ADD_INFO" ), infoGroup, LightApp_Preferences::Bool, "SMESH", "info_dump_add" ); int segGroup = addPreference( tr( "PREF_GROUP_SEGMENT_LENGTH" ), genTab ); setPreferenceProperty( segGroup, "columns", 2 ); @@ -4892,6 +4892,15 @@ void SMESHGUI::createPreferences() setPreferenceProperty( shrink, "min", 0 ); setPreferenceProperty( shrink, "max", 100 ); + int numGroup = addPreference( tr( "PREF_GROUP_NUMBERING" ), meshTab ); + setPreferenceProperty( numGroup, "columns", 2 ); + + addPreference( tr( "PREF_NUMBERING_NODE" ), numGroup, LightApp_Preferences::Color, "SMESH", "numbering_node_color" ); + addVtkFontPref( tr( "PREF_NUMBERING_FONT" ), numGroup, "numbering_node_font", true ); + + addPreference( tr( "PREF_NUMBERING_ELEM" ), numGroup, LightApp_Preferences::Color, "SMESH", "numbering_elem_color" ); + addVtkFontPref( tr( "PREF_NUMBERING_FONT" ), numGroup, "numbering_elem_font", true ); + int orientGroup = addPreference( tr( "PREF_GROUP_FACES_ORIENTATION" ), meshTab ); setPreferenceProperty( orientGroup, "columns", 1 ); @@ -5078,6 +5087,12 @@ void SMESHGUI::preferencesChanged( const QString& sect, const QString& name ) QString val = aResourceMgr->stringValue( "SMESH", name ); myComponentSMESH->SetOption( name.toLatin1().constData(), val.toLatin1().constData() ); } + else if ( name == QString( "numbering_node_color" ) || name == QString( "numbering_node_font" ) ) { + SMESH::UpdateFontProp( this ); + } + else if ( name == QString( "numbering_elem_color" ) || name == QString( "numbering_elem_font" ) ) { + SMESH::UpdateFontProp( this ); + } if(aWarning.size() != 0){ aWarning += "The default values are applied instead."; @@ -5450,7 +5465,7 @@ void SMESHGUI::storeVisualParameters (int savePoint) ip->setParameter(entry, param, modeStr.toLatin1().data()); // Colors - vtkFloatingPointType r, g, b; + double r, g, b; int delta; aSmeshActor->GetSufaceColor(r, g, b, delta); @@ -5589,8 +5604,8 @@ void SMESHGUI::storeVisualParameters (int savePoint) typedef struct { int Id; vtkIdType Orientation; - vtkFloatingPointType Distance; - vtkFloatingPointType Angle[2]; + double Distance; + double Angle[2]; } TPlaneData; typedef std::list TPlaneDataList; typedef std::map TPlaneDataMap; @@ -6165,7 +6180,7 @@ void SMESHGUI::restoreVisualParameters (int savePoint) if (val != "Off") { SMESH::Orientation anOrientation = (SMESH::Orientation)vals[0].toInt(); double aDistance = vals[1].toFloat(); - vtkFloatingPointType anAngle[2]; + double anAngle[2]; anAngle[0] = vals[2].toFloat(); anAngle[1] = vals[3].toFloat(); @@ -6345,7 +6360,7 @@ void SMESHGUI::restoreVisualParameters (int savePoint) \param param parameter \return identifier of preferences */ -int SMESHGUI::addVtkFontPref( const QString& label, const int pId, const QString& param ) +int SMESHGUI::addVtkFontPref( const QString& label, const int pId, const QString& param, const bool needSize ) { int tfont = addPreference( label, pId, LightApp_Preferences::Font, "SMESH", param ); @@ -6359,6 +6374,7 @@ int SMESHGUI::addVtkFontPref( const QString& label, const int pId, const QString setPreferenceProperty( tfont, "fonts", fam ); int f = QtxFontEdit::Family | QtxFontEdit::Bold | QtxFontEdit::Italic | QtxFontEdit::Shadow; + if ( needSize ) f = f | QtxFontEdit::Size; setPreferenceProperty( tfont, "features", f ); return tfont;