Salome HOME
Join modifications from branch OCC_debug_for_3_2_0b1
[modules/smesh.git] / src / SMESHGUI / SMESHGUI_SingleEditDlg.cxx
index fcf0682b49ef72c673973f5c70e453e60a7cb997..26760c33357a8fc8c26882e3648ef130d161903b 100755 (executable)
 #include "SMESH_Actor.h"
 #include "SMDS_Mesh.hxx"
 
-#include "SalomeApp_SelectionMgr.h"
+#include "LightApp_SelectionMgr.h"
+#include "LightApp_Application.h"
 #include "SUIT_ResourceMgr.h"
 #include "SUIT_MessageBox.h"
 #include "SUIT_Desktop.h"
+#include "SUIT_Session.h"
 
 #include "SVTK_Selector.h"
 #include "SVTK_ViewWindow.h"
@@ -158,6 +160,7 @@ QFrame* SMESHGUI_SingleEditDlg::createButtonFrame (QWidget* theParent)
   myOkBtn     = new QPushButton(tr("SMESH_BUT_OK"   ), aFrame);
   myApplyBtn  = new QPushButton(tr("SMESH_BUT_APPLY"), aFrame);
   myCloseBtn  = new QPushButton(tr("SMESH_BUT_CLOSE"), aFrame);
+  myHelpBtn   = new QPushButton (tr("SMESH_BUT_HELP"), aFrame);
 
   QSpacerItem* aSpacer = new QSpacerItem(0, 0, QSizePolicy::Expanding, QSizePolicy::Minimum);
 
@@ -167,6 +170,7 @@ QFrame* SMESHGUI_SingleEditDlg::createButtonFrame (QWidget* theParent)
   aLay->addWidget(myApplyBtn);
   aLay->addItem(aSpacer);
   aLay->addWidget(myCloseBtn);
+  aLay->addWidget(myHelpBtn);
 
   return aFrame;
 }
@@ -222,6 +226,7 @@ void SMESHGUI_SingleEditDlg::Init()
   connect(myOkBtn,    SIGNAL(clicked()), SLOT(onOk()));
   connect(myCloseBtn, SIGNAL(clicked()), SLOT(onClose()));
   connect(myApplyBtn, SIGNAL(clicked()), SLOT(onApply()));
+  connect(myHelpBtn,  SIGNAL(clicked()), SLOT(onHelp()));
 
   // selection and SMESHGUI
   connect(mySelectionMgr, SIGNAL(currentSelectionChanged()), SLOT(onSelectionDone()));
@@ -233,9 +238,6 @@ void SMESHGUI_SingleEditDlg::Init()
   myApplyBtn->setEnabled(false);
   setEnabled(true);
 
-  int x, y;
-  mySMESHGUI->DefineDlgPosition(this, x, y);
-  this->move(x, y);
   this->show();
 
   // set selection mode
@@ -264,13 +266,30 @@ void SMESHGUI_SingleEditDlg::onClose()
 {
   if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI ))
     aViewWindow->SetSelectionMode(ActorSelection);
-  mySelectionMgr->clearSelected();
+  //mySelectionMgr->clearSelected();
   disconnect(mySelectionMgr, 0, this, 0);
   disconnect(mySMESHGUI, 0, this, 0);
   mySMESHGUI->ResetState();
   reject();
 }
 
+//=================================================================================
+// function : onHelp()
+// purpose  :
+//=================================================================================
+void SMESHGUI_SingleEditDlg::onHelp()
+{
+  LightApp_Application* app = (LightApp_Application*)(SUIT_Session::session()->activeApplication());
+  if (app) 
+    app->onHelpContextModule(mySMESHGUI ? app->moduleName(mySMESHGUI->moduleName()) : QString(""), myHelpFileName);
+  else {
+    SUIT_MessageBox::warn1(0, QObject::tr("WRN_WARNING"),
+                          QObject::tr("EXTERNAL_BROWSER_CANNOT_SHOW_PAGE").
+                          arg(app->resourceMgr()->stringValue("ExternalBrowser", "application")).arg(myHelpFileName),
+                          QObject::tr("BUT_OK"));
+  }
+}
+
 //=======================================================================
 //function : findTriangles()
 //purpose  : find triangles sharing theNode1-theNode2 link
@@ -350,10 +369,10 @@ void SMESHGUI_SingleEditDlg::onTextChange (const QString& theNewText)
       // find a triangle and an edge nb
       const SMDS_MeshElement* tria[2];
       allOk &= a2Nodes[0] != a2Nodes[1] && findTriangles(a2Nodes[0],a2Nodes[1],tria[0],tria[1]);
-      if(allOk){
-       myBusy = true; // block onSelectionDone()
+      myBusy = true; // block onSelectionDone()
+      if(allOk)
+      {
        newIndices.Add(tria[0]->GetID());
-       mySelector->AddOrRemoveIndex(anIO,newIndices, true);
 
        const SMDS_MeshNode* a3Nodes [3];
        SMDS_ElemIteratorPtr it;
@@ -369,15 +388,15 @@ void SMESHGUI_SingleEditDlg::onTextChange (const QString& theNewText)
            }
          }
        }
-
-       newIndices.Clear();
        newIndices.Add(-edgeInd-1);
-       mySelector->AddOrRemoveIndex(anIO,newIndices,true);
-       myBusy = false;
        
        myOkBtn->setEnabled(true);
        myApplyBtn->setEnabled(true);
       }
+      mySelector->AddOrRemoveIndex(anIO,newIndices, false);
+      SMESH::GetViewWindow(mySMESHGUI)->highlight( anIO, true, true );
+
+      myBusy = false;
     }
   }
 }
@@ -407,19 +426,22 @@ void SMESHGUI_SingleEditDlg::onSelectionDone()
   myActor = SMESH::FindActorByEntry(anIO->getEntry());
   if(myActor){
     TVisualObjPtr aVisualObj = myActor->GetObject();
-    if(SMDS_Mesh* aMesh = aVisualObj->GetMesh()){
-      if(SMESH::GetEdgeNodes(mySelector, aVisualObj, anId1, anId2) >= 1){
+    if(SMDS_Mesh* aMesh = aVisualObj->GetMesh())
+    {
+      const SMDS_MeshElement* tria[2];
+      if( SMESH::GetEdgeNodes( mySelector, aVisualObj, anId1, anId2 ) >= 1 &&
+         findTriangles( aMesh->FindNode( anId1 ), aMesh->FindNode( anId2 ), tria[0],tria[1] ) )
+      {
        QString aText = QString("%1-%2").arg(anId1).arg(anId2);
        myBusy = true;
        myEdge->setText(aText);
        myBusy = false;
        
-       const SMDS_MeshElement* tria[2];
-       if (findTriangles(aMesh->FindNode(anId1), aMesh->FindNode(anId2), tria[0],tria[1])) {
-         myOkBtn->setEnabled(true);
-         myApplyBtn->setEnabled(true);
-       }
-      } else {
+       myOkBtn->setEnabled(true);
+       myApplyBtn->setEnabled(true);
+      }
+      else
+      {
        myEdge->clear();
       }
     }
@@ -504,7 +526,9 @@ bool SMESHGUI_SingleEditDlg::onApply()
 
   // update actor
   if (aResult) {
+    mySelector->ClearIndex();
     mySelectionMgr->setSelectedObjects(aList, false);
+    onSelectionDone();
     SMESH::UpdateView();
   }
 
@@ -523,6 +547,7 @@ SMESHGUI_TrianglesInversionDlg
 : SMESHGUI_SingleEditDlg(theModule,theName)
 {
   setCaption(tr("CAPTION"));
+  myHelpFileName = "/files/diagonal_iversion_of_elements.htm";
 }
 
 SMESHGUI_TrianglesInversionDlg::~SMESHGUI_TrianglesInversionDlg()
@@ -547,6 +572,7 @@ SMESHGUI_UnionOfTwoTrianglesDlg
 : SMESHGUI_SingleEditDlg(theModule,theName)
 {
   setCaption(tr("CAPTION"));
+  myHelpFileName = "/files/uniting_two_triangles.htm";
 }
 
 SMESHGUI_UnionOfTwoTrianglesDlg::~SMESHGUI_UnionOfTwoTrianglesDlg()