Regression of Offset dialog: result shape not published

+ fix some warnings and memory leaks
This commit is contained in:
eap 2017-12-29 17:42:48 +03:00
parent 14bd7e1d70
commit b9104d97c5
10 changed files with 146 additions and 133 deletions

View File

@ -109,7 +109,7 @@ AdvancedGUI_SmoothingSurfaceDlg::~AdvancedGUI_SmoothingSurfaceDlg()
void AdvancedGUI_SmoothingSurfaceDlg::Init()
{
// Get setting of step value from file configuration
SUIT_ResourceMgr* resMgr = SUIT_Session::session()->resourceMgr();
//SUIT_ResourceMgr* resMgr = SUIT_Session::session()->resourceMgr();
initSpinBox(myDMaxSpin, 0., COORD_MAX, 0.00001, "parametric_precision" );

View File

@ -297,8 +297,8 @@ bool EntityGUI::OnMousePress( QMouseEvent* pe, SUIT_Desktop* parent, SUIT_ViewWi
bool EntityGUI::OnMouseRelease( QMouseEvent* pe, SUIT_Desktop* parent, SUIT_ViewWindow* theViewWindow )
{
((OCCViewer_ViewWindow*)theViewWindow)->setSketcherStyle(false);
QDialog* aDlg = getGeometryGUI()->GetActiveDialogBox();
#ifdef WITH_OPENCV
QDialog* aDlg = getGeometryGUI()->GetActiveDialogBox();
if ( aDlg && ( QString( aDlg->metaObject()->className() ).compare( "EntityGUI_FeatureDetectorDlg" ) == 0 ) &&
theViewWindow->getViewManager()->getType() == OCCViewer_Viewer::Type() &&
pe->modifiers() != Qt::ControlModifier )

View File

@ -145,10 +145,10 @@ void GEOMBase_Helper::display( GEOM::GEOM_Object_ptr object, const bool updateVi
{
// Unset color of shape ( this color may be set during preview displaying )
// Default color will be used
// getDisplayer()->UnsetColor();
// getDisplayer()->UnsetColor();
getDisplayer()->UnsetWidth();
MESSAGE("GEOMBase_Helper::display myTexture = "<<getDisplayer()->GetTexture())
MESSAGE("GEOMBase_Helper::display myTexture = "<<getDisplayer()->GetTexture());
// Enable activisation of selection
getDisplayer()->SetToActivate( true );
@ -179,9 +179,11 @@ void GEOMBase_Helper::erase( GEOM::GEOM_Object_ptr object, const bool updateView
{
if ( !object->_is_nil() ) {
QString entry = getEntry( object );
getDisplayer()->Erase( new SALOME_InteractiveObject(
entry.toLatin1().constData(),
"GEOM", strdup( GEOMBase::GetName( object ).toLatin1().constData() ) ), true, updateView );
QString name = GEOMBase::GetName( object );
getDisplayer()->Erase ( new SALOME_InteractiveObject(entry.toLatin1().constData(),
"GEOM",
name.toLatin1().constData() ),
true, updateView );
}
}
@ -219,8 +221,12 @@ void GEOMBase_Helper::redisplay( GEOM::GEOM_Object_ptr object,
getDisplayer()->SetToActivate( true );
QString entry = getEntry( object );
getDisplayer()->Redisplay(new SALOME_InteractiveObject
(entry.toLatin1().constData(), "GEOM", strdup(GEOMBase::GetName(object).toLatin1().constData())), false);
QString name = GEOMBase::GetName( object );
getDisplayer()->Redisplay
(new SALOME_InteractiveObject (entry.toLatin1().constData(),
"GEOM",
name.toLatin1().constData()),
false);
}
if ( withChildren ) {
@ -237,8 +243,12 @@ void GEOMBase_Helper::redisplay( GEOM::GEOM_Object_ptr object,
if ( !CORBA::is_nil( aChild ) ) {
if ( !aChild->_is_nil() ) {
QString entry = getEntry( aChild );
getDisplayer()->Redisplay( new SALOME_InteractiveObject(
entry.toLatin1().constData(), "GEOM", strdup( GEOMBase::GetName( aChild ).toLatin1().constData() ) ), false );
QString name = GEOMBase::GetName( aChild );
getDisplayer()->Redisplay
( new SALOME_InteractiveObject( entry.toLatin1().constData(),
"GEOM",
name.toLatin1().constData() ),
false );
}
}
}
@ -293,10 +303,10 @@ void GEOMBase_Helper::displayPreview( const bool display,
else {
for ( ObjectList::iterator it = objects.begin(); it != objects.end(); ++it )
{
GEOM::GEOM_Object_var obj=*it;
GEOM::GEOM_Object_var obj = *it;
displayPreview( obj, true, activate, false, lineWidth, displayMode, color );
if ( toRemoveFromEngine )
obj->UnRegister();
obj->UnRegister();
}
}
}
@ -380,12 +390,12 @@ void GEOMBase_Helper::displayPreview( const SALOME_Prs* prs,
SUIT_ViewManager* aViewManager = myViewWindow->getViewManager();
if ( aViewManager->getType() == OCCViewer_Viewer::Type() ||
aViewManager->getType() == SVTK_Viewer::Type() )
{
SUIT_ViewModel* aViewModel = aViewManager->getViewModel();
SALOME_View* aView = dynamic_cast<SALOME_View*>(aViewModel);
if (aView)
aView->Display( getDisplayer(), prs );
}
{
SUIT_ViewModel* aViewModel = aViewManager->getViewModel();
SALOME_View* aView = dynamic_cast<SALOME_View*>(aViewModel);
if (aView)
aView->Display( getDisplayer(), prs );
}
// Add prs to the preview list
myPreview.push_back( (SALOME_Prs*)prs );
@ -478,8 +488,11 @@ void GEOMBase_Helper::localSelection( const ObjectList& theObjs, const std::list
continue;
QString anEntry = getEntry( anObj );
if ( anEntry != "" )
aListOfIO.Append( new SALOME_InteractiveObject(
anEntry.toLatin1().constData(), "GEOM", strdup( GEOMBase::GetName( anObj ).toLatin1().constData() ) ) );
{
QString aName = GEOMBase::GetName( anObj );
aListOfIO.Append( new SALOME_InteractiveObject( anEntry.toLatin1().constData(),
"GEOM", aName.toLatin1().constData() ));
}
}
getDisplayer()->LocalSelection( aListOfIO, modes );
@ -685,11 +698,11 @@ SalomeApp_Study* GEOMBase_Helper::getStudy() const
SUIT_Application* anApp = 0;
QListIterator<SUIT_Application*> it( anAppList );
while ( it.hasNext() )
{
anApp = it.next();
if ( anApp && anApp->desktop() == aDesktop )
break;
}
{
anApp = it.next();
if ( anApp && anApp->desktop() == aDesktop )
break;
}
return dynamic_cast<SalomeApp_Study*>(anApp->activeStudy());
}
@ -742,7 +755,7 @@ bool GEOMBase_Helper::openCommand()
if ( !getStudy() || hasCommand() )
{
MESSAGE("Getting out from openCommand()")
return res;
return res;
}
GEOM::GEOM_IOperations_var anOp = GEOM::GEOM_IOperations::_narrow( getOperation() );
@ -754,7 +767,7 @@ bool GEOMBase_Helper::openCommand()
else
{
MESSAGE("anOp->_is_nil() = true")
}
}
return res;
}
@ -824,10 +837,10 @@ bool GEOMBase_Helper::checkViewWindow()
QList<SUIT_ViewWindow*> aViewWindowsList = SUIT_Session::session()->activeApplication()->desktop()->windows();
QListIterator<SUIT_ViewWindow*> it( aViewWindowsList );
while ( it.hasNext() )
{
if ( myViewWindow == it.next() )
return true;
}
{
if ( myViewWindow == it.next() )
return true;
}
}
myViewWindow = 0;
return false;
@ -845,7 +858,7 @@ bool GEOMBase_Helper::onAccept( const bool publish, const bool useTransaction, b
if ( !appStudy )
{
MESSAGE("appStudy is empty")
return false;
return false;
}
_PTR(Study) aStudy = appStudy->studyDS();
@ -892,21 +905,21 @@ bool GEOMBase_Helper::onAccept( const bool publish, const bool useTransaction, b
QString aName = getObjectName(obj);
if (aName.isEmpty()) {
aName = getNewObjectName(currObj);
if ( nbObjs > 1 ) {
if (aName.isEmpty())
aName = getPrefix(obj);
if (nbObjs <= 30) {
// Try to find a unique name
aName = GEOMBase::GetDefaultName(aName, extractPrefix());
} else {
// Don't check name uniqueness in case of numerous objects
aName = aName + "_" + QString::number(aNumber++);
}
} else {
// PAL6521: use a prefix, if some dialog box doesn't reimplement getNewObjectName()
if ( aName.isEmpty() )
aName = GEOMBase::GetDefaultName( getPrefix( obj ) );
}
if ( nbObjs > 1 ) {
if (aName.isEmpty())
aName = getPrefix(obj);
if (nbObjs <= 30) {
// Try to find a unique name
aName = GEOMBase::GetDefaultName(aName, extractPrefix());
} else {
// Don't check name uniqueness in case of numerous objects
aName = aName + "_" + QString::number(aNumber++);
}
} else {
// PAL6521: use a prefix, if some dialog box doesn't reimplement getNewObjectName()
if ( aName.isEmpty() )
aName = GEOMBase::GetDefaultName( getPrefix( obj ) );
}
}
anEntryList << addInStudy( obj, aName.toLatin1().constData() );
// updateView=false
@ -956,12 +969,12 @@ bool GEOMBase_Helper::onAccept( const bool publish, const bool useTransaction, b
SalomeApp_Tools::QtCatchCorbaException( e );
abortCommand();
MESSAGE("Exception caught")
}
}
updateViewer();
MESSAGE("result ="<<result)
return result;
return result;
}
@ -1083,15 +1096,15 @@ QString GEOMBase_Helper::getPrefix( GEOM::GEOM_Object_ptr theObj ) const
switch ( aType )
{
case GEOM::VERTEX : return QObject::tr( "GEOM_VERTEX" );
case GEOM::EDGE : return QObject::tr( "GEOM_EDGE" );
case GEOM::WIRE : return QObject::tr( "GEOM_WIRE" );
case GEOM::FACE : return QObject::tr( "GEOM_FACE" );
case GEOM::SHELL : return QObject::tr( "GEOM_SHELL" );
case GEOM::SOLID : return QObject::tr( "GEOM_SOLID" );
case GEOM::COMPSOLID: return QObject::tr( "GEOM_COMPOUNDSOLID" );
case GEOM::COMPOUND : return QObject::tr( "GEOM_COMPOUND" );
default : return "";
case GEOM::VERTEX : return QObject::tr( "GEOM_VERTEX" );
case GEOM::EDGE : return QObject::tr( "GEOM_EDGE" );
case GEOM::WIRE : return QObject::tr( "GEOM_WIRE" );
case GEOM::FACE : return QObject::tr( "GEOM_FACE" );
case GEOM::SHELL : return QObject::tr( "GEOM_SHELL" );
case GEOM::SOLID : return QObject::tr( "GEOM_SOLID" );
case GEOM::COMPSOLID: return QObject::tr( "GEOM_COMPOUNDSOLID" );
case GEOM::COMPOUND : return QObject::tr( "GEOM_COMPOUND" );
default : return "";
}
}

View File

@ -327,11 +327,11 @@ GEOM::GEOM_Object_ptr GroupGUI_BooleanDlg::getFather(GEOM::GEOM_Object_ptr theOb
QList<GEOM::GeomObjPtr> GroupGUI_BooleanDlg::getSourceObjects()
{
QList<GEOM::GeomObjPtr> res;
for (int i = 0; i < myListShapes.length(); i++) {
for ( CORBA::ULong i = 0; i < myListShapes.length(); i++) {
GEOM::GeomObjPtr aGeomObjPtr(myListShapes[i]);
res << aGeomObjPtr;
}
for (int i = 0; i < myListTools.length(); i++) {
for ( CORBA::ULong i = 0; i < myListTools.length(); i++) {
GEOM::GeomObjPtr aGeomObjPtr(myListTools[i]);
res << aGeomObjPtr;
}

View File

@ -89,7 +89,7 @@ MeasureGUI_CheckSelfIntersectionsDlg::MeasureGUI_CheckSelfIntersectionsDlg (Geom
mainFrame()->RadioButton3->close();
/***************************************************************/
/* SIMPLE SELF-INTERSECTION constructor
// SIMPLE SELF-INTERSECTION constructor
/***************************************************************/
mySimpleGrp = new QGroupBox(tr("GEOM_CHECK_INFOS"));
QLabel *anObjLbl = new QLabel(tr("GEOM_OBJECT"));
@ -139,7 +139,7 @@ MeasureGUI_CheckSelfIntersectionsDlg::MeasureGUI_CheckSelfIntersectionsDlg (Geom
aGrpLayout1->addWidget(myShapeList1, 6, 2);
/***************************************************************/
/* FAST SELF-INTERSECTION constructor
// FAST SELF-INTERSECTION constructor
/***************************************************************/
myFastGrp = new QGroupBox(tr("GEOM_CHECK_INFOS"), centralWidget());
@ -268,7 +268,7 @@ void MeasureGUI_CheckSelfIntersectionsDlg::Init()
/***************************************************************/
connect(this, SIGNAL(constructorsClicked(int)),
this, SLOT(ConstructorsClicked(int)));
this, SLOT(ConstructorsClicked(int)));
connect(myGeomGUI, SIGNAL(SignalDeactivateActiveDialog()),
this, SLOT(DeactivateActiveDialog()));
connect(myGeomGUI, SIGNAL(SignalCloseAllDialogs()),
@ -527,19 +527,19 @@ void MeasureGUI_CheckSelfIntersectionsDlg::SelectionIntoArgument()
if ( getConstructorId() == 0 ) {
typesLst << TopAbs_COMPOUND
<< TopAbs_COMPSOLID
<< TopAbs_SOLID
<< TopAbs_SHELL
<< TopAbs_FACE
<< TopAbs_WIRE
<< TopAbs_EDGE
<< TopAbs_VERTEX
<< TopAbs_SHAPE;
<< TopAbs_COMPSOLID
<< TopAbs_SOLID
<< TopAbs_SHELL
<< TopAbs_FACE
<< TopAbs_WIRE
<< TopAbs_EDGE
<< TopAbs_VERTEX
<< TopAbs_SHAPE;
} else {
typesLst << TopAbs_FACE
<< TopAbs_SHELL
<< TopAbs_SOLID
<< TopAbs_COMPOUND;
<< TopAbs_SHELL
<< TopAbs_SOLID
<< TopAbs_COMPOUND;
}
// Clear the dialog.
@ -672,11 +672,11 @@ void MeasureGUI_CheckSelfIntersectionsDlg::onSubShapesListSelectionChanged()
foreach(int idx, aIds) {
aSubShape = anIndices.FindKey(idx);
try {
SALOME_Prs* aPrs = !aSubShape.IsNull() ? getDisplayer()->BuildPrs(aSubShape) : 0;
if (aPrs) displayPreview(aPrs, true);
SALOME_Prs* aPrs = !aSubShape.IsNull() ? getDisplayer()->BuildPrs(aSubShape) : 0;
if (aPrs) displayPreview(aPrs, true);
}
catch (const SALOME::SALOME_Exception& e) {
SalomeApp_Tools::QtCatchCorbaException(e);
SalomeApp_Tools::QtCatchCorbaException(e);
}
}
}

View File

@ -475,7 +475,7 @@ void MeasureGUI_CheckShapeDlg::onErrorsListSelectionChanged()
myGrp->ListBox2->clear();
if (aCurItem < aErrs.length()) {
if (aCurItem < (int)aErrs.length()) {
GEOM::GEOM_IMeasureOperations::ShapeError aErr = aErrs[aCurItem];
GEOM::ListOfLong aObjLst = aErr.incriminated;
QStringList aSubShapeList;

View File

@ -204,7 +204,7 @@ void MeasureGUI_DistanceDlg::enterEvent(QEvent*)
//=================================================================================
void MeasureGUI_DistanceDlg::SolutionSelected (int i)
{
if (i < 0 || myDbls->length() < (i+1)*6) {
if (i < 0 || (int)myDbls->length() < (i+1)*6) {
myGrp->LineEdit3->setText("");
myGrp->LineEdit4->setText("");
myGrp->LineEdit5->setText("");
@ -341,7 +341,7 @@ SALOME_Prs* MeasureGUI_DistanceDlg::buildPrs()
int currSol = myGrp->ComboBox1->currentIndex();
if (!myObj1 || !myObj2 ||
currSol == -1 || (currSol+1)*6 > myDbls->length() ||
currSol == -1 || (currSol+1)*6 > (int)myDbls->length() ||
vw->getViewManager()->getType() != OCCViewer_Viewer::Type())
return 0;

View File

@ -65,9 +65,9 @@
// class : MeasureGUI_ShapeStatisticsDlg()
//===========================================================================
MeasureGUI_ShapeStatisticsDlg::MeasureGUI_ShapeStatisticsDlg( QWidget* parent, TopoDS_Shape aShape, TopAbs_ShapeEnum aSubShapeType )
: GEOMBase_Helper( SUIT_Session::session()->activeApplication()->desktop() ),
QDialog( parent ),
myHistogram ( 0 )
: GEOMBase_Helper( SUIT_Session::session()->activeApplication()->desktop() ),
QDialog( parent ),
myHistogram ( 0 )
{
myShapes.push_back( aShape );
@ -107,8 +107,8 @@ MeasureGUI_ShapeStatisticsDlg::MeasureGUI_ShapeStatisticsDlg( QWidget* parent, T
myCBTypes->setCleared( true );
if ( aSubShapeType != TopAbs_SHAPE ) {
fillTypes( aSubShapeType == TopAbs_EDGE,
aSubShapeType == TopAbs_FACE,
aSubShapeType == TopAbs_SOLID );
aSubShapeType == TopAbs_FACE,
aSubShapeType == TopAbs_SOLID );
myCBTypes->setEnabled( false );
}
@ -209,10 +209,10 @@ GEOM::GEOM_IOperations_ptr MeasureGUI_ShapeStatisticsDlg::createOperation()
return getGeomEngine()->GetIGroupOperations(getStudyId());
}
#define RETURN_WITH_MSG(a, b) \
if (!(a)) { \
theMessage += (b); \
return false; \
#define RETURN_WITH_MSG(a, b) \
if (!(a)) { \
theMessage += (b); \
return false; \
}
//================================================================
@ -334,9 +334,9 @@ TopAbs_ShapeEnum MeasureGUI_ShapeStatisticsDlg::currentType()
bool MeasureGUI_ShapeStatisticsDlg::isValid(QString& theMessage)
{
if ( myScalarRangeBox->isChecked() ) {
RETURN_WITH_MSG( !myMin->text().isEmpty(), tr("GEOM_SHAPE_STATISTICS_MIN_ERROR") )
RETURN_WITH_MSG( !myMax->text().isEmpty(), tr("GEOM_SHAPE_STATISTICS_MAX_ERROR") )
RETURN_WITH_MSG( myMin->text().toDouble() <= myMax->text().toDouble(), tr("GEOM_SHAPE_STATISTICS_MIN_MAX_ERROR") )
RETURN_WITH_MSG( !myMin->text().isEmpty(), tr("GEOM_SHAPE_STATISTICS_MIN_ERROR") );
RETURN_WITH_MSG( !myMax->text().isEmpty(), tr("GEOM_SHAPE_STATISTICS_MAX_ERROR") );
RETURN_WITH_MSG( myMin->text().toDouble() <= myMax->text().toDouble(), tr("GEOM_SHAPE_STATISTICS_MIN_MAX_ERROR") );
}
return true;
}
@ -472,7 +472,7 @@ bool MeasureGUI_ShapeStatisticsDlg::execute(ObjectList& objects)
int aPrecision = resMgr->integerValue( "Geometry", "length_precision", 6 );
QString aTypePrefix = myCBTypes->currentText().replace(' ', '_');
QString objIOR, aMin, aMax, aGroupName;
SalomeApp_Study* study = getStudy();
//SalomeApp_Study* study = getStudy();
GEOMUtils::Distribution aShapesDistr =
GEOMUtils::ComputeDistribution( myShapes, currentType(), myNbIntervals->value(), aRange );
@ -489,7 +489,7 @@ bool MeasureGUI_ShapeStatisticsDlg::execute(ObjectList& objects)
int ii = 0;
std::list<long>::const_iterator id_it;
for ( id_it = idList.begin(); id_it != idList.end(); id_it++ ) {
aNewList[ii++] = *id_it;
aNewList[ii++] = *id_it;
}
// Create an empty group
@ -497,12 +497,12 @@ bool MeasureGUI_ShapeStatisticsDlg::execute(ObjectList& objects)
aGroup = anOper->CreateGroup( myMainObj.get(), currentType() );
if (CORBA::is_nil(aGroup) || !anOper->IsDone())
return false;
return false;
// Add sub-shapes into group
anOper->UnionIDs(aGroup, aNewList);
if (!anOper->IsDone())
return false;
return false;
// publish group
aMin = DlgRef::PrintDoubleValue( (*it).min, aPrecision );

View File

@ -45,7 +45,7 @@ namespace
GEOM::shape_type maxShapeType(const GEOM::ListOfGO& objs)
{
GEOM::shape_type r = GEOM::SHAPE;
for ( int i = 0; i < objs.length(); i++ ) {
for ( CORBA::ULong i = 0; i < objs.length(); i++ ) {
GEOM::shape_type t = objs[i]->GetShapeType();
if ( t == GEOM::COMPOUND || t == GEOM::COMPSOLID )
t = objs[i]->GetMaxShapeType();
@ -412,7 +412,7 @@ QList<GEOM::GeomObjPtr> OperationGUI_GetSharedShapesDlg::getSourceObjects()
{
QList<GEOM::GeomObjPtr> res;
GEOM::ListOfGO aListPtr(myListShapes);
for (int i = 0; i < aListPtr.length(); i++) {
for (CORBA::ULong i = 0; i < aListPtr.length(); i++) {
GEOM::GeomObjPtr aGeomObjPtr(aListPtr[i]);
res << aGeomObjPtr;
}

View File

@ -148,7 +148,7 @@ void TransformationGUI_OffsetDlg::ClickOnOk()
//=================================================================================
bool TransformationGUI_OffsetDlg::ClickOnApply()
{
if ( !onAccept( GroupPoints->CheckButton1->isChecked() ) )
if ( !onAccept( /*copy=*/true ))
return false;
initName();