]> SALOME platform Git repositories - modules/kernel.git/commitdiff
Salome HOME
PAL8598: Provide an access to "Dump View" functionality from the context popup menu...
authorvsr <vsr@opencascade.com>
Fri, 15 Apr 2005 05:37:29 +0000 (05:37 +0000)
committervsr <vsr@opencascade.com>
Fri, 15 Apr 2005 05:37:29 +0000 (05:37 +0000)
src/OCCViewer/OCCViewer_ViewFrame.cxx
src/OCCViewer/OCCViewer_ViewPort.h
src/OCCViewer/OCCViewer_ViewPort3d.cxx
src/Plot2d/Plot2d_ViewFrame.cxx
src/Plot2d/Plot2d_ViewFrame.h
src/SALOMEGUI/QAD_ViewFrame.cxx
src/SALOMEGUI/QAD_ViewFrame.h
src/SALOMEGUI/QAD_msg_en.po
src/VTKViewer/VTKViewer_RenderWindow.cxx
src/VTKViewer/VTKViewer_RenderWindow.h
src/VTKViewer/VTKViewer_ViewFrame.cxx

index 90645fdb2256e293b762c5a2810737ff2e8ed581..8396a6a6c1db0997313abc986ed82a7c86db2ac3 100644 (file)
@@ -189,6 +189,8 @@ void OCCViewer_ViewFrame::initViewPort()
                        this, SIGNAL( vfKeyPress( QKeyEvent* ) ) ) );
   QAD_ASSERT( connect( myViewPort, SIGNAL( vpKeyRelease( QKeyEvent* ) ),
                        this, SIGNAL( vfKeyRelease( QKeyEvent* ) ) ) );
+  QAD_ASSERT( connect( myViewPort, SIGNAL( vpDumpView() ),
+                       this, SLOT( onProcessViewDump() ) ) );
 }
 
 //=======================================================================
index 6f80c7816025573f780a351ea09be051a94b9589..1ddf54a187c4cf6b2c7a94d980c1d9c83a0bfe72 100644 (file)
@@ -171,6 +171,8 @@ signals:
   void           vpPaint (QPaintEvent*);
   void           vpDrawExternal (QPainter* painter);
 
+  void            vpDumpView();
+
 protected slots:
  virtual void  onChangeBackgroundColor() = 0;
 
index 0ace89025e595e3354be5a7024d17fe80f65a3fc..6b39a2add4b5760917fce45767b9858be2e7e661 100644 (file)
@@ -99,6 +99,8 @@ void OCCViewer_ViewPort3d::onCreatePopup()
     int id;
     myIDs.append ( id = myPopup->insertItem (tr ("MEN_VP3D_CHANGEBGR")) );     
     QAD_ASSERT ( myPopup->connectItem ( id, this, SLOT(onChangeBackgroundColor())) );
+    myIDs.append ( id = myPopup->insertItem (tr ("MEN_VP3D_DUMPVIEW")) );      
+    QAD_ASSERT ( myPopup->connectItem ( id, this, SIGNAL(vpDumpView())) );
 //    }
   }
 }
index cde7a39613c5c7df7f04684a70a18f7b4cf821ad..50626fa196455bcfbd5d019fc0d8c0a5d777f7e5 100644 (file)
@@ -244,6 +244,13 @@ void Plot2d_ViewFrame::createActions()
   fitDataAction->setStatusTip ( tr( "PRP_PLOT2D_CHANGE_BACKGROUND" ) );
   myActions.insert( ChangeBackgroundId, changeBGAction );
   connect( changeBGAction, SIGNAL( activated() ), this, SLOT( onChangeBackground() ) );
+
+  // Dump View
+  QActionP* dumpViewAction = new QActionP ( tr( "MEN_VP3D_DUMPVIEW"),
+                                           tr( "MEN_VP3D_DUMPVIEW" ), 0, this );
+  dumpViewAction->setStatusTip ( tr( "MEN_VP3D_DUMPVIEW" ) );
+  myActions.insert( DumpViewId, dumpViewAction );
+  connect( dumpViewAction, SIGNAL( activated() ), this, SLOT( onProcessViewDump() ) );
 }
 /*!
   Gets window's central widget
@@ -288,6 +295,7 @@ void Plot2d_ViewFrame::onCreatePopup()
     // Change background
     myPopup->insertSeparator();
     myActions[ ChangeBackgroundId ]->addTo( myPopup );
+    myActions[ DumpViewId ]->addTo( myPopup );
   }
 }
 /*!
index 275c432fb843a4d25e7c4c9613ca3fee3ae5b926..c837cee50f9748ecd06ea95e5a97961ce5a035aa 100644 (file)
@@ -35,7 +35,7 @@ class QAD_EXPORT Plot2d_ViewFrame : public QAD_ViewFrame, public QAD_PopupClient
 
   enum { NoOpId, FitAllId, FitAreaId, ZoomId, PanId, DumpId, 
         ModeXLinearId, ModeXLogarithmicId, ModeYLinearId, ModeYLogarithmicId,
-        LegendId, CurvePointsId, CurveLinesId, CurveSplinesId, SettingsId, FitDataId, ChangeBackgroundId };
+        LegendId, CurvePointsId, CurveLinesId, CurveSplinesId, SettingsId, FitDataId, ChangeBackgroundId, DumpViewId };
 public:
   /* Construction/destruction */
   Plot2d_ViewFrame( QWidget* parent, const QString& title = "" );
index c22c7a4a8224e785529c5df99c060cc166fffdde..ff25d5aa302e1f422a9bcacabf074406eebf4df7 100644 (file)
@@ -78,7 +78,6 @@ void QAD_ViewFrame::onViewDump()
 {
   if (!getViewWidget())
     return;
-
   QApplication::setOverrideCursor( Qt::waitCursor );
   QPixmap px = QPixmap::grabWindow(getViewWidget()->winId());
   QApplication::restoreOverrideCursor();
@@ -105,3 +104,29 @@ void QAD_ViewFrame::onViewDump()
     }
   }
 }
+
+#define DUMP_EVENT QEvent::User + 123
+/*!
+   This method is used to dump the viewer contents to the image file
+   from the context popup menu (uses event mechanizm to assure redrawing
+   the viewer contents before dumping by sending custom event)
+*/
+void QAD_ViewFrame::onProcessViewDump() 
+{
+  qApp->postEvent( this, new QPaintEvent( QRect( 0, 0, width(), height() ), TRUE ) );
+  qApp->postEvent( this, new QCustomEvent( DUMP_EVENT ) );
+}
+
+/*!
+  Processes the custom event sent by onProcessViewDump() method to
+  call onViewDump() slot: dumping the view contents to the image file
+  (see desription for onProcessViewDump() method above)
+*/
+bool QAD_ViewFrame::event ( QEvent* e )
+{
+  if ( e->type() == DUMP_EVENT ) {
+    onViewDump();
+    return TRUE;
+  }
+  return QMainWindow::event( e );
+}
index 7ea86fb5fa03f17337564136d8f9782aea7c0ebe..572eccddf030ba9bba73eb5b944900b8fec07270 100644 (file)
@@ -51,6 +51,8 @@ public:
   QAD_ViewFrame(QWidget* parent = 0);
   virtual ~QAD_ViewFrame();
 
+  bool                   event ( QEvent* e );
+
   void                   cleanup();
 
   virtual ViewType       getTypeView() const = 0; 
@@ -128,6 +130,11 @@ public slots:
   virtual void           onRotateRight() {}
   virtual void           onRotateUp()    {}
   virtual void           onRotateDown()  {}
+
+  /* the next slot is used for dumping viewer contents to the image file;
+     called from the context popup menu
+  */
+  void                   onProcessViewDump();
 };
 
 #endif
index 28a42b0a2f639cefa20a0f742c35aad7d24ab58f..9e6d7c6b137a07497b31cc0194ebdc7b72a2ef67 100644 (file)
@@ -349,6 +349,9 @@ msgstr "Viewer"
 msgid "MEN_VP3D_CHANGEBGR"
 msgstr "Change background..."
 
+msgid "MEN_VP3D_DUMPVIEW"
+msgstr "Camera Dump..."
+
 msgid "MEN_APP_DISPLAY"
 msgstr "Display"
 
index 08dbc0edaaec4ce8c7245239b1cdfdbbd93428fc..bd97dd2020f204df191deeb7ea05a3e965410167 100644 (file)
@@ -176,6 +176,8 @@ void VTKViewer_RenderWindow::onCreatePopup()
     int id;
     myIDs.append ( id = myPopup->insertItem (tr ("MEN_VP3D_CHANGEBGR")) );     
     QAD_ASSERT ( myPopup->connectItem ( id, this, SLOT(onChangeBackgroundColor())) );
+    myIDs.append ( id = myPopup->insertItem (tr ("MEN_VP3D_DUMPVIEW")) );      
+    QAD_ASSERT ( myPopup->connectItem ( id, this, SIGNAL(DumpView())) );
 //    }
   }
 }
index 34fd61ff0aa51c79713a66da154eb13f897de19f..e19e67966dc72dea8099e72e25d6c5be93633325 100644 (file)
@@ -77,6 +77,7 @@ public QWidget, /*virtual public vtkRenderWindow, */
   void ButtonPressed(const QMouseEvent *event) ;
   void ButtonReleased(const QMouseEvent *event) ;
   void KeyPressed(QKeyEvent *event) ;
+  void DumpView();
 
  protected:
   vtkRenderWindow* myRW;
index 067cc6aee5640bf9f8d1166ac8ef0e4af10de2f0..783b60bae2b44c8973c3683935457ff8dfce6365 100644 (file)
@@ -90,6 +90,7 @@ VTKViewer_ViewFrame::VTKViewer_ViewFrame(QWidget* parent, const char* name)
 void VTKViewer_ViewFrame::InitialSetup() {
   m_RW = new VTKViewer_RenderWindow(this, "RenderWindow");
   m_RW->getRenderWindow()->AddRenderer(m_Renderer);
+  connect(m_RW, SIGNAL(DumpView()), this, SLOT(onProcessViewDump()));
 
   m_Renderer->GetActiveCamera()->ParallelProjectionOn();
   m_Renderer->LightFollowCameraOn();