]> SALOME platform Git repositories - modules/visu.git/commitdiff
Salome HOME
Apply button for Offset dialog
authorvsv <vsv@opencascade.com>
Tue, 17 May 2005 11:15:41 +0000 (11:15 +0000)
committervsv <vsv@opencascade.com>
Tue, 17 May 2005 11:15:41 +0000 (11:15 +0000)
src/VISUGUI/VisuGUI.cxx
src/VISUGUI/VisuGUI_OffsetDlg.cxx
src/VISUGUI/VisuGUI_OffsetDlg.h

index 199bedbf5cfe566dbc75df0f72c649617c240719..28f7edb404b2a8e77e2f858b48fa80eb4ad8ceb7 100644 (file)
@@ -4509,13 +4509,18 @@ void VisuGUI::SetActiveDialogBox(QDialog* aDlg)
 
 void VisuGUI::TranslatePrs()
 {
+
   if(MYDEBUG) MESSAGE("VisuGUI::DisplayOnlyPrs");
   CORBA::Object_var anObject = GetSelectedObj();
   if ( !CORBA::is_nil( anObject ) ) {
     // is it Prs3d object ?
     PortableServer::ServantBase_var aServant = VISU::GetServant(anObject);
     if(VISU::Prs3d_i* aPrsObject = dynamic_cast<VISU::Prs3d_i*>(aServant.in())){
-      float aOffset[3];
+      VisuGUI_OffsetDlg* aDlg = new VisuGUI_OffsetDlg(aPrsObject);
+      aDlg->show();
+    }
+  }
+      /*      float aOffset[3];
       aPrsObject->GetOffset(aOffset);
       VisuGUI_OffsetDlg aDlg;
       aDlg.setOffset(aOffset);
@@ -4544,7 +4549,7 @@ void VisuGUI::TranslatePrs()
        } 
       }
     }
-  }
+    }*/
 }
 
 
index 92f1ce016541441bc188942d1729ac7332649d6d..6914dfe0889f1656ee7baa1a8aae685e4941208c 100644 (file)
@@ -1,9 +1,15 @@
 
 #include "VisuGUI_OffsetDlg.h"
+#include "VisuGUI.h"
 
 #include "QAD_SpinBoxDbl.h"
 #include "QAD_Application.h"
 #include "QAD_Desktop.h"
+#include "QAD_RightFrame.h"
+
+#include "VTKViewer_ViewFrame.h"
+#include "VISU_Actor.h"
+#include "vtkRenderer.h"
 
 #include <qlayout.h>
 #include <qhbox.h>
 #define  MAXVAL 1e10
 
 
-VisuGUI_OffsetDlg::VisuGUI_OffsetDlg()
-: QDialog( QAD_Application::getDesktop(), 0, true, WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu )
+extern CORBA::Object_var GetSelectedObj(Handle(SALOME_InteractiveObject)* pIO=NULL, QAD_Study* theStudy=NULL, 
+                                       VISU::Storable::TRestoringMap* pMap=NULL);
+
+
+VisuGUI_OffsetDlg::VisuGUI_OffsetDlg(VISU::Prs3d_i* thePrs)
+: QDialog( QAD_Application::getDesktop(), 0, false, 
+          WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu | WDestructiveClose )
 {
+  myPrs = thePrs;
   setName( "VisuGUI_OffsetDlg" );
   setCaption( tr( "TIT_OFFSETDLG" ) );
   setSizeGripEnabled( TRUE );
@@ -66,14 +78,27 @@ VisuGUI_OffsetDlg::VisuGUI_OffsetDlg()
   GroupButtonsLayout->addWidget( buttonOk, 0, 0 );
   GroupButtonsLayout->addItem( new QSpacerItem( 5, 5, QSizePolicy::Expanding, QSizePolicy::Minimum ), 0, 1 );
 
+  QPushButton* buttonApply = new QPushButton( tr( "&Apply" ), GroupButtons, "buttonApply" );
+  buttonOk->setAutoDefault( TRUE );
+  GroupButtonsLayout->addWidget( buttonApply, 0, 2 );
+  GroupButtonsLayout->addItem( new QSpacerItem( 5, 5, QSizePolicy::Expanding, QSizePolicy::Minimum ), 0, 3 );
+
   QPushButton* buttonCancel = new QPushButton( tr( "&Cancel" ) , GroupButtons, "buttonCancel" );
   buttonCancel->setAutoDefault( TRUE );
-  GroupButtonsLayout->addWidget( buttonCancel, 0, 2 );
+  GroupButtonsLayout->addWidget( buttonCancel, 0, 4 );
 
   TopLayout->addWidget( GroupButtons );
 
   connect( buttonOk,     SIGNAL( clicked() ),      this, SLOT( accept() ) );
+  connect( buttonApply, SIGNAL( clicked() ),      this, SLOT( updateOffset() ) );
   connect( buttonCancel, SIGNAL( clicked() ),      this, SLOT( reject() ) );
+
+  float aOffset[3];
+  myPrs->GetOffset(aOffset);
+  myOldOffset[0] = aOffset[0];
+  myOldOffset[1] = aOffset[1];
+  myOldOffset[2] = aOffset[2];
+  setOffset(aOffset); 
 }
 
 
@@ -106,3 +131,44 @@ bool VisuGUI_OffsetDlg::isToSave() const
 {
   return mySaveChk->isChecked();
 }
+  
+
+void VisuGUI_OffsetDlg::updateOffset()
+{
+  float aOffset[3];
+  getOffset(aOffset);
+  if (isToSave())
+    myPrs->SetOffset(aOffset);
+
+  for(int i = 0, nbFrames = VisuGUI::GetActiveStudy()->getStudyFramesCount(); i < nbFrames; i++){
+    if(QAD_StudyFrame* aFrame = VisuGUI::GetActiveStudy()->getStudyFrame(i)){
+      QAD_ViewFrame* aVFrame = aFrame->getRightFrame()->getViewFrame();
+      if(VTKViewer_ViewFrame* aViewFrame = dynamic_cast<VTKViewer_ViewFrame*>(aVFrame)) {
+       if(VISU_Actor* anActor = VisuGUI::GetActor(myPrs,aViewFrame)) {
+         anActor->SetPosition(aOffset);
+         aViewFrame->getRenderer()->ResetCameraClippingRange(); 
+         aViewFrame->Repaint(); 
+
+         Handle(SALOME_InteractiveObject) anIO;
+         CORBA::Object_var anObject = GetSelectedObj(&anIO);
+         if ( !CORBA::is_nil( anObject ) ) 
+           aViewFrame->highlight(anIO, 1);
+       }
+      }
+    }
+  }
+}
+
+
+void VisuGUI_OffsetDlg::accept()
+{
+  updateOffset();
+  QDialog::accept();
+}
+
+void VisuGUI_OffsetDlg::reject()
+{
+  setOffset(myOldOffset);
+  updateOffset();
+  QDialog::reject();
+}
index 48703f1077ea4be5dc64351f2031bed50daaec6b..e4b94fc55178bfe8d8c28f2eb52a9aa9f05fcace 100644 (file)
@@ -3,6 +3,7 @@
 #define DIALOGBOX_OFFSET_H
 
 #include "QAD_SpinBoxDbl.h"
+#include "VISU_Prs3d_i.hh"
 
 // QT Includes
 #include <qdialog.h>
@@ -14,7 +15,7 @@ class VisuGUI_OffsetDlg: public QDialog
 {
   Q_OBJECT
  public:
-  VisuGUI_OffsetDlg();
+  VisuGUI_OffsetDlg(VISU::Prs3d_i* thePrs);
   ~VisuGUI_OffsetDlg() {};
   
   void setOffset(const float* theOffset);
@@ -24,12 +25,21 @@ class VisuGUI_OffsetDlg: public QDialog
   public slots:
     void onReset();
 
+  protected slots:
+    virtual void accept();
+    virtual void reject();
+    void updateOffset();
+
  private:
+  VISU::Prs3d_i*    myPrs;
+
   QAD_SpinBoxDbl*   myDxEdt;
   QAD_SpinBoxDbl*   myDyEdt;
   QAD_SpinBoxDbl*   myDzEdt;
 
   QCheckBox*        mySaveChk;
+
+  float myOldOffset[3];
 };
 
 #endif // DIALOGBOX_OFFSET_H