X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FGEOMToolsGUI%2FGEOMToolsGUI_MarkerDlg.cxx;h=4ff6bcec0be9eeae7e24f39fc3f927819bc3527d;hb=c1d63ef1f803d255b61ee99fb618bf471add07f4;hp=58a79a562488c0c23e50e7fb6ae805de73106991;hpb=d1e1f96ab227497c66b9ffdcdb9a829102e4b648;p=modules%2Fgeom.git diff --git a/src/GEOMToolsGUI/GEOMToolsGUI_MarkerDlg.cxx b/src/GEOMToolsGUI/GEOMToolsGUI_MarkerDlg.cxx index 58a79a562..4ff6bcec0 100644 --- a/src/GEOMToolsGUI/GEOMToolsGUI_MarkerDlg.cxx +++ b/src/GEOMToolsGUI/GEOMToolsGUI_MarkerDlg.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2016 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2023 CEA/DEN, EDF R&D, OPEN CASCADE // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public @@ -26,8 +26,6 @@ #include #include -#include - #include #include #include @@ -171,11 +169,7 @@ void GEOMToolsGUI_MarkerDlg::setStandardMarker( GEOM::marker_type type, GEOM::ma myTypeGroup->button( 0 )->setChecked( true ); myWGStack->setCurrentIndex( 0 ); myStdTypeCombo->setCurrentId( (int)type ); -#ifdef WIN32 - int asize = max( (int)GEOM::MS_10, min( (int)GEOM::MS_70, (int)size ) ); -#else int asize = std::max( (int)GEOM::MS_10, std::min( (int)GEOM::MS_70, (int)size ) ); -#endif myStdScaleCombo->setCurrentId( asize ); } } @@ -222,22 +216,24 @@ void GEOMToolsGUI_MarkerDlg::accept() _PTR(SObject) aSObject( study->FindObjectID( it.Value()->getEntry() ) ); GEOM::GEOM_Object_var anObject = GEOM::GEOM_Object::_narrow( GeometryGUI::ClientSObjectToObject( aSObject ) ); - if ( !anObject->_is_nil() ) { - if ( myWGStack->currentIndex() == 0 ) { + if ( myWGStack->currentIndex() == 0 ) { + if ( !anObject->_is_nil() && GeometryGUI::IsInGeomComponent( aSObject )) { anObject->SetMarkerStd( getMarkerType(), getStandardMarkerScale() ); - QString aMarker = "%1%2%3"; - aMarker = aMarker.arg(getMarkerType()); - aMarker = aMarker.arg(GEOM::subSectionSeparator()); - aMarker = aMarker.arg(getStandardMarkerScale()); - getStudy()->setObjectProperty(mgrId ,it.Value()->getEntry(),GEOM::propertyName( GEOM::PointMarker ), aMarker); } - else if ( getCustomMarkerID() > 0 ) { + QString aMarker = "%1%2%3"; + aMarker = aMarker.arg(getMarkerType()); + aMarker = aMarker.arg(GEOM::subSectionSeparator()); + aMarker = aMarker.arg(getStandardMarkerScale()); + getStudy()->setObjectProperty(mgrId ,it.Value()->getEntry(),GEOM::propertyName( GEOM::PointMarker ), aMarker); + } + else if ( getCustomMarkerID() > 0 ) { + if ( !anObject->_is_nil() && GeometryGUI::IsInGeomComponent( aSObject )) { anObject->SetMarkerTexture( getCustomMarkerID() ); - getStudy()->setObjectProperty(mgrId ,it.Value()->getEntry(),GEOM::propertyName( GEOM::PointMarker ), QString::number(getCustomMarkerID())); } + getStudy()->setObjectProperty(mgrId ,it.Value()->getEntry(),GEOM::propertyName( GEOM::PointMarker ), QString::number(getCustomMarkerID())); } } - GEOM_Displayer displayer( getStudy() ); + GEOM_Displayer displayer; displayer.Redisplay( selected, true ); selMgr->setSelectedObjects( selected ); } @@ -277,9 +273,9 @@ void GEOMToolsGUI_MarkerDlg::init() // --- GEOM::GEOM_Gen_var engine = GeometryGUI::GetGeomGen(); - myOperation = engine->GetIInsertOperations( getStudy()->id() ); + myOperation = engine->GetIInsertOperations(); GEOM::ListOfLong_var ids = myOperation->GetAllTextures(); - for ( int i = 0; i < ids->length(); i++ ) + for ( int i = 0; i < (int)ids->length(); i++ ) addTexture( ids[i] ); // --- @@ -298,8 +294,9 @@ void GEOMToolsGUI_MarkerDlg::init() _PTR(SObject) aSObject( study->FindObjectID( it.Value()->getEntry() ) ); GEOM::GEOM_Object_var anObject = GEOM::GEOM_Object::_narrow( GeometryGUI::ClientSObjectToObject( aSObject ) ); - if ( !anObject->_is_nil() ) { + if ( !anObject->_is_nil() && GeometryGUI::IsInGeomComponent( aSObject )) { GEOM::marker_type mtype = anObject->GetMarkerType(); + if ( aType == -1 ) aType = mtype; else if ( aType != mtype ) { @@ -321,6 +318,47 @@ void GEOMToolsGUI_MarkerDlg::init() break; } } + else { + // try study object properties + QStringList aMarkerProp; + SUIT_ViewWindow* window = getStudy()->application()->desktop()->activeWindow(); + if (window && window->getViewManager()) { + int mgrId = window->getViewManager()->getGlobalId(); + PropMap aPropMap = getStudy()->getObjectProperties(mgrId, it.Value()->getEntry()); + aMarkerProp = aPropMap.value(GEOM::propertyName(GEOM::PointMarker)).toString().split( GEOM::subSectionSeparator()); + } + if ( aMarkerProp.size() == 2 ) { + // standard marker string contains "TypeOfMarker:ScaleOfMarker" + GEOM::marker_type mtype = (GEOM::marker_type)aMarkerProp[0].toInt(); + GEOM::marker_size msize = (GEOM::marker_size)aMarkerProp[1].toInt(); + + if ( aType == -1 ) + aType = mtype; + else if ( aType != mtype ) { + aType = (GEOM::marker_type)-1; + break; + } + if ( aSize == -1 ) + aSize = msize; + else if ( aSize != msize ) + break; + } + else if ( aMarkerProp.size() == 1 ) { + // custom marker string contains "IdOfTexture" + int mtexture = aMarkerProp[0].toInt(); + + if ( aType == -1 ) + aType = GEOM::MT_USER; + else if ( aType != GEOM::MT_USER) { + aType = (GEOM::marker_type)-1; + break; + } + if ( aTexture == 0 ) + aTexture = mtexture; + else if ( aTexture != mtexture ) + break; + } + } } } } @@ -339,7 +377,7 @@ void GEOMToolsGUI_MarkerDlg::addTexture( int id, bool select ) const if ( id > 0 && myCustomTypeCombo->index( id ) == -1 ) { int tWidth, tHeight; - Handle(TColStd_HArray1OfByte) texture = GeometryGUI::getTexture(getStudy(), id, tWidth, tHeight); + Handle(TColStd_HArray1OfByte) texture = GeometryGUI::getTexture(id, tWidth, tHeight); if ( !texture.IsNull() && texture->Length() == tWidth*tHeight/8 ) { QImage image( tWidth, tHeight, QImage::Format_Mono ); @@ -375,7 +413,7 @@ void GEOMToolsGUI_MarkerDlg::browse() filters << tr( "Texture files (*.dat)" ) << tr( "All files (*)" ); QString aFileName = SUIT_Session::session()->activeApplication()->getFileName( true, QString(), filters.join( ";;" ), tr( "LOAD_TEXTURE_TLT" ), this ); if ( !aFileName.isEmpty() ) { - addTexture( myOperation->LoadTexture( aFileName.toLatin1().constData() ), true ); + addTexture( myOperation->LoadTexture( aFileName.toUtf8().constData() ), true ); } }