-// Copyright (C) 2016 CEA/DEN, EDF R&D
+// Copyright (C) 2016-2020 CEA/DEN, EDF R&D
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
label = tr("LAB_PROCESSING_INTERPOLATE_FIELD");
icon = tr("ICO_PROCESSING_INTERPOLATE_FIELD");
- actionId = _salomeModule->createStandardAction(label,this, SLOT(OnInterpolateField()),icon,label);
+ actionId = _salomeModule->createStandardAction(label, this, SLOT(OnInterpolateField()),
+ icon, label, FIELDSOp::OpProcessingInterpolation);
_salomeModule->createTool(actionId, processingToolbarId);
_salomeModule->action(actionId)->setIconVisibleInMenu(true);
_salomeModule->createMenu(actionId, processingMenuId);
void
ProcessingController::OnChangeUnderlyingMesh()
{
- // We need a studyEditor updated on the active study
- _studyEditor->updateActiveStudy();
-
- // Get the selected objects in the study (SObject). In cas of a
+ // Get the selected objects in the study (SObject). In case of a
// multiple selection, we consider only the first item. At least one
// item must be selected.
SALOME_StudyEditor::SObjectList* listOfSObject = _studyEditor->getSelectedObjects();
if ( listOfSObject->size() > 0 ) {
- SALOMEDS::SObject_var soField = listOfSObject->at(0);
- std::string name(_studyEditor->getName(soField));
- if (soField->_is_nil() || name == "MEDCalc")
+ SALOMEDS::SObject_var soObj = listOfSObject->at(0);
+ std::string name(_studyEditor->getName(soObj));
+ if (soObj->_is_nil() || name == "MEDCalc")
return;
- SALOMEDS::GenericAttribute_var anAttr;
- SALOMEDS::AttributeParameter_var aParam;
- if ( soField->FindAttribute(anAttr,"AttributeParameter") ) {
- aParam = SALOMEDS::AttributeParameter::_narrow(anAttr);
- if (! aParam->IsSet(FIELD_SERIES_ID, PT_INTEGER))
+
+ int fieldId = _salomeModule->getIntParamFromStudyEditor(soObj, FIELD_ID);
+ if (fieldId < 0) { // is it a field series?
+ int fieldSeriesId = _salomeModule->getIntParamFromStudyEditor(soObj, FIELD_SERIES_ID);
+ // If fieldId and fieldSeriesId equals -1, then it means that it is not a field
+ // managed by the MED module, and we stop this function process.
+ if ( fieldSeriesId < 0)
+ return;
+ MEDCALC::FieldHandlerList* fieldHandlerList = MEDFactoryClient::getDataManager()->getFieldListInFieldseries(fieldSeriesId);
+ /* todo: always false!
+ if (fieldHandlerList->length() < 0)
+ return;
+ */
+ // For a field series, get the first real field entry:
+ MEDCALC::FieldHandler fieldHandler = (*fieldHandlerList)[0];
+ fieldId = fieldHandler.id;
+ if (fieldId < 0)
return;
}
- int fieldId = aParam->GetInt(FIELD_SERIES_ID);
+
// _GBO_ : the dialog should not be modal, so that we can choose a
// mesh in the browser. Then we have to emit a signal from the
// dialog.accept, connected to a slot of the DatasourceControler
void
ProcessingController::OnInterpolateField()
{
- // We need a studyEditor updated on the active study
- _studyEditor->updateActiveStudy();
-
// Get the selected objects in the study (SObject). In case of a
// multiple selection, we consider only the first item. At least one
// item must be selected.
SALOME_StudyEditor::SObjectList* listOfSObject = _studyEditor->getSelectedObjects();
if ( listOfSObject->size() > 0 ) {
- SALOMEDS::SObject_var soField = listOfSObject->at(0);
- std::string name(_studyEditor->getName(soField));
- if (soField->_is_nil() || name == "MEDCalc")
+ SALOMEDS::SObject_var soObj = listOfSObject->at(0);
+ std::string name(_studyEditor->getName(soObj));
+ if (soObj->_is_nil() || name == "MEDCalc")
return;
- SALOMEDS::GenericAttribute_var anAttr;
- SALOMEDS::AttributeParameter_var aParam;
- if ( soField->FindAttribute(anAttr,"AttributeParameter") ) {
- aParam = SALOMEDS::AttributeParameter::_narrow(anAttr);
- if (! aParam->IsSet(FIELD_SERIES_ID, PT_INTEGER))
+
+ int fieldId = _salomeModule->getIntParamFromStudyEditor(soObj, FIELD_ID);
+ if (fieldId < 0) { // is it a field series?
+ int fieldSeriesId = _salomeModule->getIntParamFromStudyEditor(soObj, FIELD_SERIES_ID);
+ // If fieldId and fieldSeriesId equals -1, then it means that it is not a field
+ // managed by the MED module, and we stop this function process.
+ if ( fieldSeriesId < 0)
+ return;
+ MEDCALC::FieldHandlerList* fieldHandlerList = MEDFactoryClient::getDataManager()->getFieldListInFieldseries(fieldSeriesId);
+ /* todo: always false!
+ if (fieldHandlerList->length() < 0)
+ return;
+ */
+ // For a field series, get the first real field entry:
+ MEDCALC::FieldHandler fieldHandler = (*fieldHandlerList)[0];
+ fieldId = fieldHandler.id;
+ if (fieldId < 0)
return;
}
- int fieldId = aParam->GetInt(FIELD_SERIES_ID);
+
// _GBO_ : the dialog should not be modal, so that we can choose a
// mesh in the browser. Then we have to emit a signal from the
// dialog.accept, connected to a slot of the DatasourceControler