From: jfa Date: Wed, 4 Nov 2009 11:12:32 +0000 (+0000) Subject: clean code X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=1f857b058532cb4465adf913d3503cb9d826fc45;p=modules%2Fgeom.git clean code --- diff --git a/src/GroupGUI/GroupGUI_GroupDlg.cxx b/src/GroupGUI/GroupGUI_GroupDlg.cxx index 4cdbd3cef..a062b3bf4 100644 --- a/src/GroupGUI/GroupGUI_GroupDlg.cxx +++ b/src/GroupGUI/GroupGUI_GroupDlg.cxx @@ -25,19 +25,20 @@ #include "GroupGUI_GroupDlg.h" +#include +#include +#include +#include + +#include +#include + #include + #include #include #include #include -#include -#include - -#include -#include -#include -#include -#include #include #include @@ -48,6 +49,8 @@ #include #include +#include + enum { ALL_SUBSHAPES = 0, GET_IN_PLACE, SUBSHAPES_OF_SHAPE2, SUBSHAPES_OF_INVISIBLE_SHAPE2 }; GroupGUI_GroupDlg::GroupGUI_GroupDlg (Mode mode, GeometryGUI* theGeometryGUI, QWidget* parent) @@ -268,13 +271,14 @@ bool GroupGUI_GroupDlg::ClickOnApply() return false; if (myMode == CreateGroup) - { - initName(); - myIdList->clear(); - ConstructorsClicked(getConstructorId()); - } + { + initName(); + myIdList->clear(); + ConstructorsClicked(getConstructorId()); + } else activateSelection(); + return true; } @@ -292,24 +296,6 @@ void GroupGUI_GroupDlg::ActivateThisDialog() activateSelection(); } -//================================================================================= -// function : LineEditReturnPressed() -// purpose : -//================================================================================= -void GroupGUI_GroupDlg::LineEditReturnPressed() -{ - QLineEdit* send = (QLineEdit*)sender(); - - if (send == myMainName && !myEditCurrentArgument) { - myEditCurrentArgument = myMainName; - activateSelection(); - } - else - GEOMBase_Skeleton::LineEditReturnPressed(); - - updateState(); -} - //================================================================================= // function : SetEditCurrentArgument() // purpose : @@ -322,13 +308,13 @@ void GroupGUI_GroupDlg::SetEditCurrentArgument() myEditCurrentArgument = myMainName; myShape2Name->setText(""); } - else if (send == mySelAllBtn) + else if (send == mySelAllBtn) { myEditCurrentArgument = 0; + } else if (send == mySelBtn2 || sender() == mySelectionWayGroup) { setInPlaceObj(GEOM::GEOM_Object::_nil()); myShape2Name->setText(""); - if (subSelectionWay() != ALL_SUBSHAPES) - { + if (subSelectionWay() != ALL_SUBSHAPES) { myEditCurrentArgument = myShape2Name; } else { @@ -338,9 +324,8 @@ void GroupGUI_GroupDlg::SetEditCurrentArgument() activateSelection(); - if (send == mySelAllBtn) { + if (send == mySelAllBtn) selectAllSubShapes(); - } else updateState(); } @@ -546,14 +531,14 @@ void GroupGUI_GroupDlg::SelectionIntoArgument() anIndex = aLocOp->GetSubShapeIndex(myMainObj, aSubObjects[i]); if (anIndex >= 0) { if (subSelectionWay() != ALL_SUBSHAPES && - ! myMain2InPlaceIndices.IsBound(anIndex)) + ! myMain2InPlaceIndices.IsBound(anIndex)) continue; aMapIndex.Add(anIndex); } } } } - if (!myMainObj->_is_nil() && myIsShapeType) + if (!myMainObj->_is_nil() && myIsShapeType) if (subSelectionWay() == ALL_SUBSHAPES) localSelection(myMainObj, getShapeType()); else if (!myInPlaceObj->_is_nil()) @@ -582,8 +567,9 @@ void GroupGUI_GroupDlg::SelectionIntoArgument() //================================================================================= void GroupGUI_GroupDlg::ConstructorsClicked(int constructorId) { - if (!myIsShapeType && getConstructorId() != constructorId) + if (getConstructorId() != constructorId) setConstructorId(constructorId); + myIsShapeType = true; myIdList->clear(); activateSelection(); @@ -597,52 +583,52 @@ void GroupGUI_GroupDlg::ConstructorsClicked(int constructorId) //================================================================================= void GroupGUI_GroupDlg::selectAllSubShapes() { - if (CORBA::is_nil(myMainObj)) + if (CORBA::is_nil(myMainObj) || !myIsShapeType) return; GEOM::ListOfLong_var aSubShapes; - if (subSelectionWay() == ALL_SUBSHAPES) - { - if (!myIsShapeType) - return; - myIdList->clear(); - GEOM::GEOM_IShapesOperations_var aShOp = getGeomEngine()->GetIShapesOperations(getStudyId()); - aSubShapes = aShOp->SubShapeAllIDs(myMainObj, getShapeType(), false); + GEOM::GEOM_IShapesOperations_var aShOp = getGeomEngine()->GetIShapesOperations(getStudyId()); + aSubShapes = aShOp->SubShapeAllIDs(myMainObj, getShapeType(), false); + if (aSubShapes->length() > 0) { + if (subSelectionWay() == ALL_SUBSHAPES) + { + myIdList->clear(); - if (!aShOp->IsDone()) - return; - } - else - { - aSubShapes = new GEOM::ListOfLong(); - aSubShapes->length(myMain2InPlaceIndices.Extent()); - TColStd_DataMapIteratorOfDataMapOfIntegerInteger m2ip(myMain2InPlaceIndices); - for (int i = 0; m2ip.More(); i++, m2ip.Next()) - aSubShapes[ i ] = m2ip.Key(); - } - bool isBlocked = myIdList->signalsBlocked(); - myIdList->blockSignals(true); + if (!aShOp->IsDone()) + return; + } + else + { + aSubShapes = new GEOM::ListOfLong(); + aSubShapes->length(myMain2InPlaceIndices.Extent()); + TColStd_DataMapIteratorOfDataMapOfIntegerInteger m2ip(myMain2InPlaceIndices); + for (int i = 0; m2ip.More(); i++, m2ip.Next()) + aSubShapes[ i ] = m2ip.Key(); + } + bool isBlocked = myIdList->signalsBlocked(); + myIdList->blockSignals(true); - for (int i = 0, n = aSubShapes->length(); i < n; i++) { - CORBA::Long anIndex = aSubShapes[i]; - if (anIndex < 0) - continue; + for (int i = 0, n = aSubShapes->length(); i < n; i++) { + CORBA::Long anIndex = aSubShapes[i]; + if (anIndex < 0) + continue; - QListWidgetItem* anItem = 0; - QString text = QString("%1").arg(anIndex); - if (!myInPlaceObj->_is_nil()) { - QList found = myIdList->findItems(text, Qt::MatchExactly); - if (found.count()) anItem = found[0]; - } - if (!anItem) { - anItem = new QListWidgetItem(text); - myIdList->addItem(anItem); + QListWidgetItem* anItem = 0; + QString text = QString("%1").arg(anIndex); + if (!myInPlaceObj->_is_nil()) { + QList found = myIdList->findItems(text, Qt::MatchExactly); + if (found.count()) anItem = found[0]; + } + if (!anItem) { + anItem = new QListWidgetItem(text); + myIdList->addItem(anItem); + } + anItem->setSelected(true); } - anItem->setSelected(true); - } - myIdList->blockSignals(isBlocked); - highlightSubShapes(); + myIdList->blockSignals(isBlocked); + highlightSubShapes(); + } } //================================================================================= @@ -651,24 +637,19 @@ void GroupGUI_GroupDlg::selectAllSubShapes() //================================================================================= void GroupGUI_GroupDlg::add() { - TColStd_MapOfInteger aMap; - for (int i = 0, n = myIdList->count(); i < n; i++) - aMap.Add(myIdList->item(i)->text().toInt()); + SalomeApp_Application* app = myGeomGUI->getApp(); + if (!app) return; + LightApp_SelectionMgr* aSelMgr = app->selectionMgr(); + if (!aSelMgr) return; TColStd_IndexedMapOfInteger aMapIndex; + LightApp_SelectionMgr::MapEntryOfMapOfInteger aMapSubOwners; + aSelMgr->selectedSubOwners(aMapSubOwners); + if (aMapSubOwners.Size() == 1) + aMapIndex = LightApp_SelectionMgr::MapEntryOfMapOfInteger::Iterator(aMapSubOwners).Value(); - SALOME_ListIO aSelIOs; - SalomeApp_Application* app = myGeomGUI->getApp(); - if (app) { - LightApp_SelectionMgr* aSelMgr = app->selectionMgr(); - if (aSelMgr) { - LightApp_SelectionMgr::MapEntryOfMapOfInteger aMap; - aSelMgr->selectedSubOwners(aMap); - if (aMap.Size() == 1) - aMapIndex = LightApp_SelectionMgr::MapEntryOfMapOfInteger::Iterator(aMap).Value(); - } - } GEOM::ListOfGO anObjects; + // get selected sub-shapes of myInPlaceObj if (aMapIndex.Extent() > 0 && !myInPlaceObj->_is_nil()) { @@ -684,8 +665,11 @@ void GroupGUI_GroupDlg::add() // try to find out and process the object browser selection or InPlace sub-shapes if (!aMapIndex.Extent()) { - if (anObjects.length() == 0) + if (anObjects.length() == 0) { + SALOME_ListIO aSelIOs; + aSelMgr->selectedObjects(aSelIOs); GEOMBase::ConvertListOfIOInListOfGO(aSelIOs, anObjects); + } GEOM::GEOM_ILocalOperations_var aLocOp = getGeomEngine()->GetILocalOperations(getStudyId()); GEOM::GEOM_IShapesOperations_var aShapesOp = getGeomEngine()->GetIShapesOperations(getStudyId()); @@ -719,6 +703,10 @@ void GroupGUI_GroupDlg::add() } } + TColStd_MapOfInteger aMap; + for (int i = 0, n = myIdList->count(); i < n; i++) + aMap.Add(myIdList->item(i)->text().toInt()); + if (aMapIndex.Extent() >= 1) { bool isBlocked = myIdList->signalsBlocked(); myIdList->blockSignals(true); @@ -794,7 +782,12 @@ void GroupGUI_GroupDlg::setShapeType(const TopAbs_ShapeEnum theType) case TopAbs_SOLID: anId = 3; break; } setConstructorId(anId); - myIsShapeType = true; + if (!myIsShapeType) + { + myIsShapeType = true; + // workaround to avoid set checked button 0 + setConstructorId(anId); + } } //================================================================================= @@ -806,10 +799,10 @@ void GroupGUI_GroupDlg::activateSelection() globalSelection(GEOM_ALLSHAPES); // local selection - if (!myMainObj->_is_nil() && !myEditCurrentArgument - && myIsShapeType) // check if shape type is already choosen by user + if (!myMainObj->_is_nil() && + !myEditCurrentArgument && + myIsShapeType) // check if shape type is already choosen by user { - if (subSelectionWay() == ALL_SUBSHAPES) localSelection(myMainObj, getShapeType()); else if (!myInPlaceObj->_is_nil()) @@ -825,25 +818,24 @@ void GroupGUI_GroupDlg::activateSelection() //================================================================================= void GroupGUI_GroupDlg::updateState() { - bool isAdd = false; + SalomeApp_Application* app = myGeomGUI->getApp(); + if (!app) return; + LightApp_SelectionMgr* aSelMgr = app->selectionMgr(); + if (!aSelMgr) return; TColStd_IndexedMapOfInteger aMapIndex; + LightApp_SelectionMgr::MapEntryOfMapOfInteger aMapSubOwners; + aSelMgr->selectedSubOwners(aMapSubOwners); + if (aMapSubOwners.Size() == 1) + aMapIndex = LightApp_SelectionMgr::MapEntryOfMapOfInteger::Iterator(aMapSubOwners).Value(); - SALOME_ListIO aSelIOs; - SalomeApp_Application* app = myGeomGUI->getApp(); - if (app) { - LightApp_SelectionMgr* aSelMgr = app->selectionMgr(); - if (aSelMgr) { - LightApp_SelectionMgr::MapEntryOfMapOfInteger aMap; - aSelMgr->selectedSubOwners(aMap); - if (aMap.Size() == 1) - aMapIndex = LightApp_SelectionMgr::MapEntryOfMapOfInteger::Iterator(aMap).Value(); - } - } + bool isAdd = false; // try to find out and process the object browser selection if (!aMapIndex.Extent() && !CORBA::is_nil(myMainObj)) { GEOM::ListOfGO anObjects; + SALOME_ListIO aSelIOs; + aSelMgr->selectedObjects(aSelIOs); GEOMBase::ConvertListOfIOInListOfGO(aSelIOs, anObjects); GEOM::GEOM_ILocalOperations_var aLocOp = getGeomEngine()->GetILocalOperations(getStudyId()); @@ -897,12 +889,14 @@ void GroupGUI_GroupDlg::updateState() } isAdd = aMapIndex.Extent() > 0; - myAddBtn->setEnabled(!myEditCurrentArgument && !CORBA::is_nil(myMainObj) && isAdd); + bool hasSel = myIdList->selectedItems().count() > 0; + myRemBtn->setEnabled(hasSel); mySelectionWayGroupBox->setEnabled(!CORBA::is_nil(myMainObj)); mySelAllBtn->setEnabled(!CORBA::is_nil(myMainObj)); + mySelBtn2->setEnabled( subSelectionWay() != ALL_SUBSHAPES); myShape2Name->setEnabled(subSelectionWay() != ALL_SUBSHAPES); if (subSelectionWay() == ALL_SUBSHAPES) @@ -1077,18 +1071,3 @@ bool GroupGUI_GroupDlg::execute(ObjectList& objects) return true; } - -//================================================================ -// Function : getFather -// Purpose : Get father object for object to be added in study -// (called with addInStudy method) -//================================================================ -GEOM::GEOM_Object_ptr GroupGUI_GroupDlg::getFather(GEOM::GEOM_Object_ptr theObj) -{ - GEOM::GEOM_Object_var aFatherObj; - if (theObj->GetType() == GEOM_GROUP) { - GEOM::GEOM_IGroupOperations_var anOp = GEOM::GEOM_IGroupOperations::_narrow(getOperation()); - aFatherObj = anOp->GetMainShape(theObj); - } - return aFatherObj._retn(); -} diff --git a/src/GroupGUI/GroupGUI_GroupDlg.h b/src/GroupGUI/GroupGUI_GroupDlg.h index 337d0da4f..65bd9ba78 100644 --- a/src/GroupGUI/GroupGUI_GroupDlg.h +++ b/src/GroupGUI/GroupGUI_GroupDlg.h @@ -19,10 +19,10 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// GEOM GEOMGUI : GUI for Geometry component -// File : GroupGUI_GroupDlg.h -// Author : Sergey ANIKIN, Open CASCADE S.A.S. (sergey.anikin@opencascade.com) -// +// GEOM GEOMGUI : GUI for Geometry component +// File : GroupGUI_GroupDlg.h +// Author : Sergey ANIKIN, Open CASCADE S.A.S. (sergey.anikin@opencascade.com) + #ifndef GROUPGUI_GROUPDLG_H #define GROUPGUI_GROUPDLG_H @@ -58,8 +58,7 @@ protected: virtual GEOM::GEOM_IOperations_ptr createOperation(); virtual bool isValid( QString& ); virtual bool execute( ObjectList& ); - virtual GEOM::GEOM_Object_ptr getFather( GEOM::GEOM_Object_ptr ); - + void closeEvent( QCloseEvent* ); private slots: @@ -70,16 +69,16 @@ private slots: void SelectionIntoArgument(); void SetEditCurrentArgument(); void ConstructorsClicked( int ); - + void selectAllSubShapes(); void add(); void remove(); void selectionChanged(); - + private: void Init(); void enterEvent( QEvent* ); - int subSelectionWay() const; + int subSelectionWay() const; TopAbs_ShapeEnum getShapeType() const; void setShapeType( const TopAbs_ShapeEnum ); void activateSelection();