1 // Copyright (C) 2005 OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D
3 // This library is free software; you can redistribute it and/or
4 // modify it under the terms of the GNU Lesser General Public
5 // License as published by the Free Software Foundation; either
6 // version 2.1 of the License.
8 // This library is distributed in the hope that it will be useful
9 // but WITHOUT ANY WARRANTY; without even the implied warranty of
10 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11 // Lesser General Public License for more details.
13 // You should have received a copy of the GNU Lesser General Public
14 // License along with this library; if not, write to the Free Software
15 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
19 // SUIT_ViewWindow.cxx: implementation of the SUIT_ViewWindow class.
22 #include "SUIT_ViewWindow.h"
23 #include "SUIT_Desktop.h"
24 #include "SUIT_Application.h"
25 #include "SUIT_Study.h"
26 #include "SUIT_ViewManager.h"
27 #include "SUIT_Tools.h"
28 #include "SUIT_MessageBox.h"
30 #include <qpopupmenu.h>
31 #include <qapplication.h>
34 /*!\class SUIT_ViewWindow
35 * Class provide view window.
38 /*! Dump view custom event*/
39 const int DUMP_EVENT = QEvent::User + 123;
42 SUIT_ViewWindow::SUIT_ViewWindow(SUIT_Desktop* theDesktop)
43 : QMainWindow( theDesktop, "SUIT_ViewWindow", Qt::WDestructiveClose )
45 myDesktop = theDesktop;
47 if ( myDesktop->icon() )
48 setIcon( *myDesktop->icon() );
52 SUIT_ViewWindow::~SUIT_ViewWindow()
57 Sets new view manager for window
58 \param theManager - new view manager
60 void SUIT_ViewWindow::setViewManager( SUIT_ViewManager* theManager )
62 myManager = theManager;
66 \return view manager of window
68 SUIT_ViewManager* SUIT_ViewWindow::getViewManager() const
74 \return QImage, containing all scene rendering in window
76 QImage SUIT_ViewWindow::dumpView()
82 Saves image to file according to the format
84 \param fileName - name of file
85 \param format - string contains name of format (for example, "BMP"(default) or "JPEG", "JPG")
87 bool SUIT_ViewWindow::dumpViewToFormat( const QImage& img, const QString& fileName, const QString& format )
94 fmt = QString( "BMP" ); // default format
95 else if( fmt == "JPG" )
98 QApplication::setOverrideCursor( Qt::waitCursor );
99 bool res = img.save( fileName, fmt.latin1() );
100 QApplication::restoreOverrideCursor();
105 Saves scene rendering in window to file
106 \param fileName - name of file
107 \param format - string contains name of format (for example, "BMP"(default) or "JPEG", "JPG")
109 bool SUIT_ViewWindow::dumpViewToFormat( const QString& fileName, const QString& format )
111 return dumpViewToFormat( dumpView(), fileName, format );
115 Set or clear flag Qt::WDestructiveClose
117 void SUIT_ViewWindow::setDestructiveClose( const bool on )
120 setWFlags( WDestructiveClose );
122 clearWFlags( WDestructiveClose );
125 /*! Close event \a theEvent.
127 void SUIT_ViewWindow::closeEvent(QCloseEvent* theEvent)
129 // QMainWindow::closeEvent( theEvent );
130 emit closing( this );
133 /*! Context menu requested for event \a e.
135 void SUIT_ViewWindow::contextMenuEvent ( QContextMenuEvent * e )
137 if ( e->reason() != QContextMenuEvent::Mouse )
138 emit contextMenuRequested( e );
141 /*! Post events on dump view.
143 void SUIT_ViewWindow::onDumpView()
145 qApp->postEvent( this, new QPaintEvent( QRect( 0, 0, width(), height() ), TRUE ) );
146 qApp->postEvent( this, new QCustomEvent( DUMP_EVENT ) );
150 \return filters for image files
152 QString SUIT_ViewWindow::filter() const
154 return tr( "TLT_IMAGE_FILES" );
157 /*! Reaction view window on event \a e.
159 bool SUIT_ViewWindow::event( QEvent* e )
161 if ( e->type() == DUMP_EVENT )
164 if ( myManager && myManager->study() && myManager->study()->application() )
166 QImage im = dumpView();
169 SUIT_Application* app = myManager->study()->application();
170 QString fileName = app->getFileName( false, QString::null, filter(), tr( "TLT_DUMP_VIEW" ), 0 );
171 if( !fileName.isEmpty() )
173 QString fmt = SUIT_Tools::extension( fileName ).upper();
174 bOk = dumpViewToFormat( im, fileName, fmt );
178 bOk = true; // cancelled
182 SUIT_MessageBox::error1( this, tr( "ERROR" ), tr( "ERR_CANT_DUMP_VIEW" ), tr( "BUT_OK" ) );
186 return QMainWindow::event( e );
189 /*! Called by SUIT_Accel::onActivated() when a key accelerator was activated and this window was active
191 bool SUIT_ViewWindow::onAccelAction( int _action )
193 return action( _action );
196 /*! action handle standard action (zoom, pan) or custom action. to be redefined in successors.
198 bool SUIT_ViewWindow::action( const int )
204 \return string containing visual parameters of window
206 QString SUIT_ViewWindow::getVisualParameters()
212 Sets visual parameters of window by its string representation
213 \param parameters - string with visual parameters
215 void SUIT_ViewWindow::setVisualParameters( const QString& parameters )