+void HYDROGUI_CalculationOp::setAvailableGroups()
+{
+ HYDROGUI_CalculationDlg* aPanel =
+ ::qobject_cast<HYDROGUI_CalculationDlg*>( inputPanel() );
+
+ HYDROData_SequenceOfObjects aSeq = myEditedObject->GetGeometryGroups();
+ QStringList aList, anEntryList;
+ getNamesAndEntries( aSeq, aList, anEntryList );
+
+ QStringList aGroupsNames;
+
+ HYDROData_SequenceOfObjects anObjs = myEditedObject->GetGeometryObjects();
+ for( int anIndex = 1, aLength = anObjs.Length(); anIndex <= aLength; anIndex++ )
+ {
+ Handle_HYDROData_Object anObj = Handle_HYDROData_Object::DownCast( anObjs.Value( anIndex ) );
+ HYDROData_SequenceOfObjects aGroups = anObj->GetGroups();
+ for( int aGIndex = 1, aGLength = aGroups.Length(); aGIndex <= aGLength; aGIndex++ )
+ {
+ Handle_HYDROData_ShapesGroup aGroup = Handle_HYDROData_ShapesGroup::DownCast( aGroups.Value( aGIndex ) );
+ aGroupsNames.append( aGroup->GetName() );
+ }
+ }
+ if( myEditedObject->IsMustBeUpdated() )
+ myEditedObject->RemoveGeometryGroups();
+
+ aPanel->setAvailableGroups( aGroupsNames );
+ aPanel->includeGroups( aList );
+
+ bool isUpdated = myEditedObject->IsMustBeUpdated();
+}
+
+void HYDROGUI_CalculationOp::onAddGroups()
+{
+ HYDROGUI_CalculationDlg* aPanel =
+ ::qobject_cast<HYDROGUI_CalculationDlg*>( inputPanel() );
+ if ( !aPanel )
+ return;
+
+ // Add geometry objects selected in the module browser to the calculation case
+ QStringList aSelectedList = aPanel->getSelectedAvailableGroups();
+ if ( aSelectedList.isEmpty() || !confirmRegionsChange() )
+ return;
+
+ QStringList anAddedList;
+ for (int i = 0; i < aSelectedList.length(); i++)
+ {
+ Handle(HYDROData_ShapesGroup) aGroup = Handle(HYDROData_ShapesGroup)::DownCast(
+ HYDROGUI_Tool::FindObjectByName( module(), aSelectedList.at( i ) ) );
+ if ( aGroup.IsNull() )
+ continue;
+
+ if ( myEditedObject->AddGeometryGroup( aGroup ) )
+ anAddedList.append( aGroup->GetName() );
+ }