Salome HOME
bos #28928: Merge branch 'rnv/28928'
[modules/med.git] / src / MEDCalc / gui / DatasourceController.cxx
index 04beddd78aa65995295f8045ba72802a33d8356d..49a2a0720f8df68e45b3e771e5270fec7205a71e 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2021  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
@@ -75,7 +75,8 @@ void DatasourceController::createActions() {
   QString tooltip = tr("TIP_ADD_DATA_SOURCE");
   QString icon    = tr("ICO_DATASOURCE_ADD");
   int actionId;
-  actionId = _salomeModule->createStandardAction(label,this, SLOT(OnAddDatasource()),icon,tooltip);
+  actionId = _salomeModule->createStandardAction(label, this, SLOT(OnAddDatasource()),
+                                                 icon, tooltip, FIELDSOp::OpAddDataSource);
   _salomeModule->createTool(actionId, toolbarId);
 
   // This action has to be placed in the general file menu with the label "Import MED file"
@@ -220,9 +221,20 @@ void DatasourceController::OnAddImagesource()
 
 void DatasourceController::OnExpandField()
 {
+  SALOMEDS::Study_var aStudy = KERNEL::getStudyServant();
+  // check if reference to study is valid
+  if (CORBA::is_nil(aStudy)) 
+    return;
+
+  // check if reference to use case builder is valid
+  SALOMEDS::UseCaseBuilder_var useCaseBuilder = aStudy->GetUseCaseBuilder();
+  if (CORBA::is_nil(useCaseBuilder)) 
+    return;
+
+
   // Get the selected objects in the study (SObject)
   SALOME_StudyEditor::SObjectList* listOfSObject = _studyEditor->getSelectedObjects();
-  for (int i=0; i<listOfSObject->size(); i++) {
+  for (int i=0; i<(int)listOfSObject->size(); i++) {
     SALOMEDS::SObject_var soFieldseries = listOfSObject->at(i);
     std::string name(_studyEditor->getName(soFieldseries));
     if (soFieldseries->_is_nil() || name == "MEDCalc")
@@ -231,11 +243,11 @@ void DatasourceController::OnExpandField()
     // First retrieve the fieldseries id associated to this study object
     SALOMEDS::GenericAttribute_var anAttr;
     SALOMEDS::AttributeParameter_var aParam;
-    if ( soFieldseries->FindAttribute(anAttr,"AttributeParameter") ) {
-      aParam = SALOMEDS::AttributeParameter::_narrow(anAttr);
-      if (! aParam->IsSet(FIELD_SERIES_ID, PT_INTEGER))
-        return;
-    }
+    if ( !soFieldseries->FindAttribute(anAttr,"AttributeParameter") )
+      return;
+    aParam = SALOMEDS::AttributeParameter::_narrow(anAttr);
+    if (! aParam->IsSet(FIELD_SERIES_ID, PT_INTEGER))
+      return;
     long fieldseriesId = aParam->GetInt(FIELD_SERIES_ID);
     STDLOG("Expand the field timeseries "<<fieldseriesId);
 
@@ -259,6 +271,7 @@ void DatasourceController::OnExpandField()
       _studyEditor->setName(soField,label.c_str());
       _studyEditor->setParameterInt(soField, FIELD_ID, fieldHandler.id);
       _studyEditor->setParameterBool(soField,IS_IN_WORKSPACE,false);
+      useCaseBuilder->AppendTo(soField->GetFather(), soField);
     }
   }
   _salomeModule->updateObjBrowser(true);
@@ -284,11 +297,11 @@ void DatasourceController::OnUseInWorkspace() {
       return;
     SALOMEDS::GenericAttribute_var anAttr;
     SALOMEDS::AttributeParameter_var aParam;
-    if ( soField->FindAttribute(anAttr,"AttributeParameter") ) {
-      aParam = SALOMEDS::AttributeParameter::_narrow(anAttr);
-      if (! aParam->IsSet(IS_IN_WORKSPACE, PT_BOOLEAN))
-        return;
-    }
+    if ( !soField->FindAttribute(anAttr,"AttributeParameter") )
+      return;
+    aParam = SALOMEDS::AttributeParameter::_narrow(anAttr);
+    if (! aParam->IsSet(IS_IN_WORKSPACE, PT_BOOLEAN))
+      return;
     bool isInWorkspace = aParam->GetBool(IS_IN_WORKSPACE);
     if ( isInWorkspace ) {
       QMessageBox::warning(_salomeModule->getApp()->desktop(),
@@ -347,17 +360,17 @@ void DatasourceController::OnUseInWorkspace() {
   else {
     // In this case, we don't ask the user to specify an alias for
     // each item, we just import the whole set of items.
-    for (int i=0; i<listOfSObject->size(); i++) {
+    for (int i=0; i<(int)listOfSObject->size(); i++) {
       SALOMEDS::SObject_var soField = listOfSObject->at(i);
       if (soField->_is_nil())
         continue;
       SALOMEDS::GenericAttribute_var anAttr;
       SALOMEDS::AttributeParameter_var aParam;
-      if ( soField->FindAttribute(anAttr,"AttributeParameter") ) {
-        aParam = SALOMEDS::AttributeParameter::_narrow(anAttr);
-        if (! aParam->IsSet(IS_IN_WORKSPACE, PT_BOOLEAN))
-          return;
-      }
+      if ( !soField->FindAttribute(anAttr,"AttributeParameter") )
+        return;
+      aParam = SALOMEDS::AttributeParameter::_narrow(anAttr);
+      if (! aParam->IsSet(IS_IN_WORKSPACE, PT_BOOLEAN))
+        return;
       bool isInWorkspace = aParam->GetBool(IS_IN_WORKSPACE);
       if ( !isInWorkspace ) {
         if (! aParam->IsSet(FIELD_ID, PT_INTEGER))