Salome HOME
Fix for Bug IPAL8945
[modules/visu.git] / src / VISUGUI / VisuGUI_EditContainerDlg.cxx
index 0d0d9c2ed1f2e9bf269c48d8e45a4c71f15f31ec..eed32a53721cc81c373f3585e982af23bb5df15d 100644 (file)
 
 
 #include "VisuGUI_EditContainerDlg.h"
+
 #include "VisuGUI.h"
+#include "VisuGUI_Tools.h"
+
 #include "VISU_Table_i.hh"
 
 #include "SalomeApp_Application.h"
 #include <qpushbutton.h>
 #include <qlabel.h>
 
-#include CORBA_SERVER_HEADER(VISU_Gen)
-#include CORBA_SERVER_HEADER(SALOMEDS_Attributes)
-
-//extern VisuGUI *visuGUI;
-
 using namespace std;
 
 
@@ -195,9 +193,10 @@ static const char * right_xpm[] = {
 static QPixmap MYRightPix(right_xpm);
 
 
-VisuGUI_EditContainerDlg::VisuGUI_EditContainerDlg (QWidget* parent, bool theIsModal)
-     : QDialog(parent, "VisuGUI_EditContainerDlg", theIsModal, WStyle_Customize |
-               WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu)
+VisuGUI_EditContainerDlg::VisuGUI_EditContainerDlg (VisuGUI* theModule, bool theIsModal)
+     : QDialog(VISU::GetDesktop(theModule), "VisuGUI_EditContainerDlg", theIsModal,
+               WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu),
+       myVisuGUI(theModule)
 {
   if (!theIsModal) {
     setWFlags(getWFlags() | WDestructiveClose);
@@ -274,7 +273,8 @@ VisuGUI_EditContainerDlg::VisuGUI_EditContainerDlg (QWidget* parent, bool theIsM
   buttonOk->setAutoDefault(TRUE);
   buttonOk->setDefault(TRUE);
   GroupButtonsLayout->addWidget(buttonOk, 0, 0);
-  GroupButtonsLayout->addItem(new QSpacerItem(5, 5, QSizePolicy::Expanding, QSizePolicy::Minimum), 0, 1);
+  GroupButtonsLayout->addItem(new QSpacerItem(5, 5, QSizePolicy::Expanding,
+                                              QSizePolicy::Minimum), 0, 1);
 
   QPushButton* buttonCancel = new QPushButton(tr("&Cancel") , GroupButtons, "buttonCancel");
   buttonCancel->setAutoDefault(TRUE);
@@ -288,60 +288,7 @@ VisuGUI_EditContainerDlg::VisuGUI_EditContainerDlg (QWidget* parent, bool theIsM
 
 void VisuGUI_EditContainerDlg::initFromPrsObject (VISU::Container_i* theContainer)
 {
-  SALOMEDS::Study_var aStudy = theContainer->GetStudyDocument();
-  SALOMEDS::SComponent_var aVisuSO = aStudy->FindComponent("VISU");
-  if (CORBA::is_nil(aVisuSO)) {
-    return;
-  }
-  QValueList<CurveStruct> aStudyCurves;
-  QValueList<CurveStruct> aContainerCurves;
-  // Find curves in container
-  for (int i = 1; i <= theContainer->GetNbCurves(); i++) {
-    VISU::Curve_i* aCurve = theContainer->GetCurve(i);
-    if (aCurve == NULL) continue;
-    CurveStruct aEntry;
-    aEntry.CurveName = aCurve->GetTitle();
-    aEntry.CurveEntry = aCurve->GetEntry();
-    SALOMEDS::SObject_var aTableSO = aStudy->FindObjectID(aCurve->GetTableID());
-    if (CORBA::is_nil(aTableSO)) continue;
-    aEntry.TableName = getSObjectName(aTableSO);
-    aContainerCurves.append(aEntry);
-    new QListViewItem(myContainerLst, aEntry.TableName, aEntry.CurveName, aEntry.CurveEntry);
-  }
-  // Find curves in study
-  SALOMEDS::ChildIterator_var aIter = aStudy->NewChildIterator(aVisuSO);
-  for (aIter->InitEx(true); aIter->More(); aIter->Next()) {
-    SALOMEDS::SObject_var aSObject = aIter->Value();
-    CORBA::Object_var anObject = VISU::SObjectToObject(aSObject);
-    VISU::Base_var aVisuObj = VISU::Base::_narrow(anObject);
-    if (!CORBA::is_nil(aVisuObj)) {
-      if (aVisuObj->GetType() == VISU::TCURVE) {
-       SALOMEDS::SObject_var aTableSO = aSObject->GetFather();
-       CurveStruct aEntry;
-       aEntry.TableName = getSObjectName(aTableSO);
-       aEntry.CurveName = getSObjectName(aSObject);
-       aEntry.CurveEntry = aSObject->GetID();
-       aStudyCurves.append(aEntry);
-      }
-    }
-  }
-  //Show Curves which are not in Curve
-  QValueList<CurveStruct>::iterator it;
-  QValueList<CurveStruct>::iterator it2;
-  bool isExist = false;
-  for (it = aStudyCurves.begin(); it != aStudyCurves.end(); ++it) {
-    for (it2 = aContainerCurves.begin(); it2 != aContainerCurves.end(); ++it2) {
-      if (isExist = ((*it).CurveEntry == (*it2).CurveEntry))
-       break;
-    }
-    if (!isExist)
-      new QListViewItem(myStudyLst, (*it).TableName, (*it).CurveName, (*it).CurveEntry);
-  }
-}
-
-/*void VisuGUI_EditContainerDlg::initFromPrsObject (VISU::Container_i* theContainer)
-{
-  _PTR(Study) aStudy = theContainer->GetStudyDocument();
+  _PTR(Study) aStudy = VISU::GetCStudy(VISU::GetAppStudy(myVisuGUI));
   _PTR(SComponent) aVisuSO = aStudy->FindComponent("VISU");
   if (!aVisuSO) {
     return;
@@ -373,7 +320,7 @@ void VisuGUI_EditContainerDlg::initFromPrsObject (VISU::Container_i* theContaine
        CurveStruct aEntry;
        aEntry.TableName = getSObjectName(aTableSO);
        aEntry.CurveName = getSObjectName(aSObject);
-       aEntry.CurveEntry = aSObject->GetID();
+       aEntry.CurveEntry = aSObject->GetID().c_str();
        aStudyCurves.append(aEntry);
       }
     }
@@ -390,35 +337,16 @@ void VisuGUI_EditContainerDlg::initFromPrsObject (VISU::Container_i* theContaine
     if (!isExist)
       new QListViewItem(myStudyLst, (*it).TableName, (*it).CurveName, (*it).CurveEntry);
   }
-}*/
-
-void VisuGUI_EditContainerDlg::storeToPrsObject (VISU::Container_i* theContainer)
-{
-  theContainer->Clear();
-
-  SALOMEDS::Study_var aStudy = theContainer->GetStudyDocument();
-  QListViewItem* anItem = myContainerLst->firstChild();
-  while (anItem) {
-    SALOMEDS::SObject_var aCurveSO = aStudy->FindObjectID(anItem->text(2));
-    if (!CORBA::is_nil(aCurveSO)) {
-      CORBA::Object_var aObject = VISU::SObjectToObject(aCurveSO);
-      if (!CORBA::is_nil(aObject)) {
-       VISU::Curve_i* aCurve = dynamic_cast<VISU::Curve_i*>(VISU::GetServant(aObject).in());
-       if (aCurve) theContainer->AddCurve(aCurve->_this());
-      }
-    }
-    anItem = anItem->nextSibling();
-  }
 }
 
-/*void VisuGUI_EditContainerDlg::storeToPrsObject (VISU::Container_i* theContainer)
+void VisuGUI_EditContainerDlg::storeToPrsObject (VISU::Container_i* theContainer)
 {
   theContainer->Clear();
 
-  _PTR(Study) aStudy = theContainer->GetStudyDocument();
+  _PTR(Study) aStudy = VISU::GetCStudy(VISU::GetAppStudy(myVisuGUI));
   QListViewItem* anItem = myContainerLst->firstChild();
   while (anItem) {
-    _PTR(SObject) aCurveSO = aStudy->FindObjectID(anItem->text(2));
+    _PTR(SObject) aCurveSO = aStudy->FindObjectID(anItem->text(2).latin1());
     if (aCurveSO) {
       CORBA::Object_var aObject = VISU::ClientSObjectToObject(aCurveSO);
       if (!CORBA::is_nil(aObject)) {
@@ -428,32 +356,19 @@ void VisuGUI_EditContainerDlg::storeToPrsObject (VISU::Container_i* theContainer
     }
     anItem = anItem->nextSibling();
   }
-}*/
-
-QString VisuGUI_EditContainerDlg::getSObjectName (SALOMEDS::SObject_ptr theSObject)
-{
-  if (CORBA::is_nil(theSObject)) return QString("");
-
-  SALOMEDS::GenericAttribute_var anAttr;
-  SALOMEDS::AttributeName_var    aName;
-  if (theSObject->FindAttribute(anAttr, "AttributeName")) {
-    aName = SALOMEDS::AttributeName::_narrow(anAttr);
-    return QString(aName->Value());
-  }
-  return QString("");
 }
 
-/*QString VisuGUI_EditContainerDlg::getSObjectName (_PTR(SObject) theSObject)
+QString VisuGUI_EditContainerDlg::getSObjectName (_PTR(SObject) theSObject)
 {
   if (!theSObject) return QString("");
 
   _PTR(GenericAttribute) anAttr;
   if (theSObject->FindAttribute(anAttr, "AttributeName")) {
     _PTR(AttributeName) aName (anAttr);
-    return QString(aName->Value());
+    return QString(aName->Value().c_str());
   }
   return QString("");
-}*/
+}
 
 void VisuGUI_EditContainerDlg::onLeftClicked()
 {