From: ouv Date: Tue, 20 Apr 2010 07:45:43 +0000 (+0000) Subject: Refactoring (removing obsolete GUITOOLS and VVTK packages) + improvement of VISU_Tabl... X-Git-Tag: V5_1_main_20100422~1 X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=9d78dfe4240e5e32e70df8f34dee7ec776cde8c2;p=modules%2Fvisu.git Refactoring (removing obsolete GUITOOLS and VVTK packages) + improvement of VISU_TableDlg class, introducing edition and sorting features (intermediate state) --- diff --git a/src/GUITOOLS/Makefile.am b/src/GUITOOLS/Makefile.am deleted file mode 100644 index 7a30dd9b..00000000 --- a/src/GUITOOLS/Makefile.am +++ /dev/null @@ -1,52 +0,0 @@ -# Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE -# -# Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -# -# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -# -# VISU VISUGUI : GUI of VISU component -# File : Makefile.in -# Author : Marc Tajchman (CEA) -# Module : VISU -# $Header$ -# -include $(top_srcdir)/adm_local/unix/make_common_starter.am - -lib_LTLIBRARIES= libVISUGUITOOLS.la - -salomeinclude_HEADERS= \ - VisuGUI_TableDlg.h \ - VisuGUITools.h \ - VisuGUI_GUITools.h - -dist_libVISUGUITOOLS_la_SOURCES= \ - VisuGUI_TableDlg.cxx \ - VisuGUI_GUITools.cxx - -MOC_FILES= VisuGUI_TableDlg_moc.cxx -nodist_libVISUGUITOOLS_la_SOURCES=$(MOC_FILES) - -# additionnal information to compil and link file -libVISUGUITOOLS_la_CPPFLAGS= -ftemplate-depth-32 \ - $(QT_INCLUDES) $(VTK_INCLUDES) @CAS_CPPFLAGS@ @CAS_CXXFLAGS@ \ - $(PYTHON_INCLUDES) $(HDF5_INCLUDES) $(QWT_INCLUDES) \ - $(KERNEL_CXXFLAGS) $(GUI_CXXFLAGS) $(BOOST_CPPFLAGS) - -libVISUGUITOOLS_la_LDFLAGS= \ - $(KERNEL_LDFLAGS) -lSALOMELocalTrace \ - $(GUI_LDFLAGS) -lCAM -lsuit -lqtx -lSalomeApp diff --git a/src/GUITOOLS/VisuGUITools.h b/src/GUITOOLS/VisuGUITools.h deleted file mode 100755 index 87537d69..00000000 --- a/src/GUITOOLS/VisuGUITools.h +++ /dev/null @@ -1,47 +0,0 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// -// File : VisuGUITools.h -// Author : Oleg UVAROV -// Module : VISU -// -#ifndef _VisuGUITools_H_ -#define _VisuGUITools_H_ - -#ifdef WNT - #if defined VISU_GUITOOLS_EXPORTS || defined VISUGUITOOLS_EXPORTS - #if defined WIN32 - #define VISU_GUITOOLS_EXPORT __declspec( dllexport ) - #else - #define VISU_GUITOOLS_EXPORT - #endif - #else - #if defined WIN32 - #define VISU_GUITOOLS_EXPORT __declspec( dllimport ) - #else - #define VISU_GUITOOLS_EXPORT - #endif - #endif -#else - #define VISU_GUITOOLS_EXPORT -#endif - -#endif diff --git a/src/GUITOOLS/VisuGUI_GUITools.cxx b/src/GUITOOLS/VisuGUI_GUITools.cxx deleted file mode 100644 index c5162d71..00000000 --- a/src/GUITOOLS/VisuGUI_GUITools.cxx +++ /dev/null @@ -1,70 +0,0 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// -// File : VisuGUI_GUITools.cxx -// Author : Sergey ANIKIN, Open CASCADE S.A.S. -// Module : VISU -// - -#include "VisuGUI_GUITools.h" - -#include -#include - -#include -#include - -#include - -namespace VISU{ - void initSpinBox( SalomeApp_IntSpinBox* sb, - const int bottom, - const int top, - const int step ) - { - sb->setAcceptNames( false ); - sb->setRange( bottom, top ); - sb->setSingleStep( step ); - } - - void initSpinBox( SalomeApp_DoubleSpinBox* sb, - const double& bottom, - const double& top, - const double& step, - const char* quantity ) - { - // Obtain precision from preferences - SUIT_ResourceMgr* resMgr = SUIT_Session::session()->resourceMgr(); - int precision = resMgr->integerValue( "VISU", quantity, 3 ); - - sb->setPrecision ( precision ); - sb->setDecimals ( qAbs(precision) ); - sb->setRange ( bottom, top ); - sb->setSingleStep ( step ); - sb->setDefaultValue( bottom ); - sb->setAcceptNames ( false ); - - // Add a hint for the user saying how to tune precision - QString userPropName = QObject::tr( QString( "VISU_PREF_%1" ).arg( quantity ).toLatin1().constData() ); - sb->setProperty( "validity_tune_hint", - QVariant( QObject::tr( "VISU_PRECISION_HINT" ).arg( userPropName ) ) ); - } -} diff --git a/src/GUITOOLS/VisuGUI_GUITools.h b/src/GUITOOLS/VisuGUI_GUITools.h deleted file mode 100644 index 6f90bdc3..00000000 --- a/src/GUITOOLS/VisuGUI_GUITools.h +++ /dev/null @@ -1,41 +0,0 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// -// File : VisuGUI_GUITools.h -// Author : Sergey ANIKIN, Open CASCADE S.A.S. -// Module : VISU -// -#ifndef VISUGUI_GUITOOLS_H -#define VISUGUI_GUITOOLS_H - -#include "VisuGUITools.h" - -class SalomeApp_IntSpinBox; -class SalomeApp_DoubleSpinBox; - -namespace VISU{ - VISU_GUITOOLS_EXPORT - void initSpinBox( SalomeApp_IntSpinBox*, const int, const int, const int ); - VISU_GUITOOLS_EXPORT - void initSpinBox( SalomeApp_DoubleSpinBox*, const double&, const double&, const double&, const char* ); -} - -#endif diff --git a/src/GUITOOLS/VisuGUI_TableDlg.cxx b/src/GUITOOLS/VisuGUI_TableDlg.cxx deleted file mode 100644 index b782a881..00000000 --- a/src/GUITOOLS/VisuGUI_TableDlg.cxx +++ /dev/null @@ -1,1073 +0,0 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// -// File : VisuGUI_TableDlg.cxx -// Author : Vadim SANDLER -// Module : SALOME -// -#include "VisuGUI_TableDlg.h" - -#include "SUIT_Tools.h" -#include "SUIT_MessageBox.h" -#include "SUIT_ResourceMgr.h" -#include "SUIT_Session.h" - -#include "LightApp_Application.h" - -#include "CAM_Module.h" - -#include "SALOMEDSClient_Study.hxx" -#include "SALOMEDSClient_GenericAttribute.hxx" -#include "SALOMEDSClient_AttributeTableOfInteger.hxx" -#include "SALOMEDSClient_AttributeTableOfReal.hxx" -#include "SALOMEDSClient_StudyBuilder.hxx" - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "utilities.h" - -using namespace std; - -#define MARGIN_SIZE 11 -#define SPACING_SIZE 6 -#define SPACER_SIZE 5 -#define MIN_TABLE_WIDTH 200 -#define MIN_TABLE_HEIGHT 200 - -NumDelegateItem::NumDelegateItem( QObject* parent, NumValidator mode ) - : QItemDelegate( parent ), - myMode( mode ) -{ -} - -NumDelegateItem::~NumDelegateItem() -{ -} - -QWidget * NumDelegateItem::createEditor( QWidget * parent, - const QStyleOptionViewItem & option, - const QModelIndex & index ) const -{ - QLineEdit *editor = new QLineEdit(parent); - switch ( myMode ) - { - case NV_Int: - editor->setValidator( new QIntValidator( editor ) ); - break; - case NV_Real: - editor->setValidator( new QDoubleValidator( editor ) ); - break; - default: - editor->setText( "No validator!" ); - } - - return editor; -} - -void NumDelegateItem::setEditorData( QWidget * editor, - const QModelIndex & index ) const -{ - QLineEdit *aLE = qobject_cast(editor); - if ( !aLE ) - return; - - switch ( myMode ) - { - case NV_Int: - { - int value = index.model()->data(index, Qt::DisplayRole).toInt(); - aLE->setText( QString("%1").arg( value ) ); - break; - } - case NV_Real: - { - double value = index.model()->data(index, Qt::DisplayRole).toDouble(); - aLE->setText( QString("%1").arg( value ) ); - break; - } - default: - aLE->setText( "No validator!!!" ); - } -} - - - - - -/*class VisuGUI_Table : public QTableWidget { -public: - VisuGUI_Table( Orientation orient, QWidget* parent = 0 ) - : QTableWidget( parent ), myValidator( 0 ), myOrientation( orient ) {} - VisuGUI_Table( Orientation orient, int numRows, int numCols, QWidget* parent = 0 ) - : QTableWidget( numRows, numCols, parent ), myValidator( 0 ), myOrientation( orient ) {} - - void setValidator( QValidator* v = 0 ) { myValidator = v; } - bool isEditing() const { return QTable::isEditing(); } - -protected: - QWidget* createEditor ( int row, int col, bool initFromCell ) const - { - bool testUnits = ( myOrientation == Qt::Horizontal && col == 0 ) || ( myOrientation == Qt::Vertical && row == 0 ); - QWidget* wg = QTable::createEditor( row, col, initFromCell ); - if ( wg && wg->inherits("QLineEdit") && myValidator && !testUnits ) - (( QLineEdit*)wg)->setValidator( myValidator ); - return wg; - } - -protected: - QValidator* myValidator; - Orientation myOrientation; - };*/ - -/*! - Constructor -*/ -VisuGUI_TableDlg::VisuGUI_TableDlg( QWidget* parent, - _PTR(SObject) obj, - bool edit, - int which, - Qt::Orientation orient, - bool showColumnTitles ) - : QDialog( parent, Qt::WindowTitleHint | Qt::WindowSystemMenuHint ), - myIntTable( 0 ), myRealTable( 0 ) -{ - setWindowTitle( edit ? tr( "EDIT_TABLE_TLT" ) : tr( "VIEW_TABLE_TLT" ) ); - setSizeGripEnabled( true ); - - myObject = obj; - bool bHasIntTable = false; - bool bHasRealTable = false; - if ( myObject ) { - _PTR(GenericAttribute) anAttr; - bHasIntTable = myObject->FindAttribute( anAttr, "AttributeTableOfInteger"); - bHasRealTable = myObject->FindAttribute( anAttr, "AttributeTableOfReal"); - } - - QVBoxLayout* mainLayout = new QVBoxLayout( this ); - mainLayout->setMargin( MARGIN_SIZE ); - mainLayout->setSpacing( SPACING_SIZE ); - - bool bDoInt = which == ttInt || which == ttBoth || which == ttAuto && bHasIntTable; - bool bDoReal = which == ttReal || which == ttBoth || which == ttAuto && bHasRealTable; - - QWidget* top; - QVBoxLayout* tl; - if ( bDoInt && bDoReal ) { - top = new QTabWidget( this ); - //( ( QTabWidget* ) top) ->setMargin( MARGIN_SIZE ); - } - else { - top = new QWidget( this ); - tl = new QVBoxLayout( top ); tl->setMargin( 0 ); tl->setSpacing( SPACING_SIZE ); - } - - if ( bDoInt ) { - myIntTable = new VisuGUI_TableWidget( top, "myIntTable", edit, orient, showColumnTitles ); - //myIntTable->getTable()->setValidator( new QIntValidator( this ) ); - //QAbstractItemDelegate* item = myIntTable->getTable()->itemDelegate(); - myIntTable->getTable()->setItemDelegate( new NumDelegateItem( myIntTable, NumDelegateItem::NV_Int ) ); - //item->deleteLater(); - - if ( bDoInt && bDoReal ) - ( ( QTabWidget* )top )->addTab( myIntTable, tr( "TABLE_OF_INTEGER_TLT" ) ); - else - tl->addWidget( myIntTable ); - } - if ( bDoReal ) { - myRealTable = new VisuGUI_TableWidget( top, "myRealTable", edit, orient, showColumnTitles ); - //myRealTable->getTable()->setValidator( new QDoubleValidator( this ) ); - //QAbstractItemDelegate* item = myIntTable->getTable()->itemDelegate(); - myRealTable->getTable()->setItemDelegate( new NumDelegateItem( myRealTable, NumDelegateItem::NV_Real ) ); - //item->deleteLater(); - if ( bDoInt && bDoReal ) - ( ( QTabWidget* )top )->addTab( myRealTable, tr( "TABLE_OF_REAL_TLT" ) ); - else - tl->addWidget( myRealTable ); - } - if ( !bDoInt && !bDoReal ) { - QLabel *dumbLabel = new QLabel( tr( "ERR_TABLE_NOT_AVAILABLE" ), top ); - dumbLabel->setAlignment( Qt::AlignCenter ); - tl->addWidget( dumbLabel ); - } - - QHBoxLayout* btnLayout = new QHBoxLayout; - btnLayout->setMargin( 0 ); btnLayout->setSpacing( SPACING_SIZE ); - - myOKBtn = new QPushButton( tr( "BUT_OK" ), this ); - myHelpBtn = new QPushButton( tr( "BUT_HELP" ), this ); - if ( edit ) { - myCancelBtn = new QPushButton( tr( "BUT_CANCEL" ), this ); - btnLayout->addWidget( myOKBtn ); - btnLayout->addItem( new QSpacerItem( SPACER_SIZE, SPACER_SIZE, QSizePolicy::Expanding, QSizePolicy::Minimum ) ); - btnLayout->addWidget( myCancelBtn ); - btnLayout->addWidget( myHelpBtn ); - connect( myOKBtn, SIGNAL( clicked() ), this, SLOT( onOK() ) ); - connect( myCancelBtn, SIGNAL( clicked() ), this, SLOT( reject() ) ); - } - else { - btnLayout->addWidget( myOKBtn ); - btnLayout->addItem( new QSpacerItem( SPACER_SIZE, SPACER_SIZE, QSizePolicy::Expanding, QSizePolicy::Minimum ) ); - btnLayout->addWidget( myHelpBtn ); - connect( myOKBtn, SIGNAL( clicked() ), this, SLOT( accept() ) ); - } - connect( myHelpBtn, SIGNAL( clicked() ), this, SLOT( onHelp() ) ); - - mainLayout->addWidget( top ); - mainLayout->addLayout( btnLayout ); - - initDlg(); - resize( 500, 400 ); - SUIT_Tools::centerWidget( this, parent ); -} - -/*! - Destructor -*/ -VisuGUI_TableDlg::~VisuGUI_TableDlg() -{ -} - -/*! - button slot, saves table(s) - Called only in create/edit mode ( parameter for constructor is true ) -*/ -void VisuGUI_TableDlg::onOK() -{ - myOKBtn->setFocus(); // accept possible changes - bool done = true; - - if ( myObject ) { - _PTR(Study) study = myObject->GetStudy(); - _PTR(AttributeTableOfInteger) tblIntAttr; - _PTR(AttributeTableOfReal) tblRealAttr; - - if ( study ) { - _PTR(StudyBuilder) builder = study->NewBuilder(); - builder->NewCommand(); // start transaction !!!!!!!!!!!!!!!!!!!!!!!!!!!!! - try { - if ( myIntTable ) { - builder->RemoveAttribute( myObject, "AttributeTableOfInteger" ); - tblIntAttr = builder->FindOrCreateAttribute( myObject, "AttributeTableOfInteger" ); - - int i; - int nbRows = myIntTable->getNumRows(); - int nbCols = myIntTable->getNumCols(); - QString tlt = myIntTable->getTableTitle(); - QStringList rowTitles, colTitles, units; - myIntTable->getRowTitles( rowTitles ); - myIntTable->getColTitles( colTitles ); - myIntTable->getUnits( units ); - - if ( nbRows > 0) { - // data - int nRow = 0; - tblIntAttr->SetNbColumns( nbCols ); - for ( i = 0; i < nbRows; i++ ) { - QStringList data; - myIntTable->getRowData( i, data ); - bool bEmptyRow = true; - for ( int j = 0; j < data.count(); j++ ) { - if ( !data[ j ].isNull() ) { - tblIntAttr->PutValue( data[ j ].toInt(), nRow+1, j+1 ); - bEmptyRow = false; - } - } - if ( !bEmptyRow ) { // Skip rows with no data !!! - // set row title - tblIntAttr->SetRowTitle( nRow+1, rowTitles[ i ].isNull() ? "" : (const char*)rowTitles[ i ].toLatin1() ); - // set row unit - tblIntAttr->SetRowUnit( nRow+1, units[ i ].isNull() ? "" : (const char*)units[ i ].toLatin1() ); - nRow++; - } - } - if ( nRow > 0 ) { // Set columns only if table is not empty, otherwise exception is raised !!! - // column titles - for ( i = 0; i < colTitles.count(); i++ ) - tblIntAttr->SetColumnTitle( i+1, colTitles[ i ].isNull() ? "" : (const char*)colTitles[ i ].toLatin1() ); - } - } - // title - tblIntAttr->SetTitle( (const char*)myIntTable->getTableTitle().toLatin1() ); - } - if ( myRealTable ) { - builder->RemoveAttribute( myObject, "AttributeTableOfReal" ); - tblRealAttr = builder->FindOrCreateAttribute( myObject, "AttributeTableOfReal" ); - - int i; - int nbRows = myRealTable->getNumRows(); - int nbCols = myRealTable->getNumCols(); - QString tlt = myRealTable->getTableTitle(); - QStringList rowTitles, colTitles, units; - myRealTable->getRowTitles( rowTitles ); - myRealTable->getColTitles( colTitles ); - myRealTable->getUnits( units ); - - if ( nbRows > 0) { - // data - int nRow = 0; - tblRealAttr->SetNbColumns( nbCols ); - for ( i = 0; i < nbRows; i++ ) { - QStringList data; - myRealTable->getRowData( i, data ); - bool bEmptyRow = true; - for ( int j = 0; j < data.count(); j++ ) { - if ( !data[ j ].isNull() ) { - tblRealAttr->PutValue( data[ j ].toDouble(), nRow+1, j+1 ); - bEmptyRow = false; - } - } - if ( !bEmptyRow ) { // Skip rows with no data !!! - // set row title - tblRealAttr->SetRowTitle( nRow+1, rowTitles[ i ].isNull() ? "" : (const char*)rowTitles[ i ].toLatin1() ); - // set row unit - tblRealAttr->SetRowUnit( nRow+1, units[ i ].isNull() ? "" : (const char*)units[ i ].toLatin1() ); - nRow++; - } - } - if ( nRow > 0 ) { // Set columns only if table is not empty, otherwise exception is raised !!! - // column titles - for ( i = 0; i < colTitles.count(); i++ ) - tblRealAttr->SetColumnTitle( i+1, colTitles[ i ].isNull() ? "" : (const char*)colTitles[ i ].toLatin1() ); - } - } - // title - tblRealAttr->SetTitle( (const char*)myRealTable->getTableTitle().toLatin1() ); - } - if ( myIntTable || myRealTable) - builder->CommitCommand(); // commit transaction !!!!!!!!!!!!!!!!!!!!!!!!!!! - else - builder->AbortCommand(); // abort transaction !!!!!!!!!!!!!!!!!!!!!!!!!!! - } - catch( ... ) { - MESSAGE("VisuGUI_TableDlg::onOK : Exception has been caught !!!"); - builder->AbortCommand(); // abort transaction !!!!!!!!!!!!!!!!!!!!!!!!!!! - done = false; - SUIT_MessageBox::critical ( this, tr("ERR_ERROR"), tr("ERR_APP_EXCEPTION") ); - } - } - } - if ( done ) - accept(); -} - -/*! - button slot, shows corresponding help page -*/ -void VisuGUI_TableDlg::onHelp() -{ - QString aHelpFileName = "table_presentations_page.html"; - LightApp_Application* app = (LightApp_Application*)(SUIT_Session::session()->activeApplication()); - if (app) - app->onHelpContextModule(app->activeModule() ? app->moduleName(app->activeModule()->moduleName()) : QString(""), aHelpFileName); - else { - QString platform; -#ifdef WIN32 - platform = "winapplication"; -#else - platform = "application"; -#endif - SUIT_MessageBox::warning(0, QObject::tr("WRN_WARNING"), - QObject::tr("EXTERNAL_BROWSER_CANNOT_SHOW_PAGE"). - arg(app->resourceMgr()->stringValue("ExternalBrowser", platform)).arg(aHelpFileName) ); - } -} - -/*! - Populates table with data -*/ -void VisuGUI_TableDlg::initDlg() -{ - int i, j; - if ( myObject ) { - _PTR(GenericAttribute) anAttr; - _PTR(AttributeTableOfInteger) tblIntAttr; - _PTR(AttributeTableOfReal) tblRealAttr; - if ( myObject->FindAttribute( anAttr, "AttributeTableOfInteger") ) { - tblIntAttr = anAttr; - } - if ( myObject->FindAttribute( anAttr, "AttributeTableOfReal") ) { - tblRealAttr = anAttr; - } - // Table of integer - if ( tblIntAttr && myIntTable ) { - try { - // title - myIntTable->setTableTitle( tblIntAttr->GetTitle().c_str() ); - // nb of rows & cols - int nbRows = tblIntAttr->GetNbRows() ; - int nbCols = tblIntAttr->GetNbColumns(); - myIntTable->setNumRows( nbRows ); - myIntTable->setNumCols( nbCols ); - // rows titles - QStringList strlist; - vector rowTitles = tblIntAttr->GetRowTitles(); - for ( i = 0; i < nbRows; i++ ) { - if ( rowTitles.size() > 0 ) - strlist.append( rowTitles[i].c_str() ); - else - strlist.append( "" ); - } - myIntTable->setRowTitles( strlist ); - // columns titles - strlist.clear(); - vector colTitles = tblIntAttr->GetColumnTitles(); - for ( i = 0; i < nbCols; i++ ) { - if ( colTitles.size() > 0 ) - strlist.append( colTitles[i].c_str() ); - else - strlist.append( "" ); - } - myIntTable->setColTitles( strlist ); - // units - strlist.clear(); - vector rowUnits = tblIntAttr->GetRowUnits(); - if ( rowUnits.size() > 0 ) { - for ( i = 0; i < nbRows; i++ ) - strlist.append( rowUnits[i].c_str() ); - myIntTable->setUnits( strlist ); - } - // data - for ( i = 1; i <= nbRows; i++ ) { - strlist.clear(); - for ( j = 1; j <= nbCols; j++ ) { - if ( tblIntAttr->HasValue( i, j ) ) - strlist.append( QString::number( tblIntAttr->GetValue( i, j ) ) ); - else - strlist.append( QString::null ); - } - myIntTable->setRowData( i-1, strlist ); - } - myIntTable->adjustTable(); - } - catch( ... ) { - MESSAGE("VisuGUI_TableDlg::initDlg : Exception has been caught !!!"); - } - } - // Table of real - if ( tblRealAttr && myRealTable ) { - try { - // title - myRealTable->setTableTitle( tblRealAttr->GetTitle().c_str() ); - // nb of rows & cols - int nbRows = tblRealAttr->GetNbRows() ; - int nbCols = tblRealAttr->GetNbColumns(); - myRealTable->setNumRows( nbRows ); - myRealTable->setNumCols( nbCols ); - // rows titles - QStringList strlist; - vector rowTitles = tblRealAttr->GetRowTitles(); - for ( i = 0; i < nbRows; i++ ) { - if ( rowTitles.size() > 0 ) - strlist.append( rowTitles[i].c_str() ); - else - strlist.append( "" ); - } - myRealTable->setRowTitles( strlist ); - // columns titles - strlist.clear(); - vector colTitles = tblRealAttr->GetColumnTitles(); - for ( i = 0; i < nbCols; i++ ) { - if ( colTitles.size() > 0 ) - strlist.append( colTitles[i].c_str() ); - else - strlist.append( "" ); - } - myRealTable->setColTitles( strlist ); - // units - strlist.clear(); - vector rowUnits = tblRealAttr->GetRowUnits(); - if ( rowUnits.size() > 0 ) { - for ( i = 0; i < nbRows; i++ ) - strlist.append( rowUnits[i].c_str() ); - myRealTable->setUnits( strlist ); - } - // data - for ( i = 1; i <= nbRows; i++ ) { - strlist.clear(); - for ( j = 1; j <= nbCols; j++ ) { - if ( tblRealAttr->HasValue( i, j ) ) - strlist.append( QString::number( tblRealAttr->GetValue( i, j ) ) ); - else - strlist.append( QString::null ); - } - myRealTable->setRowData( i-1, strlist ); - } - myRealTable->adjustTable(); - } - catch( ... ) { - MESSAGE("VisuGUI_TableDlg::initDlg : Exception has been caught !!!"); - } - } - } -} - -/*! - Provides help on F1 button click -*/ -void VisuGUI_TableDlg::keyPressEvent( QKeyEvent* e ) -{ - QDialog::keyPressEvent( e ); - if ( e->isAccepted() ) - return; - - if ( e->key() == Qt::Key_F1 ) - { - e->accept(); - onHelp(); - } -} - -/*! - Constructor -*/ -VisuGUI_TableWidget::VisuGUI_TableWidget( QWidget* parent, - const char* name, - bool edit, - Qt::Orientation orient, - bool showColumnTitles ) - : QWidget( parent ), myOrientation( orient ) -{ - QGridLayout* mainLayout = new QGridLayout( this ); - mainLayout->setMargin( 0 ); - mainLayout->setSpacing( SPACING_SIZE ); - - myTitleEdit = new QLineEdit( this ); - myTitleEdit->setAlignment( Qt::AlignCenter ); - myTitleEdit->setReadOnly( !edit ); - QFont fnt = myTitleEdit->font(); - fnt.setBold( true ); - myTitleEdit->setFont( fnt ); - - //myTable = new VisuGUI_Table( orient, this ); - myTable = new QTableWidget( 5, 5, this ); - //myTable->setNumRows( 5 ); - //myTable->setNumCols( 5 ); - myTable->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Expanding ) ); - myTable->setMinimumSize( MIN_TABLE_WIDTH, MIN_TABLE_HEIGHT ); - myTable->setSelectionMode( QAbstractItemView::SingleSelection ); - myTable->setShowGrid( true ); - myTable->horizontalHeader()->setMovable( false ); - myTable->verticalHeader()->setMovable( false ); - //myTable->setColumnMovingEnabled( false ); - //myTable->setRowMovingEnabled( false ); - myTable->setDragEnabled( false ); - //myTable->setReadOnly( !edit ); - myTable->setEditTriggers( edit ? QAbstractItemView::AllEditTriggers : QAbstractItemView::NoEditTriggers ); - - setUnitsTitle( tr( "UNITS_TLT" ) ); - - if ( !showColumnTitles ) { - if ( myOrientation == Qt::Horizontal ) { - myTable->horizontalHeader()->hide(); - //myTable->setTopMargin( 0 ); - } - else { - myTable->verticalHeader()->hide(); - //myTable->setLeftMargin( 0 ); - } - } - - mainLayout->addWidget( myTitleEdit, 0, 0 ); - mainLayout->addWidget( myTable, 1, 0 ); - - if ( edit ) { - myAddRowBtn = new QPushButton( tr( "ADD_ROW_BTN" ), this ); - myDelRowBtn = new QPushButton( tr( "REMOVE_ROW_BTN" ), this ); - myAddColBtn = new QPushButton( tr( "ADD_COLUMN_BTN" ), this ); - myDelColBtn = new QPushButton( tr( "REMOVE_COLUMN_BTN" ), this ); - myAdjustBtn = new QPushButton( tr( "ADJUST_CELLS_BTN" ), this ); - mySelectAllBtn = new QPushButton( tr( "SELECT_ALL_BTN" ), this ); - myClearBtn = new QPushButton( tr( "CLEAR_BTN"), this ); - QVBoxLayout* btnLayout = new QVBoxLayout; btnLayout->setMargin( 0 ); btnLayout->setSpacing( SPACING_SIZE ); - btnLayout->addWidget( myAddRowBtn ); - btnLayout->addWidget( myDelRowBtn ); - btnLayout->addWidget( myAddColBtn ); - btnLayout->addWidget( myDelColBtn ); - btnLayout->addStretch(); - btnLayout->addWidget( myAdjustBtn ); - btnLayout->addStretch(); - btnLayout->addWidget( mySelectAllBtn ); - btnLayout->addWidget( myClearBtn ); - mainLayout->addLayout( btnLayout, 1, 1 ); - connect( myTable, SIGNAL( selectionChanged() ), this, SLOT( updateButtonsState() ) ); - connect( myTable, SIGNAL( currentChanged( int, int) ), this, SLOT( updateButtonsState() ) ); - connect( myAddRowBtn, SIGNAL( clicked() ), this, SLOT( addRow() ) ); - connect( myAddColBtn, SIGNAL( clicked() ), this, SLOT( addCol() ) ); - connect( myDelRowBtn, SIGNAL( clicked() ), this, SLOT( delRow() ) ); - connect( myDelColBtn, SIGNAL( clicked() ), this, SLOT( delCol() ) ); - connect( myAdjustBtn, SIGNAL( clicked() ), this, SLOT( adjustTable() ) ); - connect( mySelectAllBtn, SIGNAL( clicked() ), this, SLOT( selectAll() ) ); - connect( myClearBtn, SIGNAL( clicked() ), this, SLOT( clearTable() ) ); - myTable->horizontalHeader()->installEventFilter( this ); - myTable->verticalHeader()->installEventFilter( this ); - myTable->installEventFilter( this ); - } - updateButtonsState(); -} -/*! - Destructor -*/ -VisuGUI_TableWidget::~VisuGUI_TableWidget() -{ -} -/*! - Sets table title -*/ -void VisuGUI_TableWidget::setTableTitle( const QString& title ) -{ - myTitleEdit->setText( title ); -} -/*! - Gets table title -*/ -QString VisuGUI_TableWidget::getTableTitle() -{ - return myTitleEdit->text(); -} -/*! - Sets total number of rows -*/ -void VisuGUI_TableWidget::setNumRows( const int num ) -{ - myOrientation == Qt::Horizontal ? myTable->setRowCount( num ) : myTable->setColumnCount( num ); -} -/*! - Gets total number of rows -*/ -int VisuGUI_TableWidget::getNumRows() -{ - return myOrientation == Qt::Horizontal ? myTable->rowCount() : myTable->columnCount(); -} -/*! - Sets total number of columns -*/ -void VisuGUI_TableWidget::setNumCols( const int num ) -{ - // !!! first column contains units !!! - myOrientation == Qt::Horizontal ? myTable->setColumnCount( num+1 ) : myTable->setRowCount( num+1 ); -// myOrientation == Qt::Horizontal ? myTable->setColumnReadOnly( 0, true ) : myTable->setRowReadOnly( 0, true ); -} -/*! - Gets total number of columns -*/ -int VisuGUI_TableWidget::getNumCols() -{ - // !!! first column contains units !!! - return myOrientation == Qt::Horizontal ? myTable->columnCount()-1 : myTable->rowCount()-1; -} -/*! - Sets rows titles -*/ -void VisuGUI_TableWidget::setRowTitles( QStringList& tlts ) -{ - QStringList aLabels; - for ( int i = 0; i < tlts.count(); i++ ) - tlts[i].isNull() ? aLabels.append("") : aLabels.append( tlts[i] ); - - myOrientation == Qt::Horizontal ? - myTable->setVerticalHeaderLabels( aLabels ) : - myTable->setHorizontalHeaderLabels( aLabels ); - - // myTable->verticalHeader()->setLabel( i, tlts[i] ) : - //myTable->horizontalHeader()->setLabel( i, tlts[i] ); - //} -} -/*! - Gets rows titles -*/ -void VisuGUI_TableWidget::getRowTitles( QStringList& tlts ) -{ - tlts.clear(); - if ( myOrientation == Qt::Horizontal ) { - for ( int i = 0; i < myTable->rowCount(); i++ ) { - tlts.append( myTable->verticalHeaderItem(i) ? myTable->verticalHeaderItem(i)->text() : "" ); - } - } - else { - for ( int i = 0; i < myTable->columnCount(); i++ ) { - tlts.append( myTable->horizontalHeaderItem(i) ? myTable->horizontalHeaderItem(i)->text() : "" ); - } - } -} -/*! - Sets columns titles -*/ -void VisuGUI_TableWidget::setColTitles( QStringList& tlts ) -{ - QStringList aLabels; - - // !!! first column contains units !!! - aLabels.append(""); // it'll be initialized below - in setUnitsTitle() method - - for ( int i = 0; i < tlts.count(); i++ ) - tlts[i].isNull() ? aLabels.append("") : aLabels.append( tlts[i] ); - - myOrientation == Qt::Horizontal ? - myTable->setHorizontalHeaderLabels( aLabels ) : - myTable->setVerticalHeaderLabels( aLabels ); - - setUnitsTitle( tr( "UNITS_TLT" ) ); -} -/*! - Sets columns titles -*/ -void VisuGUI_TableWidget::getColTitles( QStringList& tlts ) -{ - // !!! first column contains units !!! - tlts.clear(); - if ( myOrientation == Qt::Horizontal ) { - for ( int i = 1; i < myTable->columnCount(); i++ ) { - tlts.append( myTable->horizontalHeaderItem(i) ? myTable->horizontalHeaderItem(i)->text() : "" ); - } - } - else { - for ( int i = 1; i < myTable->rowCount(); i++ ) { - tlts.append( myTable->verticalHeaderItem(i) ? myTable->verticalHeaderItem(i)->text() : "" ); - } - } -} -/*! - Sets units title -*/ -void VisuGUI_TableWidget::setUnitsTitle( const QString& tlt ) { - // !!! first column contains units !!! - myTable->model()->setHeaderData( 0, myOrientation, QVariant(tlt.isNull() ? "" : tlt), Qt::DisplayRole ); -} -/*! - Sets units -*/ -void VisuGUI_TableWidget::setUnits( QStringList& units ) -{ - QAbstractTableModel* aModel = qobject_cast( myTable->model() ); - if ( aModel ) - { - QModelIndex anIndex; - for ( int i = 0; i < units.count(); i++ ) - { - myOrientation == Qt::Horizontal ? - anIndex = aModel->index( i, 0 ) : - anIndex = aModel->index( 0, i ); - - aModel->setData( anIndex, QVariant( units[i].isNull() ? "" : units[i] ) ); - } - } -} -/*! - Gets units -*/ -void VisuGUI_TableWidget::getUnits( QStringList& units ) -{ - units.clear(); - QAbstractTableModel* aModel = qobject_cast( myTable->model() ); - if ( aModel ) - { - if ( myOrientation == Qt::Horizontal ) - { - for ( int i = 0; i < myTable->rowCount(); i++ ) - units.append( aModel->index( i, 0 ).data().toString() ); - } - else { - for ( int i = 0; i < myTable->columnCount(); i++ ) - units.append( aModel->index( 0, i ).data().toString() ); - } - } -} -/*! - Sets row data -*/ -void VisuGUI_TableWidget::setRowData( int row, QStringList& data ) -{ - QAbstractTableModel* aModel = qobject_cast( myTable->model() ); - if ( aModel ) - { - QModelIndex anIndex; - if ( row >= 0 && row < getNumRows() ) { - for ( int i = 0; i < data.count(); i++ ) - { - myOrientation == Qt::Horizontal ? anIndex = aModel->index( row, i+1 ) : - anIndex = aModel->index( i+1, row ); - aModel->setData( anIndex, QVariant( data[i] ) ); - - } - } - } -} -/*! - Gets row data -*/ -void VisuGUI_TableWidget::getRowData( int row, QStringList& data ) -{ - data.clear(); - QAbstractTableModel* aModel = qobject_cast( myTable->model() ); - if ( aModel ) - { - if ( row >= 0 && row < getNumRows() ) - { - if ( myOrientation == Qt::Horizontal ) - { - for ( int i = 1; i < myTable->columnCount(); i++ ) - data.append( aModel->index( row, i ).data().toString() ); - } - else { - for ( int i = 1; i < myTable->rowCount(); i++ ) - data.append( aModel->index( i, row ).data().toString() ); - } - } - } -} -/*! - Adjusts table cell to see contents, button slot -*/ -void VisuGUI_TableWidget::adjustTable() -{ - myTable->resizeRowsToContents(); - myTable->resizeColumnsToContents(); -} -/*! - Called when selection changed in table -*/ -void VisuGUI_TableWidget::updateButtonsState() -{ - if ( myTable->editTriggers() == QAbstractItemView::NoEditTriggers ) - return; - bool bDR = false; // - bool bDC = false; // - bool bSA = false; // button slot -*/ -void VisuGUI_TableWidget::selectAll() -{ - /*myTable->clearSelection(); - QTableSelection ts; - ts.init( 0, 0 ); ts.expandTo( myTable->numRows()-1, myTable->numCols()-1 ); - myTable->addSelection( ts );*/ - myTable->selectAll(); - updateButtonsState(); -} -/*! - button slot -*/ -void VisuGUI_TableWidget::clearTable() -{ - /*int nbSel = myTable->numSelections(); - for ( int i = 0; i < nbSel; i++ ) { - QTableSelection ts = myTable->selection( i ); - for ( int j = ts.topRow(); j < ts.bottomRow()+1; j++) { - if ( myOrientation == Qt::Vertical && j == 0 ) { -// continue; // UNITS - } - for ( int k = ts.leftCol(); k < ts.rightCol()+1; k++) { - if ( myOrientation == Qt::Horizontal && k == 0 ) { -// continue; // UNITS - } - myTable->clearCell( j, k ); - } - } - } - if ( nbSel == 0 ) - myTable->clearCell( myTable->currentRow(), myTable->currentColumn() ); - myTable->clearSelection();*/ - myTable->clearContents(); - updateButtonsState(); -} -/*! - Event filter - handles titles editing -*/ -bool VisuGUI_TableWidget::eventFilter( QObject* o, QEvent* e ) -{ - if ( e->type() == QEvent::MouseButtonDblClick) { - //TODO - /*QMouseEvent* me = ( QMouseEvent* )e; - if ( me->button() == Qt::LeftButton && (myTable->editTriggers() != QAbstractItemView::NoEditTriggers ) ) { - if ( o == myTable->horizontalHeader() ) { - for ( int i = 0; i < myTable->horizontalHeader()->count(); i++ ) { - QRect rect = myTable->horizontalHeader()->sectionRect( i ); - rect.addCoords( 1, 1, -1, -1 ); - if ( rect.contains( myTable->horizontalHeader()->mapFromGlobal( me->globalPos() ) ) ) { - if ( myOrientation == Qt::Vertical || i != 0 ) { - bool bOk; - QString tlt = QInputDialog::getText( tr( "SET_TITLE_TLT" ), - tr( "TITLE_LBL" ), - QLineEdit::Normal, - myTable->horizontalHeader()->label( i ), - &bOk, - this ); - if ( bOk && !tlt.isNull() ) - myTable->horizontalHeader()->setLabel( i, tlt ); - break; - } - } - } - } - if ( o == myTable->verticalHeader() ) { - for ( int i = 0; i < myTable->verticalHeader()->count(); i++ ) { - QRect rect = myTable->verticalHeader()->sectionRect( i ); - rect.addCoords( 1, 1, -1, -1 ); - if ( rect.contains( myTable->verticalHeader()->mapFromGlobal( me->globalPos() ) ) ) { - if ( myOrientation == Qt::Horizontal || i != 0 ) { - bool bOk; - QString tlt = QInputDialog::getText( tr( "SET_TITLE_TLT" ), - tr( "TITLE_LBL" ), - QLineEdit::Normal, - myTable->verticalHeader()->label( i ), - &bOk, - this ); - if ( bOk && !tlt.isNull() ) - myTable->verticalHeader()->setLabel( i, tlt ); - break; - } - } - } - } - }*/ - } - else if ( e->type() == QEvent::KeyRelease && o == myTable ) { - QKeyEvent* ke = (QKeyEvent*)e; - if ( ke->key() == Qt::Key_Delete && (myTable->editTriggers() != QAbstractItemView::NoEditTriggers) ) { - clearTable(); - } - else if ( ke->key() == Qt::Key_Backspace && (myTable->editTriggers() != QAbstractItemView::NoEditTriggers) ) { - clearTable(); - int i = myTable->currentRow(); - int j = myTable->currentColumn() - 1; - if ( j < 0 ) { j = myTable->columnCount()-1; i--; } - if ( i >= 0 && j >= 0 ) - myTable->setCurrentCell( i, j ); - } - } - return QWidget::eventFilter( o, e ); -} diff --git a/src/GUITOOLS/VisuGUI_TableDlg.h b/src/GUITOOLS/VisuGUI_TableDlg.h deleted file mode 100644 index 9f708ae7..00000000 --- a/src/GUITOOLS/VisuGUI_TableDlg.h +++ /dev/null @@ -1,150 +0,0 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// -// File : VisuGUI_TableDlg.h -// Author : Vadim SANDLER -// Module : VISU -// -#ifndef VisuGUI_TABLE_DLG_H -#define VisuGUI_TABLE_DLG_H - -#include -#include -#include -#include - -class QTableWidget; -class VisuGUI_TableWidget; - -#include - -#include "VisuGUITools.h" - -class VISU_GUITOOLS_EXPORT VisuGUI_TableDlg : public QDialog -{ - Q_OBJECT - -public: - - enum { ttNone, ttInt, ttReal, ttBoth, ttAuto }; - - VisuGUI_TableDlg( QWidget* parent, - _PTR(SObject) obj, - bool edit = false, - int which = ttAuto, - Qt::Orientation orient = Qt::Horizontal, - bool showColumnTitles = true ); - ~VisuGUI_TableDlg(); - -private: - void keyPressEvent( QKeyEvent* e ); - -public slots: - void onOK(); - void onHelp(); - -private: - void initDlg(); - -private: - VisuGUI_TableWidget* myIntTable; - VisuGUI_TableWidget* myRealTable; - QPushButton* myOKBtn; - QPushButton* myCancelBtn; - QPushButton* myHelpBtn; - - _PTR(SObject) myObject; -}; - -class VISU_GUITOOLS_EXPORT VisuGUI_TableWidget : public QWidget -{ - Q_OBJECT -public: - VisuGUI_TableWidget( QWidget* parent = 0, - const char* name = 0, - bool edit = false, - Qt::Orientation orient = Qt::Horizontal, - bool showColumnTitles = true ); - ~VisuGUI_TableWidget(); - - void setTableTitle( const QString& title ); - QString getTableTitle(); - void setNumRows( const int num ); - int getNumRows(); - void setNumCols( const int num ); - int getNumCols(); - void setRowTitles( QStringList& tlts ); - void getRowTitles( QStringList& tlts ); - void setColTitles( QStringList& tlts ); - void getColTitles( QStringList& tlts ); - void setUnitsTitle( const QString& tlt ); - void setUnits( QStringList& units ); - void getUnits( QStringList& units ); - void setRowData( int row, QStringList& data ); - void getRowData( int row, QStringList& data ); - - QTableWidget* getTable() { return myTable; } - QLineEdit* getTitleEdit() { return myTitleEdit; } - - bool eventFilter( QObject* o, QEvent* e); - -public slots: - void updateButtonsState(); - void addRow(); - void addCol(); - void delRow(); - void delCol(); - void adjustTable(); - void selectAll(); - void clearTable(); - -private: - QLineEdit* myTitleEdit; - QTableWidget* myTable; - QPushButton* myAddRowBtn; - QPushButton* myAddColBtn; - QPushButton* myDelRowBtn; - QPushButton* myDelColBtn; - QPushButton* myAdjustBtn; - QPushButton* mySelectAllBtn; - QPushButton* myClearBtn; - Qt::Orientation myOrientation; -}; - -class VISU_GUITOOLS_EXPORT NumDelegateItem: public QItemDelegate -{ -public: - enum NumValidator{ NV_Int, NV_Real }; - - NumDelegateItem( QObject* parent, NumValidator mode = NV_Int ); - virtual ~NumDelegateItem(); - - virtual QWidget * createEditor( QWidget * parent, - const QStyleOptionViewItem & option, - const QModelIndex & index ) const; - virtual void setEditorData( QWidget * editor, - const QModelIndex & index ) const; -private: - int myMode; -}; - -#endif // VisuGUI_TABLE_DLG_H - diff --git a/src/VVTK/Makefile.am b/src/VVTK/Makefile.am deleted file mode 100755 index c739d489..00000000 --- a/src/VVTK/Makefile.am +++ /dev/null @@ -1,67 +0,0 @@ -# Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE -# -# Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -# -# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -# -# File : Makefile.in -# Author : Alexander Solovyov(OCN) -# Module : VVTK -# $Header: -# -include $(top_srcdir)/adm_local/unix/make_common_starter.am - -lib_LTLIBRARIES= libVVTK.la - -# header files -salomeinclude_HEADERS= \ - VVTK.h \ - VVTK_PrimitiveBox.h \ - VVTK_SizeBox.h - -dist_libVVTK_la_SOURCES= \ - VVTK_PrimitiveBox.cxx \ - VVTK_SizeBox.cxx - -MOC_FILES= \ - VVTK_PrimitiveBox_moc.cxx \ - VVTK_SizeBox_moc.cxx - -nodist_libVVTK_la_SOURCES=$(MOC_FILES) - -libVVTK_la_CPPFLAGS= \ - $(QT_INCLUDES) \ - @CAS_CXXFLAGS@ @CAS_CPPFLAGS@ \ - $(VTK_INCLUDES) \ - $(BOOST_CPPFLAGS) \ - $(KERNEL_CXXFLAGS) \ - $(GUI_CXXFLAGS) \ - $(MED_CXXFLAGS) \ - -I$(srcdir)/../OBJECT -I$(srcdir)/../PIPELINE -I$(srcdir)/../CONVERTOR \ - -I$(srcdir)/../GUITOOLS - -libVVTK_la_LDFLAGS= \ - ../OBJECT/libVisuObject.la \ - ../PIPELINE/libVisuPipeLine.la \ - ../CONVERTOR/libVisuConvertor.la \ - ../GUITOOLS/libVISUGUITOOLS.la \ - $(KERNEL_LDFLAGS) -lOpUtil \ - $(GUI_LDFLAGS) -lsuit -lCAM -lSalomeObject -lSVTK \ - $(QT_MT_LIBS) \ - $(OCC_LIBS) \ - $(VTK_LIBS) diff --git a/src/VVTK/VVTK.h b/src/VVTK/VVTK.h deleted file mode 100755 index 9564091c..00000000 --- a/src/VVTK/VVTK.h +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// -#ifdef WNT -#if defined VISU_VVTK_EXPORTS || defined VVTK_EXPORTS -#define VVTK_EXPORT __declspec(dllexport) -#else -#define VVTK_EXPORT __declspec(dllimport) -#endif -#else -#define VVTK_EXPORT -#endif - -#if defined WNT -#pragma warning ( disable: 4251 ) -#endif diff --git a/src/VVTK/VVTK_ImageWriter.cxx b/src/VVTK/VVTK_ImageWriter.cxx deleted file mode 100755 index 326498f2..00000000 --- a/src/VVTK/VVTK_ImageWriter.cxx +++ /dev/null @@ -1,114 +0,0 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// -// SALOME VTKViewer : build VTK viewer into Salome desktop -// File : -// Author : -// Module : -// $Header$ -// -#include "VVTK_ImageWriter.h" - -#include - -#include "utilities.h" - -#include -#include -#include -#include - -#ifdef _DEBUG_ -static int MYDEBUG = 0; -#else -static int MYDEBUG = 0; -#endif - - -//---------------------------------------------------------------------------- -VVTK_ImageWriter -::VVTK_ImageWriter(QSemaphore* theSemaphore, - vtkImageData* theImageData, - const std::string& theName, - int theProgressive, - int theQuality): - mySemaphore(theSemaphore), - myImageData(theImageData), - myName(theName), - myProgressive(theProgressive), - myQuality(theQuality), - myConstraint16Flag(true) -{} - -//---------------------------------------------------------------------------- -VVTK_ImageWriter -::~VVTK_ImageWriter() -{ - if(MYDEBUG) MESSAGE("VVTK_ImageWriter::~VVTK_ImageWriter - this = "< anImageClip; - // - if(myConstraint16Flag){ - int uExtent[6]; - myImageData->UpdateInformation(); - myImageData->GetUpdateExtent(uExtent); - unsigned int width = uExtent[1] - uExtent[0] + 1; - unsigned int height = uExtent[3] - uExtent[2] + 1; - width = (width / 16) * 16; - height= (height / 16) * 16; - uExtent[1] = uExtent[0] + width - 1; - uExtent[3] = uExtent[2] + height - 1; - // - anImageClip = vtkImageClip::New(); - anImageClip->Delete(); - - anImageClip->SetInput(myImageData); - anImageClip->SetOutputWholeExtent(uExtent); - anImageClip->ClipDataOn(); - anImageData = anImageClip->GetOutput(); - } - // - aWriter->WriteToMemoryOff(); - aWriter->SetFileName(myName.c_str()); - aWriter->SetQuality(myQuality); - aWriter->SetProgressive(myProgressive); - aWriter->SetInput(anImageData); - aWriter->Write(); - - aWriter->Delete(); - myImageData->Delete(); - - if(MYDEBUG) MESSAGE("VVTK_ImageWriter::run "<< - "- this = "< - -#include - -#include "utilities.h" - -#include - -#ifdef _DEBUG_ -static int MYDEBUG = 0; -#else -static int MYDEBUG = 0; -#endif - -//---------------------------------------------------------------------------- -VVTK_ImageWriterMgr -::VVTK_ImageWriterMgr() -{ - int aMax = std::numeric_limits::max() / 2; - mySemaphore = new QSemaphore(aMax); - mySemaphore->acquire( aMax ); - if(MYDEBUG) MESSAGE("VVTK_ImageWriterMgr::VVTK_ImageWriterMgr "<< - //"- total = "<total()<< - "; available = "<available() ); -} - - -//---------------------------------------------------------------------------- -VVTK_ImageWriterMgr -::~VVTK_ImageWriterMgr() -{ - Stop(); - delete mySemaphore; -} - - -//---------------------------------------------------------------------------- -void -VVTK_ImageWriterMgr -::StartImageWriter(vtkImageData *theImageData, - const std::string& theName, - const int theProgressive, - const int theQuality) -{ - VVTK_ImageWriter *anImageWriter = - new VVTK_ImageWriter(mySemaphore, - theImageData, - theName, - theProgressive, - theQuality); - myThreads.push_back(anImageWriter); - - anImageWriter->start(); - -} - - -//---------------------------------------------------------------------------- -void -VVTK_ImageWriterMgr -::Stop() -{ - if(MYDEBUG) MESSAGE("VVTK_ImageWriterMgr::Stop "<< - //"- total = "<total()<< - "; available = "<available() ); - if(MYDEBUG) MESSAGE("VVTK_ImageWriterMgr::Stop - *mySemaphore += "<acquire( myThreads.size() ); - - for(size_t anId = 0, anEnd = myThreads.size(); anId < anEnd; anId++){ - VVTK_ImageWriter* anImageWriter = myThreads[anId]; - anImageWriter->wait(); - delete anImageWriter; - } - myThreads.clear(); -} diff --git a/src/VVTK/VVTK_ImageWriterMgr.h b/src/VVTK/VVTK_ImageWriterMgr.h deleted file mode 100755 index dcc196e9..00000000 --- a/src/VVTK/VVTK_ImageWriterMgr.h +++ /dev/null @@ -1,64 +0,0 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// -// SALOME VTKViewer : build VTK viewer into Salome desktop -// File : -// Author : -// Module : -// $Header$ -// -#ifndef _VVTK_ImageWriterMgr_Header_File_ -#define _VVTK_ImageWriterMgr_Header_File_ - -#include -#include - -class QString; -class vtkImageData; -class VVTK_ImageWriter; -class QSemaphore; - -class VVTK_ImageWriterMgr -{ - public: - VVTK_ImageWriterMgr(); - ~VVTK_ImageWriterMgr(); - - void - StartImageWriter(vtkImageData *theImageData, - const std::string& theName, - const int theProgressive, - const int theQuality); - - void - Stop(); - - typedef std::vector TWriterThreads; - - protected: - TWriterThreads myThreads; - - QSemaphore* mySemaphore; -}; - - -#endif - diff --git a/src/VVTK/VVTK_InteractorStyle.cxx b/src/VVTK/VVTK_InteractorStyle.cxx deleted file mode 100644 index c50c8cd0..00000000 --- a/src/VVTK/VVTK_InteractorStyle.cxx +++ /dev/null @@ -1,292 +0,0 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// -// SALOME VTKViewer : build VTK viewer into Salome desktop -// File : VVTK_InteractorStyle.cxx -// Author : Christophe ATTANASIO -// Module : SALOME -// $Header$ -// -#include "VVTK_InteractorStyle.h" -#include "VISU_GaussPtsSettings.h" -#include "SVTK_Selector.h" -#include "VISU_Event.h" - -#include -#include -#include -#include -#include -#include - - -//---------------------------------------------------------------------------- -vtkStandardNewMacro(VVTK_InteractorStyle); -//---------------------------------------------------------------------------- - -VVTK_InteractorStyle -::VVTK_InteractorStyle(): - myIsMidButtonDown( false ), - myIsLeftButtonDown( false ), - mySMDecreaseMagnificationBtn(10), - mySMIncreaseMagnificationBtn(11) -{ -} - -//---------------------------------------------------------------------------- -VVTK_InteractorStyle -::~VVTK_InteractorStyle() -{ -} - -//---------------------------------------------------------------------------- -void -VVTK_InteractorStyle -::OnLeftButtonDown(int ctrl, int shift, - int x, int y) -{ - myIsLeftButtonDown = true; - - if (this->HasObserver(vtkCommand::LeftButtonPressEvent)) { - this->InvokeEvent(vtkCommand::LeftButtonPressEvent,NULL); - return; - } - this->FindPokedRenderer(x, y); - if (this->CurrentRenderer == NULL) { - return; - } - myShiftState = shift; - // finishing current viewer operation - if (State != VTK_INTERACTOR_STYLE_CAMERA_NONE) { - onFinishOperation(); - startOperation(VTK_INTERACTOR_STYLE_CAMERA_NONE); - } - myOtherPoint = myPoint = QPoint(x, y); - if (ForcedState != VTK_INTERACTOR_STYLE_CAMERA_NONE) { - startOperation(ForcedState); - } - else { - if (!(ctrl||shift)){ - if (myIsMidButtonDown){ - startOperation(VTK_INTERACTOR_STYLE_CAMERA_ZOOM); - } - else{ - startOperation(VTK_INTERACTOR_STYLE_CAMERA_ROTATE); - } - } - } - return; -} - -//---------------------------------------------------------------------------- -void -VVTK_InteractorStyle -::OnMiddleButtonDown(int ctrl, - int shift, - int x, int y) -{ - myIsMidButtonDown = true; - - if (this->HasObserver(vtkCommand::MiddleButtonPressEvent)) { - this->InvokeEvent(vtkCommand::MiddleButtonPressEvent,NULL); - return; - } - this->FindPokedRenderer(x, y); - if (this->CurrentRenderer == NULL) { - return; - } - myShiftState = shift; - // finishing current viewer operation - if (State != VTK_INTERACTOR_STYLE_CAMERA_NONE) { - onFinishOperation(); - startOperation(VTK_INTERACTOR_STYLE_CAMERA_NONE); - } - myOtherPoint = myPoint = QPoint(x, y); - if (ForcedState != VTK_INTERACTOR_STYLE_CAMERA_NONE) { - startOperation(ForcedState); - } - else { - if (!(ctrl||shift)){ - if ( myIsLeftButtonDown ){ - startOperation(VTK_INTERACTOR_STYLE_CAMERA_ZOOM); - } - else{ - startOperation(VTK_INTERACTOR_STYLE_CAMERA_PAN); - } - } - } -} - -//---------------------------------------------------------------------------- -void -VVTK_InteractorStyle -::OnLeftButtonUp(int ctrl, int shift, int x, int y) -{ - myIsLeftButtonDown = false; - SVTK_InteractorStyle::OnLeftButtonUp( ctrl, shift, x, y ); - - if ( myIsMidButtonDown ) - OnMiddleButtonDown( ctrl, shift, x, y ); -} - -//---------------------------------------------------------------------------- -void -VVTK_InteractorStyle -::OnMiddleButtonUp(int ctrl, int shift, int x, int y) -{ - myIsMidButtonDown = false; - SVTK_InteractorStyle::OnMiddleButtonUp( ctrl, shift, x, y ); - - if ( myIsLeftButtonDown ) - OnLeftButtonDown( ctrl, shift, x, y ); -} -//---------------------------------------------------------------------------- -void VVTK_InteractorStyle::onFinishOperation() -{ - Superclass::onFinishOperation(); -} - - -//---------------------------------------------------------------------------- -void -VVTK_InteractorStyle -::SetInteractor( vtkRenderWindowInteractor* theInteractor ) -{ - // register EventCallbackCommand as observer of standard events (keypress, mousemove, etc) - Superclass::SetInteractor( theInteractor ); - - if(theInteractor){ - theInteractor->AddObserver( VISU::SetSMDecreaseMagnificationEvent, EventCallbackCommand, Priority ); - theInteractor->AddObserver( VISU::SetSMIncreaseMagnificationEvent, EventCallbackCommand, Priority ); - } -} - - -//---------------------------------------------------------------------------- -void -VVTK_InteractorStyle -::ProcessEvents( vtkObject* object, - unsigned long event, - void* clientData, - void* callData ) -{ - if ( clientData ) { - vtkObject* anObject = reinterpret_cast( clientData ); - VVTK_InteractorStyle* self = dynamic_cast( anObject ); - if( self ){ - switch ( event ) { - case VISU::SetSMDecreaseMagnificationEvent: - self->mySMDecreaseMagnificationBtn = *((int*)callData); - return; - case VISU::SetSMIncreaseMagnificationEvent: - self->mySMIncreaseMagnificationBtn = *((int*)callData); - return; - } - } - } - - Superclass::ProcessEvents( object, event, clientData, callData ); -} - - -//---------------------------------------------------------------------------- -void -VVTK_InteractorStyle -::onSpaceMouseButton( int button ) -{ - if( mySMDecreaseMagnificationBtn == button ) - DecreaseGaussPointMagnification(); - if( mySMIncreaseMagnificationBtn == button ) - IncreaseGaussPointMagnification(); - - Superclass::onSpaceMouseButton( button ); -} - -//---------------------------------------------------------------------------- -void -VVTK_InteractorStyle -::DecreaseGaussPointMagnification() -{ - Interactor->InvokeEvent(VISU::SetSMDecreaseMagnificationEvent,NULL); -} - -//---------------------------------------------------------------------------- -void -VVTK_InteractorStyle -::IncreaseGaussPointMagnification() -{ - Interactor->InvokeEvent(VISU::SetSMIncreaseMagnificationEvent,NULL); -} -//============================================================================ -// -// Controllers -// -vtkStandardNewMacro(VVTK_ControllerIncrement); -//---------------------------------------------------------------------------- -VVTK_ControllerIncrement::VVTK_ControllerIncrement() -{ - myIncrement=10; -} -//---------------------------------------------------------------------------- -VVTK_ControllerIncrement::~VVTK_ControllerIncrement() -{ -} -//---------------------------------------------------------------------------- -int VVTK_ControllerIncrement::Increase() -{ - myIncrement*=2; - return myIncrement; -} -//---------------------------------------------------------------------------- -int VVTK_ControllerIncrement::Decrease() -{ - myIncrement/=2; - if (!myIncrement){ - myIncrement=1; - } - return myIncrement; -} -// -vtkStandardNewMacro(VVTK_ControllerOnKeyDown); -//---------------------------------------------------------------------------- -VVTK_ControllerOnKeyDown::VVTK_ControllerOnKeyDown() -{ -} -//---------------------------------------------------------------------------- -VVTK_ControllerOnKeyDown::~VVTK_ControllerOnKeyDown() -{ -} -//---------------------------------------------------------------------------- -bool VVTK_ControllerOnKeyDown::OnKeyDown(vtkInteractorStyle* theIS) -{ - SVTK_InteractorStyle *pIS=dynamic_cast(theIS); - if (pIS){ - if(pIS->GetSelector()->SelectionMode()==GaussPointSelection){ - char key = pIS->GetInteractor()->GetKeyCode(); - // - if (key == 'S') { - pIS->ActionPicking(); - return false; - } - } - } - return Superclass::OnKeyDown(theIS); -} diff --git a/src/VVTK/VVTK_InteractorStyle.h b/src/VVTK/VVTK_InteractorStyle.h deleted file mode 100644 index 86702bed..00000000 --- a/src/VVTK/VVTK_InteractorStyle.h +++ /dev/null @@ -1,148 +0,0 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// -// SALOME VTKViewer : build VTK viewer into Salome desktop -// File : VVTK_InteractorStyle.h -// Author : Christophe ATTANASIO -// Module : SALOME -// $Header$ -// -#ifndef __VVTK_InteractorStyle_h -#define __VVTK_InteractorStyle_h - - -#include "VVTK.h" - -#include "SVTK_InteractorStyle.h" -// -//------------------------------------------- -//! Control the value of increment in new style of interaction. -/*! - This class controls of value of increment, - for pan/rotate/zoom operations in new style - of interaction -*/ -class VVTK_ControllerIncrement : public SVTK_ControllerIncrement { - public: - vtkTypeMacro(VVTK_ControllerIncrement,SVTK_ControllerIncrement); - static VVTK_ControllerIncrement* New(); - - //! Increace the increment value by multiplying on 2 - virtual int Increase(); - - //! Decreace the increment value by division on 2 - virtual int Decrease(); - - protected: - VVTK_ControllerIncrement(); - virtual ~VVTK_ControllerIncrement(); - // - private: - VVTK_ControllerIncrement(const VVTK_ControllerIncrement&); //Not implemented - void operator=(const VVTK_ControllerIncrement&); //Not implemented -}; -// -//------------------------------------------- -//! Control the behaviour of KeyDown event in new style of interaction. -/*! - This class controls of behaviour of of KeyDown event - in new style of interaction. -*/ -class VVTK_ControllerOnKeyDown : public SVTK_ControllerOnKeyDown{ - public: - vtkTypeMacro(VVTK_ControllerOnKeyDown, SVTK_ControllerOnKeyDown); - static VVTK_ControllerOnKeyDown* New(); - - //! Provides the action on event - virtual bool OnKeyDown(vtkInteractorStyle* ); - - protected: - VVTK_ControllerOnKeyDown(); - virtual ~VVTK_ControllerOnKeyDown(); - - private: - VVTK_ControllerOnKeyDown(const VVTK_ControllerOnKeyDown&);//Not implemented - void operator=(const VVTK_ControllerOnKeyDown&); //Not implemented -}; - - -//! Introduce new style of interaction (keyboard free) -class VVTK_EXPORT VVTK_InteractorStyle : public SVTK_InteractorStyle -{ - public: - static VVTK_InteractorStyle *New(); - vtkTypeMacro(VVTK_InteractorStyle,SVTK_InteractorStyle); - - //! Redefined from SVTK_InteractorStyle::SetInteractor in order to add an observer (callback) for custorm event (space mouse event) - virtual - void - SetInteractor( vtkRenderWindowInteractor* ); - - protected: - VVTK_InteractorStyle(); - ~VVTK_InteractorStyle(); - - VVTK_InteractorStyle(const VVTK_InteractorStyle&); // Not implemented - void operator=(const VVTK_InteractorStyle&); // Not implemented - - // Generic event bindings must be overridden in subclasses - - //! Redefine SVTK_InteractorStyle::OnLeftButtonDown - virtual void OnLeftButtonDown(int ctrl, int shift, int x, int y); - - //! Redefine SVTK_InteractorStyle::OnMiddleButtonDown - virtual void OnMiddleButtonDown(int ctrl, int shift, int x, int y); - - //! Redefine SVTK_InteractorStyle::OnLeftButtonUp - virtual void OnLeftButtonUp(int ctrl, int shift, int x, int y); - - //! Redefine SVTK_InteractorStyle::OnMiddleButtonUp - virtual void OnMiddleButtonUp(int ctrl, int shift, int x, int y); - - //! Redefine SVTK_InteractorStyle::onFinishOperation - virtual void onFinishOperation(); - - //! Main process VTK event method - static - void - ProcessEvents(vtkObject* object, - unsigned long event, - void* clientData, - void* callData ); - - //! Redefine SVTK_InteractorStyle::onSpaceMouseButton - virtual void onSpaceMouseButton( int button ); - - //! To decrease magnification of the Gauss Points - void DecreaseGaussPointMagnification(); - - //! To increase magnification of the Gauss Points - void IncreaseGaussPointMagnification(); - - //! SpaceMouse short cuts - int mySMDecreaseMagnificationBtn; - int mySMIncreaseMagnificationBtn; - - bool myIsMidButtonDown; - bool myIsLeftButtonDown; -}; - -#endif diff --git a/src/VVTK/VVTK_MainWindow.cxx b/src/VVTK/VVTK_MainWindow.cxx deleted file mode 100644 index b0324408..00000000 --- a/src/VVTK/VVTK_MainWindow.cxx +++ /dev/null @@ -1,474 +0,0 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// -// SALOME OBJECT : implementation of interactive object visualization for OCC and VTK viewers -// File : -// Author : -// Module : -// $Header$ -// -#include "VVTK_MainWindow.h" -#include "VVTK_InteractorStyle.h" -#include "VVTK_Recorder.h" -#include "VVTK_RecorderDlg.h" -#include "VISU_WidgetCtrl.hxx" -#include "VISU_GaussPtsAct.h" -#include "VISU_Event.h" - -#include "SVTK_ViewWindow.h" -#include "SVTK_RenderWindowInteractor.h" -#include "VVTK_Renderer.h" -#include "VVTK_PickingDlg.h" -#include "VVTK_SegmentationCursorDlg.h" - -#include "SUIT_Application.h" -#include "SUIT_Session.h" -#include "SUIT_Tools.h" -#include "SUIT_ViewWindow.h" -#include "SUIT_ResourceMgr.h" -#include "SUIT_Accel.h" -#include "SUIT_MessageBox.h" -#include "QtxAction.h" -#include "QtxMultiAction.h" -#include "QtxActionToolMgr.h" - -#include -#include -#include -#include -#include - -//---------------------------------------------------------------------------- -VVTK_MainWindow::VVTK_MainWindow(QWidget* theParent, - const char* theName, - SUIT_ResourceMgr* theResourceMgr, - SUIT_ViewWindow* theViewWindow): - SVTK_MainWindow(theParent,theName,theResourceMgr,theViewWindow), - myControllerIncrement(VVTK_ControllerIncrement::New()), - myControllerOnKeyDown(VVTK_ControllerOnKeyDown::New()) -{ - myToolMgr = new QtxActionToolMgr( this ); - - myControllerIncrement->Delete(); - myControllerOnKeyDown->Delete(); - - // Recording - myRecordingToolBar = new QToolBar(tr("LBL_TOOLBAR_RECORD_LABEL"), this); - addToolBar(Qt::LeftToolBarArea, myRecordingToolBar ); - myViewWindow->toolMgr()->remove( NonIsometric, myToolBar ); - - - myStartAction = new QtxAction(tr("MNU_VVTK_RECORDING_START"), - theResourceMgr->loadPixmap( "VISU", tr( "ICON_VVTK_RECORDING_START" ) ), - tr( "MNU_VVTK_RECORDING_START" ), 0, this); - myStartAction->setStatusTip(tr("DSC_VVTK_RECORDING_START")); - //myStartAction->addTo( myRecordingToolBar ); - myRecordingToolBar->addAction( myStartAction ); - connect( myStartAction, SIGNAL( triggered ( bool ) ), this, SLOT( OnStartRecording() ) ); - - myPlayAction = new QtxAction(tr("MNU_VVTK_RECORDING_PLAY"), - theResourceMgr->loadPixmap( "VISU", tr( "ICON_VVTK_RECORDING_PLAY" ) ), - tr( "MNU_VVTK_RECORDING_PLAY" ), 0, this); - myPlayAction->setStatusTip(tr("DSC_VVTK_RECORDING_PLAY")); - myPlayAction->setEnabled( false ); - //myPlayAction->addTo( myRecordingToolBar ); - myRecordingToolBar->addAction( myPlayAction ); - connect( myPlayAction, SIGNAL( triggered ( bool ) ), this, SLOT( OnPlayRecording() ) ); - - myPauseAction = new QtxAction(tr("MNU_VVTK_RECORDING_PAUSE"), - theResourceMgr->loadPixmap( "VISU", tr( "ICON_VVTK_RECORDING_PAUSE" ) ), - tr( "MNU_VVTK_RECORDING_PAUSE" ), 0, this); - myPauseAction->setStatusTip(tr("DSC_VVTK_RECORDING_PAUSE")); - myPauseAction->setEnabled( false ); - //myPauseAction->addTo( myRecordingToolBar ); - myRecordingToolBar->addAction( myPauseAction ); - connect( myPauseAction, SIGNAL( triggered ( bool ) ), this, SLOT( OnPauseRecording() ) ); - - myStopAction = new QtxAction(tr("MNU_VVTK_RECORDING_STOP"), - theResourceMgr->loadPixmap( "VISU", tr( "ICON_VVTK_RECORDING_STOP" ) ), - tr( "MNU_VVTK_RECORDING_STOP" ), 0, this); - myStopAction->setStatusTip(tr("DSC_VVTK_RECORDING_STOP")); - myStopAction->setEnabled( false ); - //myStopAction->addTo( myRecordingToolBar ); - myRecordingToolBar->addAction( myStopAction ); - connect( myStopAction, SIGNAL( triggered ( bool ) ), this, SLOT( OnStopRecording() ) ); - - myRecorder = VVTK_Recorder::New(); - //myRecorder->CheckExistAVIMaker(); - //if(myRecorder->ErrorStatus()) - // myRecordingToolBar->setEnabled(false); -} - -//---------------------------------------------------------------------------- - -QtxActionToolMgr* VVTK_MainWindow::toolMgr() const -{ - return myToolMgr; -} - -//---------------------------------------------------------------------------- -void VVTK_MainWindow::Initialize(SVTK_RenderWindowInteractor* theInteractor) -{ - vtkInteractorStyle* aStyle = theInteractor->GetInteractorStyle(); - if(SVTK_InteractorStyle *anInteractorStyle = dynamic_cast(aStyle)){ - anInteractorStyle->SetControllerIncrement(myControllerIncrement.GetPointer()); - anInteractorStyle->SetControllerOnKeyDown(myControllerOnKeyDown.GetPointer()); - } - - myRecorder->SetNbFPS(17.3); - myRecorder->SetQuality(100); - myRecorder->SetProgressiveMode(true); - myRecorder->SetUseSkippedFrames(true); - myRecorder->SetRenderWindow(theInteractor->getRenderWindow()); - - disconnect( SVTK_MainWindow::action( DumpId ), SIGNAL( activated() ), - myViewWindow, SLOT( onDumpView() ) ); - - connect( SVTK_MainWindow::action( DumpId ), SIGNAL( activated() ), - this, SLOT( onDumpView() ) ); - - SVTK_MainWindow::Initialize(theInteractor); - addToolBar( Qt::LeftToolBarArea, getToolBar() ); -} - -VVTK_MainWindow::~VVTK_MainWindow() -{ - if(myRecorder) - myRecorder->Delete(); -} - -//---------------------------------------------------------------------------- -void VVTK_MainWindow::onDumpView() -{ - QImage img = dumpView(); - if( img.isNull() ) - return; - - SUIT_Application* app = SUIT_Session::session()->activeApplication(); - QString fileName = app->getFileName( false, QString::null, - tr( "TLT_IMAGE_FILES" ), - tr( "TLT_DUMP_VIEW" ), 0 ); - if( fileName.isEmpty() ) - return; - - QString fmt = SUIT_Tools::extension( fileName ).toUpper(); - if( fmt.isEmpty() ) - fmt = QString( "BMP" ); // default format - else if( fmt == "JPG" ) - fmt = "JPEG"; - - QApplication::setOverrideCursor( Qt::WaitCursor ); - img.save( fileName, fmt.toLatin1() ); - QApplication::restoreOverrideCursor(); -} - -//---------------------------------------------------------------------------- -void VVTK_MainWindow::OnStartRecording() -{ - myRecorder->CheckExistAVIMaker(); - if (myRecorder->ErrorStatus()) { - SUIT_MessageBox::warning(this, tr("ERROR"), tr("MSG_NO_AVI_MAKER") ); - } - else { - VVTK_RecorderDlg* aRecorderDlg = new VVTK_RecorderDlg( this, myRecorder ); - - if( !aRecorderDlg->exec() ) - return; - - myStartAction->setEnabled( false ); - myPlayAction->setEnabled( false ); - myPauseAction->setEnabled( true ); - myStopAction->setEnabled( true ); - - myRecorder->Record(); - } -} - -//---------------------------------------------------------------------------- -void VVTK_MainWindow::OnPlayRecording() -{ - myStartAction->setEnabled( false ); - myPlayAction->setEnabled( false ); - myPauseAction->setEnabled( true ); - myStopAction->setEnabled( true ); - // - myRecorder->Pause(); -} - -//---------------------------------------------------------------------------- -void VVTK_MainWindow::OnPauseRecording() -{ - myStartAction->setEnabled( false ); - myPlayAction->setEnabled( true ); - myPauseAction->setEnabled( false ); - myStopAction->setEnabled( true ); - // - myRecorder->Pause(); -} - -//---------------------------------------------------------------------------- -void VVTK_MainWindow::OnStopRecording() -{ - myStartAction->setEnabled( true ); - myPlayAction->setEnabled( false ); - myPauseAction->setEnabled( false ); - myStopAction->setEnabled( false ); - // - myRecorder->Stop(); -} - -//---------------------------------------------------------------------------- -void VVTK_MainWindow::action( const int accelAction ) -{ - if ( accelAction == SUIT_Accel::ZoomFit ) - onFitAll(); - else { - int anEvent = SVTK::convertAction( accelAction ); - InvokeEvent( anEvent, 0 ); - } -} - -//---------------------------------------------------------------------------- -VVTK_MainWindow1::VVTK_MainWindow1(QSplitter* theParent, - const char* theName, - SUIT_ResourceMgr* theResourceMgr, - SUIT_ViewWindow* theViewWindow): - VVTK_MainWindow(theParent,theName,theResourceMgr,theViewWindow), - mySplitter(theParent), - myPickingDlg(NULL) -{ - myPtsToolBar = new QToolBar( tr("LBL_TOOLBAR_GAUSS_LABEL"), this ); - addToolBar( Qt::LeftToolBarArea, myPtsToolBar ); - - QPixmap aPixmap; - QtxAction* anAction; - - aPixmap = theResourceMgr->loadPixmap("VISU",tr("ICON_VVTK_SELECTION_MODE_SWITCH")); - myPickingAction = new QtxAction(tr("MNU_VVTK_SELECTION_MODE_SWITCH"), - aPixmap, - tr( "MNU_VVTK_SELECTION_MODE_SWITCH" ), - 0, - this, - //"VVTK/SVTK SelectionSwitch", - true); - myPickingAction->setCheckable(true); - myPickingAction->setStatusTip(tr("DSC_VVTK_SELECTION_MODE_SWITCH")); - myPtsToolBar->addAction( myPickingAction ); - connect(myPickingAction, SIGNAL(toggled(bool)), this, SLOT(OnSelectionModeSwitch(bool))); - - myPickingDlg = new VVTK_PickingDlg( myPickingAction, this, "PickingDlg" ); - - // Plane/Sphere Segmentation - aPixmap = theResourceMgr->loadPixmap("VISU",tr("ICON_VVTK_PLANE_SEGMENTATION_SWITCH")); - myPlaneSegmentationAction = new QtxAction(tr("MNU_VVTK_PLANE_SEGMENTATION_SWITCH"), - aPixmap, - tr( "MNU_VVTK_PLANE_SEGMENTATION_SWITCH" ), - 0, - this, - //"VVTK/SVTK PlaneSegmentationSwitch", - true); - myPlaneSegmentationAction->setCheckable(true); - myPlaneSegmentationAction->setStatusTip(tr("DSC_VVTK_PLANE_SEGMENTATION_SWITCH")); - //myPlaneSegmentationAction->addTo( myPtsToolBar ); - connect( myPlaneSegmentationAction, SIGNAL( triggered() ), this, SLOT( OnSegmentationSwitch() ) ); - - aPixmap = theResourceMgr->loadPixmap("VISU",tr("ICON_VVTK_SPHERE_SEGMENTATION_SWITCH")); - mySphereSegmentationAction = new QtxAction(tr("MNU_VVTK_SPHERE_SEGMENTATION_SWITCH"), - aPixmap, - tr( "MNU_VVTK_SPHERE_SEGMENTATION_SWITCH" ), - 0, - this, - //"VVTK/SVTK SphereSegmentationSwitch", - true); - mySphereSegmentationAction->setCheckable(true); - mySphereSegmentationAction->setStatusTip(tr("DSC_VVTK_SPHERE_SEGMENTATION_SWITCH")); - //mySphereSegmentationAction->addTo( myPtsToolBar ); - connect( mySphereSegmentationAction, SIGNAL( activated() ), this, SLOT( OnSegmentationSwitch() ) ); - - mySegmentationCursorDlg = new VVTK_SegmentationCursorDlg( this, "SegmentationCursorDlg" ); - mySegmentationCursorDlg->SetPlaneAction( myPlaneSegmentationAction ); - mySegmentationCursorDlg->SetSphereAction( mySphereSegmentationAction ); - connect( mySegmentationCursorDlg, SIGNAL( scgClose() ), this, SLOT( OnSegmentationSwitch() ) ); - - //SUIT_ToolButton* aSegmentationButton = new SUIT_ToolButton( myPtsToolBar ); - QtxMultiAction* aSegmentationAction = new QtxMultiAction( this ); - aSegmentationAction->insertAction( myPlaneSegmentationAction ); - aSegmentationAction->insertAction( mySphereSegmentationAction ); - myPtsToolBar->addAction( aSegmentationAction ); -} - -void VVTK_MainWindow1::Initialize(SVTK_RenderWindowInteractor* theInteractor, - VVTK_Renderer1* theRenderer) -{ - myRenderer = theRenderer; - VVTK_MainWindow::Initialize(theInteractor); - - mySegmentationCursorDlg->SetWidgetCtrl( theRenderer->GetWidgetCtrl() ); - mySegmentationCursorDlg->SetInteractor( theInteractor ); - - connect( theInteractor, SIGNAL( selectionChanged() ), SLOT( OnSelectionChanged() ) ); - myPickingDlg->SetInteractor( theInteractor ); -} - -VVTK_MainWindow1::~VVTK_MainWindow1() -{} - -//---------------------------------------------------------------------------- -VVTK_MainWindow2* VVTK_MainWindow1::CreateMainWindow2(QWidget* theParent, - const char* theName, - SUIT_ResourceMgr* theResourceMgr, - SUIT_ViewWindow* theViewWindow) -{ - myMainWindow2 = new VVTK_MainWindow2(theParent, - theName, - theResourceMgr, - theViewWindow); - return myMainWindow2; -} - - -//---------------------------------------------------------------------------- -void VVTK_MainWindow1::OnSelectionModeSwitch(bool theIsSelectionOn) -{ - if ( theIsSelectionOn && !isVisible() ) - return; - - Selection_Mode aSelectionMode = SelectionMode(); - if(theIsSelectionOn && aSelectionMode != GaussPointSelection) - SetSelectionMode(GaussPointSelection); - else if(!theIsSelectionOn && aSelectionMode == GaussPointSelection) - SetSelectionMode(ActorSelection); - - if( theIsSelectionOn ) - { - myPickingDlg->Update(); - myPickingDlg->show(); - } - else - myPickingDlg->hide(); -} - -void VVTK_MainWindow1::OnSelectionChanged() -{ - Selection_Mode aSelectionMode = SelectionMode(); - if(myPickingAction->isChecked() && aSelectionMode != GaussPointSelection) - myPickingAction->setChecked(false); - else if(!myPickingAction->isChecked() && aSelectionMode == GaussPointSelection) - myPickingAction->setChecked(true); -} - - -//---------------------------------------------------------------------------- -VISU_WidgetCtrl* VVTK_MainWindow1::GetWidgetCtrl() -{ - return myRenderer->GetWidgetCtrl(); -} - -VISU_InsideCursorSettings* VVTK_MainWindow1::GetInsideCursorSettings() -{ - return mySegmentationCursorDlg->GetInsideCursorSettings(); -} - -VISU_OutsideCursorSettings* VVTK_MainWindow1::GetOutsideCursorSettings() -{ - return mySegmentationCursorDlg->GetOutsideCursorSettings(); -} - -VISU_PickingSettings* VVTK_MainWindow1::GetPickingSettings() -{ - return myPickingDlg->GetPickingSettings(); -} - -//---------------------------------------------------------------------------- -void VVTK_MainWindow1::SetPlanesSegementation(bool theIsOn) -{ - myPlaneSegmentationAction->setChecked( theIsOn ); - OnSegmentationSwitch(myPlaneSegmentationAction); -} - -void VVTK_MainWindow1::SetSphereSegementation(bool theIsOn) -{ - mySphereSegmentationAction->setChecked( theIsOn ); - OnSegmentationSwitch(mySphereSegmentationAction); -} - -void VVTK_MainWindow1::OnSegmentationSwitch(QtxAction* theAction) -{ - bool anIsSegmentationOn = myPlaneSegmentationAction->isChecked() || - mySphereSegmentationAction->isChecked(); - - if( !theAction ) - return; - - VISU_WidgetCtrl *aWidgetCtrl = myRenderer->GetWidgetCtrl(); - - if (anIsSegmentationOn) { - int anIndex = (theAction == myPlaneSegmentationAction) ? 0 : 1; - aWidgetCtrl->SetActiveIndex(anIndex); - } - aWidgetCtrl->SetEnabled(anIsSegmentationOn); - - if( theAction == myPlaneSegmentationAction && anIsSegmentationOn ) - mySphereSegmentationAction->setChecked( false ); - else if( theAction == mySphereSegmentationAction && anIsSegmentationOn ) - myPlaneSegmentationAction->setChecked( false ); - - if( anIsSegmentationOn ) - { - myMainWindow2->show(); - mySegmentationCursorDlg->SetIsPlaneSegmentation( theAction == myPlaneSegmentationAction ); - mySegmentationCursorDlg->UpdateSegmentation(); - mySegmentationCursorDlg->UpdateInsideGaussPoints(); - mySegmentationCursorDlg->UpdateOutsideGaussPoints(); - mySegmentationCursorDlg->show(); - } - else - { - myMainWindow2->hide(); - mySegmentationCursorDlg->hide(); - } -} - -void VVTK_MainWindow1::OnSegmentationSwitch() -{ - QtxAction* anAction = ( QtxAction* )sender(); - OnSegmentationSwitch(anAction); -} - - -//---------------------------------------------------------------------------- -VVTK_MainWindow2::VVTK_MainWindow2(QWidget* theParent, - const char* theName, - SUIT_ResourceMgr* theResourceMgr, - SUIT_ViewWindow* theViewWindow): - VVTK_MainWindow(theParent,theName,theResourceMgr,theViewWindow) -{} - -VVTK_MainWindow2::~VVTK_MainWindow2() -{} - - -//---------------------------------------------------------------------------- -void VVTK_MainWindow2::Initialize(SVTK_RenderWindowInteractor* theInteractor) -{ - VVTK_MainWindow::Initialize(theInteractor); -} - diff --git a/src/VVTK/VVTK_MainWindow.h b/src/VVTK/VVTK_MainWindow.h deleted file mode 100644 index 81491724..00000000 --- a/src/VVTK/VVTK_MainWindow.h +++ /dev/null @@ -1,201 +0,0 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// -#ifndef VVTK_MAINWINDOW_H -#define VVTK_MAINWINDOW_H - -#ifdef WIN32 -#pragma warning( disable:4251 ) -#endif - -#include "VVTK.h" -#include "SVTK_MainWindow.h" - -class QSplitter; - -class VISU_WidgetCtrl; -class VVTK_SegmentationCursorDlg; -class VISU_InsideCursorSettings; -class VISU_OutsideCursorSettings; -class VISU_PickingSettings; -class VVTK_InteractorStyle; -class VVTK_ControllerIncrement; -class VVTK_ControllerOnKeyDown; -class VVTK_PickingDlg; -class VVTK_MainWindow2; -class VVTK_Renderer1; -class VVTK_Renderer2; -class VVTK_Recorder; - -//---------------------------------------------------------------------------- -//! Customize SVTK_MainWindow to provide VVTK functionality -class VVTK_EXPORT VVTK_MainWindow: public SVTK_MainWindow -{ - Q_OBJECT; - -public: - //! Construct instance of the class - VVTK_MainWindow(QWidget* theParent, - const char* theName, - SUIT_ResourceMgr* theResourceMgr, - SUIT_ViewWindow* theViewWindow); - - //! Reimplement SVTK_MainWindow::Initialize - virtual void Initialize(SVTK_RenderWindowInteractor* theInteractor); - - //! Destroy instance of the class - virtual ~VVTK_MainWindow(); - - public slots: - - virtual void onDumpView(); - - virtual void action( const int ); - - virtual void OnStartRecording(); - - virtual void OnPlayRecording(); - - virtual void OnPauseRecording(); - - virtual void OnStopRecording(); - - protected: - virtual QtxActionToolMgr* toolMgr() const; - - vtkSmartPointer myControllerIncrement; - vtkSmartPointer myControllerOnKeyDown; - - QToolBar* myRecordingToolBar; - QtxAction* myStartAction; - QtxAction* myPlayAction; - QtxAction* myPauseAction; - QtxAction* myStopAction; - - VVTK_Recorder *myRecorder; - QtxActionToolMgr* myToolMgr; -}; - - -//---------------------------------------------------------------------------- -//! Extend VVTK_MainWindow to implement functionality for base view -class VVTK_EXPORT VVTK_MainWindow1: public VVTK_MainWindow -{ - Q_OBJECT; - -public: - //! Construct instance of the class - VVTK_MainWindow1(QSplitter* theParent, - const char* theName, - SUIT_ResourceMgr* theResourceMgr, - SUIT_ViewWindow* theViewWindow); - - //! Reimplement VVTK_MainWindow::Initialize - virtual void Initialize(SVTK_RenderWindowInteractor* theInteractor, - VVTK_Renderer1* theRenderer); - - //! Destroy instance of the class - virtual ~VVTK_MainWindow1(); - - //! Create instance of the segmented VVTK_MainWindow - /*! - The two views (VVTK_MainWindow1 and VVTK_MainWindow2) should change its behaviour in the same time. - So, it is necessary to synhronize them through sharing some common pointers. - */ - VVTK_MainWindow2* CreateMainWindow2(QWidget* theParent, - const char* theName, - SUIT_ResourceMgr* theResourceMgr, - SUIT_ViewWindow* theViewWindow); - - VISU_WidgetCtrl* GetWidgetCtrl(); - - void SetPlanesSegementation(bool theIsOn); - - void SetSphereSegementation(bool theIsOn); - - VISU_InsideCursorSettings* GetInsideCursorSettings(); - - //! Get contained VISU_OutsideCursorSettings - VISU_OutsideCursorSettings* GetOutsideCursorSettings(); - - //! Get contained VISU_PickingSettings - VISU_PickingSettings* GetPickingSettings(); - - public slots: - //! To activate/ deactivate the segementation cursor at run-time - void OnSegmentationSwitch();//bool theIsSegmentationOn); - - void OnSegmentationSwitch(QtxAction* theAction);//bool theIsSegmentationOn); - - //! To change active selection mode at run-time - virtual void OnSelectionModeSwitch(bool theIsSelectionOn); - - //! To adjust to the current selection mode - virtual void OnSelectionChanged(); - - protected: - VVTK_Renderer1* myRenderer; //!< Keeps extended version of SVTK_Renderer - - VVTK_MainWindow2* myMainWindow2; //!< Refer to segmented view - - QToolBar* myPtsToolBar; //!< Additional tool bar - - //! To implement show/hide segmented view on acttivate/ deactivate segementation cursor - QSplitter* mySplitter; - - QtxAction* myPickingAction; //!< Action for switch selection mode - QtxAction* myPlaneSegmentationAction; //!< Action for switch segmentation mode to plane - QtxAction* mySphereSegmentationAction; //!< Action for switch segmentation mode to sphere - - //! Keep reference to VVTK_SegmentationCursorDlg - VVTK_SegmentationCursorDlg* mySegmentationCursorDlg; - VVTK_PickingDlg* myPickingDlg; //!< Keep reference to VVTK_PickingDlg -}; - - -//---------------------------------------------------------------------------- -//! Extend VVTK_MainWindow to implement functionality for segmented view -class VVTK_EXPORT VVTK_MainWindow2: public VVTK_MainWindow -{ - Q_OBJECT; - - friend class VVTK_MainWindow1; - - //! Construct instance of the class - VVTK_MainWindow2(QWidget* theParent, - const char* theName, - SUIT_ResourceMgr* theResourceMgr, - SUIT_ViewWindow* theViewWindow); -public: - //! Destroy instance of the class - virtual ~VVTK_MainWindow2(); - - //! Reimplement SVTK_MainWindow::Initialize - virtual void Initialize(SVTK_RenderWindowInteractor* theInteractor); - -}; - - -#ifdef WIN32 -#pragma warning( default:4251 ) -#endif - -#endif diff --git a/src/VVTK/VVTK_PickingDlg.cxx b/src/VVTK/VVTK_PickingDlg.cxx deleted file mode 100644 index 68a5141c..00000000 --- a/src/VVTK/VVTK_PickingDlg.cxx +++ /dev/null @@ -1,724 +0,0 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// -// File : VVTK_PickingDlg.cxx -// Author : Oleg Uvarov -// Module : VISU -// -#include "VVTK_PickingDlg.h" -#include - -#include "VISU_GaussPtsAct.h" -#include "VISU_PickingSettings.h" -#include "VISU_GaussPointsPL.hxx" - -#include "SUIT_MessageBox.h" -#include "SUIT_ResourceMgr.h" -#include "SUIT_Session.h" - -#include "CAM_Module.h" - -#include "SVTK_Selector.h" -#include "SVTK_MainWindow.h" -#include "SVTK_RenderWindowInteractor.h" - -#include "VTKViewer_Algorithm.h" -#include "SVTK_Functor.h" - -#include -#include -#include -#include -#include -#include - -#include "utilities.h" - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "QtxAction.h" -#include -#include -#include "QtxColorButton.h" - -#include "LightApp_Application.h" - -namespace -{ - struct SelectorHelper - { - public: - SelectorHelper( SVTK_RenderWindowInteractor* theInteractor ): - myInteractor( theInteractor ) - {} - - bool - get() - { - bool aResult = false; - myMapIndex.Clear(); - mySelector = NULL; - myPipeLine = NULL; - myActor = NULL; - - if ( !myInteractor ) - return aResult; - - mySelector = myInteractor->GetSelector(); - if ( !mySelector ) - return aResult; - - const SALOME_ListIO& aListIO = mySelector->StoredIObjects(); - if ( aListIO.Extent() != 1 ) - return aResult; - - myIO = aListIO.First(); - if ( mySelector->HasIndex( myIO ) ) - mySelector->GetIndex(myIO, myMapIndex); - - VTK::ActorCollectionCopy aCopy(myInteractor->getRenderer()->GetActors()); - myActor = SVTK::Find(aCopy.GetActors(), - SVTK::TIsSameIObject( myIO )); - if ( !myActor ) - return aResult; - - myPipeLine = myActor->GetGaussPointsPL(); - - return true; - } - - SVTK_RenderWindowInteractor* myInteractor; - TColStd_IndexedMapOfInteger myMapIndex; - Handle(SALOME_InteractiveObject) myIO; - SVTK_Selector* mySelector; - - VISU_GaussPointsPL* myPipeLine; - VISU_GaussPtsAct* myActor; - }; - - - - class GaussPtsIDValidator: public QIntValidator - { - public: - GaussPtsIDValidator( SVTK_RenderWindowInteractor* theInteractor, - QObject * theParent ): - QIntValidator( 0, VTK_LARGE_ID, theParent ), - myHelper(theInteractor) - {} - - virtual - State - validate ( QString & theInput, int & thePos ) const - { - if ( QIntValidator::validate( theInput, thePos ) == QValidator::Invalid) - return QValidator::Invalid; - - if ( !myHelper.get() ) - return QValidator::Invalid; - - return QValidator::Acceptable; - } - - protected: - mutable SelectorHelper myHelper; - }; - - - class GaussCellIDValidator: public GaussPtsIDValidator - { - public: - GaussCellIDValidator( QLineEdit* theLocalPointLabel, - SVTK_RenderWindowInteractor* theInteractor, - QObject * theParent ): - GaussPtsIDValidator( theInteractor, theParent ), - myLocalPointLineEdit( theLocalPointLabel ) - {} - - virtual - State - validate ( QString & theInput, int & thePos ) const - { - if ( GaussPtsIDValidator::validate( theInput, thePos ) == QValidator::Invalid) - return QValidator::Invalid; - - VISU::TCellID aCellID = theInput.toInt(); - VISU::TLocalPntID aLocalPntID = myLocalPointLineEdit->text().toInt(); - VISU::PGaussPtsIDMapper anIDMapper = myHelper.myPipeLine->GetGaussPtsIDMapper(); - if ( anIDMapper->GetVTKID( VISU::TGaussPointID( aCellID, aLocalPntID ) ) < 0 ) - return QValidator::Intermediate; - - return QValidator::Acceptable; - } - - private: - QLineEdit* myLocalPointLineEdit; - }; - - - class GaussLocalPointIDValidator: public GaussPtsIDValidator - { - public: - GaussLocalPointIDValidator( QLineEdit* theParentElementLineEdit, - SVTK_RenderWindowInteractor* theInteractor, - QObject * theParent ): - GaussPtsIDValidator( theInteractor, theParent ), - myParentElementLineEdit( theParentElementLineEdit ) - {} - - virtual - State - validate ( QString & theInput, int & thePos ) const - { - if ( GaussPtsIDValidator::validate( theInput, thePos ) == QValidator::Invalid) - return QValidator::Invalid; - - VISU::TLocalPntID aLocalPntID = theInput.toInt(); - VISU::TCellID aCellID = myParentElementLineEdit->text().toInt(); - VISU::PGaussPtsIDMapper anIDMapper = myHelper.myPipeLine->GetGaussPtsIDMapper(); - if ( anIDMapper->GetVTKID( VISU::TGaussPointID( aCellID, aLocalPntID ) ) < 0 ) - return QValidator::Intermediate; - - return QValidator::Acceptable; - } - - private: - QLineEdit* myParentElementLineEdit; - }; -} - - -VVTK_ValidatedLineEdit::VVTK_ValidatedLineEdit( QWidget* parent ): - QLineEdit( parent ) -{ - connect( this, SIGNAL( textChanged( const QString& ) ), this, SLOT( MarkValidated( const QString& ) ) ); -} - -void VVTK_ValidatedLineEdit::MarkValidated( const QString& theText ) -{ - if ( !validator() ) - return; - - int aPos; - QString aText( theText ); - QPalette pal = palette(); - switch ( validator()->validate( aText, aPos ) ) { - case QValidator::Invalid: - case QValidator::Intermediate: - pal.setColor( foregroundRole(), QColor( 255, 0, 0 )); - setPalette( pal ); - break; - case QValidator::Acceptable: - pal.setColor( foregroundRole(), QColor( 0, 0, 0 )); - setPalette( pal ); - break; - } -} - -//--------------------------------------------------------------------------------- - -VVTK_PickingDlg::VVTK_PickingDlg(QtxAction* theAction, - SVTK_MainWindow* theParent, - const char* theName): - SVTK_DialogBase(theAction, - theParent, - theName), - myEventCallbackCommand( vtkCallbackCommand::New() ), - myPickingSettings( VISU_PickingSettings::New() ) -{ - myPriority = 0.0; - myEventCallbackCommand->Delete(); - myEventCallbackCommand->SetClientData(this); - myEventCallbackCommand->SetCallback(VVTK_PickingDlg::ProcessEvents); - - setWindowTitle( tr( "PICKING_DLG_TITLE" ) ); - setSizeGripEnabled(TRUE); - - QVBoxLayout* TopLayout = new QVBoxLayout( this ); - TopLayout->setSpacing(6); - TopLayout->setMargin(11); - - QWidget* aBox = new QWidget( this ); - QVBoxLayout* BoxLayout = new QVBoxLayout( aBox ); - BoxLayout->setMargin(0); - BoxLayout->setSpacing(6); - - // Cursor - QGroupBox* CursorGroup = new QGroupBox( tr( "CURSOR_TITLE" ), aBox ); - //CursorGroup->setColumnLayout(0, Qt::Vertical ); - //CursorGroup->layout()->setSpacing( 0 ); - //CursorGroup->layout()->setMargin( 0 ); - - QGridLayout* CursorGroupLayout = new QGridLayout (CursorGroup); - CursorGroupLayout->setAlignment(Qt::AlignTop | Qt::AlignCenter); - CursorGroupLayout->setSpacing(6); - CursorGroupLayout->setMargin(11); - - QLabel* CursorSizeLabel = new QLabel( tr( "CURSOR_SIZE" ), CursorGroup ); - myCursorSizeSpinBox = new SalomeApp_DoubleSpinBox( CursorGroup ); - VISU::initSpinBox( myCursorSizeSpinBox, 0, 1, 0.1, "parametric_precision" ); - myCursorSizeSpinBox->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) ); - - QLabel* PyramidHeightLabel = new QLabel( tr( "PYRAMID_HEIGHT" ), CursorGroup ); - double aHeightMin=1.e-7; - double aHeightMax=10.; - double aHeightStep=0.1; - myPyramidHeightSpinBox = new SalomeApp_DoubleSpinBox( CursorGroup ); - VISU::initSpinBox( myPyramidHeightSpinBox, aHeightMin, aHeightMax, aHeightStep, "length_precision" ); - myPyramidHeightSpinBox->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) ); - - QLabel* SelectionColorLabel = new QLabel( tr( "SELECTION_COLOR" ), CursorGroup ); - mySelectionColorButton = new QtxColorButton( CursorGroup ); - mySelectionColorButton->setColor( Qt::blue ); - //QPalette aPalette( mySelectionColorButton->palette() ); - //aPalette.setColor( mySelectionColorButton->backgroundRole(), Qt::blue ); - //mySelectionColorButton->setPalette( aPalette ); - //connect( mySelectionColorButton, SIGNAL( clicked() ), this, SLOT( onColorButtonPressed() ) ); - - CursorGroupLayout->addWidget( CursorSizeLabel, 0, 0 ); - CursorGroupLayout->addWidget( myCursorSizeSpinBox, 0, 1 ); - CursorGroupLayout->addWidget( PyramidHeightLabel, 1, 0 ); - CursorGroupLayout->addWidget( myPyramidHeightSpinBox, 1, 1 ); - CursorGroupLayout->addWidget( SelectionColorLabel, 2, 0 ); - CursorGroupLayout->addWidget( mySelectionColorButton, 2, 1 ); - - BoxLayout->addWidget( CursorGroup ); - - // Tolerance - QGroupBox* ToleranceGroup = new QGroupBox( tr( "TOLERANCE_TITLE" ), aBox ); - //ToleranceGroup->setColumnLayout(0, Qt::Vertical ); - //ToleranceGroup->layout()->setSpacing( 0 ); - //ToleranceGroup->layout()->setMargin( 0 ); - - QGridLayout* ToleranceGroupLayout = new QGridLayout (ToleranceGroup); - ToleranceGroupLayout->setAlignment(Qt::AlignTop | Qt::AlignCenter); - ToleranceGroupLayout->setSpacing(6); - ToleranceGroupLayout->setMargin(11); - - QLabel* PointToleranceLabel = new QLabel( tr( "POINT_TOLERANCE" ), ToleranceGroup ); - myPointToleranceSpinBox = new SalomeApp_DoubleSpinBox( ToleranceGroup ); - VISU::initSpinBox( myPointToleranceSpinBox, 0.001, 10.0, 0.01, "len_tol_precision" ); - myPointToleranceSpinBox->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) ); - - ToleranceGroupLayout->addWidget( PointToleranceLabel, 0, 0 ); - ToleranceGroupLayout->addWidget( myPointToleranceSpinBox, 0, 1 ); - - BoxLayout->addWidget( ToleranceGroup ); - - // Information window - QGroupBox* InfoWindowGroup = new QGroupBox( tr( "INFO_WINDOW_TITLE" ), aBox ); - //InfoWindowGroup->setColumnLayout(0, Qt::Vertical ); - //InfoWindowGroup->layout()->setSpacing( 0 ); - //InfoWindowGroup->layout()->setMargin( 0 ); - - QGridLayout* InfoWindowGroupLayout = new QGridLayout (InfoWindowGroup); - InfoWindowGroupLayout->setAlignment(Qt::AlignTop | Qt::AlignCenter); - InfoWindowGroupLayout->setSpacing(6); - InfoWindowGroupLayout->setMargin(11); - - QLabel* TransparencyLabel = new QLabel( tr( "TRANSPARENCY" ), InfoWindowGroup ); - myTransparencySpinBox = new SalomeApp_IntSpinBox( InfoWindowGroup ); - VISU::initSpinBox( myTransparencySpinBox, 0, 100, 10 ); - myTransparencySpinBox->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) ); - - InfoWindowGroupLayout->addWidget( TransparencyLabel, 0, 0 ); - InfoWindowGroupLayout->addWidget( myTransparencySpinBox, 0, 1 ); - - QLabel* PositionLabel = new QLabel( tr( "POSITION" ), InfoWindowGroup ); - myPositionComboBox = new QComboBox( InfoWindowGroup ); - myPositionComboBox->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) ); - - myPositionComboBox->addItem( tr( "BELOW_POINT" ) ); - myPositionComboBox->addItem( tr( "TOP_LEFT_CORNER" ) ); - - InfoWindowGroupLayout->addWidget( TransparencyLabel, 0, 0 ); - InfoWindowGroupLayout->addWidget( myTransparencySpinBox, 0, 1 ); - InfoWindowGroupLayout->addWidget( PositionLabel, 1, 0 ); - InfoWindowGroupLayout->addWidget( myPositionComboBox, 1, 1 ); - - BoxLayout->addWidget( InfoWindowGroup ); - - // Movement of the camera - QGroupBox* CameraGroup = new QGroupBox( tr( "CAMERA_TITLE" ), aBox ); - //CameraGroup->setColumnLayout(0, Qt::Vertical ); - //CameraGroup->layout()->setSpacing( 0 ); - //CameraGroup->layout()->setMargin( 0 ); - - QGridLayout* CameraGroupLayout = new QGridLayout (CameraGroup); - CameraGroupLayout->setAlignment(Qt::AlignTop | Qt::AlignCenter); - CameraGroupLayout->setSpacing(6); - CameraGroupLayout->setMargin(11); - - QLabel* ZoomFactorLabel = new QLabel( tr( "ZOOM_FACTOR" ), CameraGroup ); - myZoomFactorSpinBox = new SalomeApp_DoubleSpinBox( CameraGroup ); - VISU::initSpinBox( myZoomFactorSpinBox, 0.1, 10.0, 0.1, "parametric_precision" ); - myZoomFactorSpinBox->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) ); - - QLabel* StepNumberLabel = new QLabel( tr( "STEP_NUMBER" ), CameraGroup ); - myStepNumberSpinBox = new SalomeApp_IntSpinBox( CameraGroup ); - VISU::initSpinBox( myStepNumberSpinBox, 1, 100, 1 ); - myStepNumberSpinBox->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) ); - - CameraGroupLayout->addWidget( ZoomFactorLabel, 0, 0 ); - CameraGroupLayout->addWidget( myZoomFactorSpinBox, 0, 1 ); - CameraGroupLayout->addWidget( StepNumberLabel, 1, 0 ); - CameraGroupLayout->addWidget( myStepNumberSpinBox, 1, 1 ); - - BoxLayout->addWidget( CameraGroup ); - - // Display parent mesh element - QGroupBox* PositionGroup = new QGroupBox( tr( "DATA_POSITION" ), aBox ); - //PositionGroup->setColumnLayout(0, Qt::Vertical ); - //PositionGroup->layout()->setSpacing( 0 ); - //PositionGroup->layout()->setMargin( 0 ); - - QGridLayout* PositionGroupLayout = new QGridLayout (PositionGroup); - PositionGroupLayout->setAlignment(Qt::AlignTop | Qt::AlignLeft); - PositionGroupLayout->setSpacing(6); - PositionGroupLayout->setMargin(11); - - QLabel* ParentElementLabel = new QLabel( tr( "PARENT_ELEMENT" ), PositionGroup ); - - myParentElementLineEdit = new VVTK_ValidatedLineEdit( PositionGroup ); - - QLabel* LocalPointLabel = new QLabel( tr( "LOCAL_POINT" ), PositionGroup ); - - myLocalPointLineEdit = new VVTK_ValidatedLineEdit( PositionGroup ); - - myDisplayParentMeshCheckBox = new QCheckBox( tr( "DISPLAY_PARENT_MESH" ), PositionGroup ); - - PositionGroupLayout->addWidget( ParentElementLabel, 0, 0, 1, 3 ); - PositionGroupLayout->addWidget( myParentElementLineEdit, 0, 3 ); - PositionGroupLayout->addWidget( LocalPointLabel, 1, 0, 1, 3 ); - PositionGroupLayout->addWidget( myLocalPointLineEdit, 1, 3 ); - PositionGroupLayout->addWidget( myDisplayParentMeshCheckBox, 2, 0, 1, 4 ); - - BoxLayout->addWidget( PositionGroup ); - - // Common buttons =========================================================== - QGroupBox* GroupButtons = new QGroupBox( this ); - //GroupButtons->setColumnLayout(0, Qt::Vertical ); - //GroupButtons->layout()->setSpacing( 0 ); - //GroupButtons->layout()->setMargin( 0 ); - QGridLayout* GroupButtonsLayout = new QGridLayout( GroupButtons ); - GroupButtonsLayout->setAlignment( Qt::AlignTop ); - GroupButtonsLayout->setSpacing( 6 ); - GroupButtonsLayout->setMargin( 11 ); - - QPushButton* buttonApply = new QPushButton( tr( "&Apply" ), GroupButtons ); - buttonApply->setAutoDefault( TRUE ); - buttonApply->setDefault( TRUE ); - GroupButtonsLayout->addWidget( buttonApply, 0, 0 ); - GroupButtonsLayout->addItem( new QSpacerItem( 5, 5, QSizePolicy::Expanding, QSizePolicy::Minimum ), 0, 1 ); - - QPushButton* buttonClose = new QPushButton( tr( "&Close" ) , GroupButtons ); - buttonClose->setAutoDefault( TRUE ); - GroupButtonsLayout->addWidget( buttonClose, 0, 2 ); - - QPushButton* buttonHelp = new QPushButton( tr( "&Help" ) , GroupButtons ); - buttonHelp->setAutoDefault( TRUE ); - GroupButtonsLayout->addWidget( buttonHelp, 0, 3 ); - - TopLayout->addWidget( aBox ); - TopLayout->addWidget( GroupButtons ); - - connect( buttonApply, SIGNAL( clicked() ), this, SLOT( onClickApply() ) ); - connect( buttonClose, SIGNAL( clicked() ), this, SLOT( onClickClose() ) ); - connect( buttonHelp, SIGNAL( clicked() ), this, SLOT( onClickHelp() ) ); - - connect( myParentElementLineEdit, SIGNAL( textChanged( const QString& ) ), this, SLOT( onSelectionValidate() ) ); - connect( myLocalPointLineEdit, SIGNAL( textChanged( const QString& ) ), this, SLOT( onSelectionValidate() ) ); - -} - -VVTK_PickingDlg::~VVTK_PickingDlg() -{ -} - -void VVTK_PickingDlg::AddActor( VISU_GaussPtsAct* theActor ) -{ - //theActor->SetPickingSettings( myPickingSettings.GetPointer() ); -} - -void VVTK_PickingDlg::RemoveActor( VISU_GaussPtsAct* theActor ) -{ - //theActor->SetPickingSettings( NULL ); -} - -void VVTK_PickingDlg::Update() -{ - float aCursorSize = 0.5; - float aPyramidHeight = 10.0; - float aPointTolerance = 0.1; - QColor aColor = Qt::yellow; - int anInfoWindowTransparency = 50; - int anInfoWindowPosition = VISU_PickingSettings::BelowPoint; - float aZoomFactor = 1.5; - int aStepNumber = 10; - bool aDisplayParentMesh = false; - - //if( !myPickingSettings->GetInitial() ) - { - myCursorSizeSpinBox->setValue( myPickingSettings->GetCursorSize() ); - myPyramidHeightSpinBox->setValue( myPickingSettings->GetPyramidHeight() ); - myPointToleranceSpinBox->setValue( myPickingSettings->GetPointTolerance() ); - myTransparencySpinBox->setValue( int(myPickingSettings->GetInfoWindowTransparency() * 100.0) ); - myPositionComboBox->setCurrentIndex( myPickingSettings->GetInfoWindowPosition() ); - myZoomFactorSpinBox->setValue( myPickingSettings->GetZoomFactor() ); - myStepNumberSpinBox->setValue( myPickingSettings->GetStepNumber() ); - myDisplayParentMeshCheckBox->setChecked( myPickingSettings->GetDisplayParentMesh() ); - - vtkFloatingPointType* aColor = myPickingSettings->GetColor(); - - //QPalette aPalette( mySelectionColorButton->palette() ); - /*aPalette.setColor( mySelectionColorButton->backgroundRole(), - QColor( ( int )( aColor[0] * 255.0 ), - ( int )( aColor[1] * 255.0 ), - ( int )( aColor[2] * 255.0 ) ) ); - mySelectionColorButton->setPalette( aPalette );*/ - mySelectionColorButton->setColor( - QColor( ( int )( aColor[0] * 255.0 ), - ( int )( aColor[1] * 255.0 ), - ( int )( aColor[2] * 255.0 ) ) ); - - return; - } - - SUIT_ResourceMgr* aResourceMgr = SUIT_Session::session()->resourceMgr(); - - aCursorSize = aResourceMgr->doubleValue( "VISU", "picking_cursor_size", aCursorSize ); - myCursorSizeSpinBox->setValue( aCursorSize ); - - aPyramidHeight = aResourceMgr->doubleValue( "VISU", "picking_pyramid_height", aPyramidHeight ); - myPyramidHeightSpinBox->setValue( aPyramidHeight ); - - aPointTolerance = aResourceMgr->doubleValue( "VISU", "picking_point_tolerance", aPointTolerance ); - myPointToleranceSpinBox->setValue( aPointTolerance ); - - aColor = aResourceMgr->colorValue( "VISU", "picking_selection_color", aColor ); - //QPalette aPalette( mySelectionColorButton->palette() ); - //aPalette.setColor( mySelectionColorButton->backgroundRole(), aColor ); - mySelectionColorButton->setColor( aColor ); - - anInfoWindowTransparency = aResourceMgr->integerValue( "VISU", "picking_transparency", anInfoWindowTransparency ); - myTransparencySpinBox->setValue( anInfoWindowTransparency ); - - anInfoWindowPosition = aResourceMgr->integerValue( "VISU", "picking_position", anInfoWindowPosition ); - myPositionComboBox->setCurrentIndex( anInfoWindowPosition ); - - aZoomFactor = aResourceMgr->doubleValue( "VISU", "picking_zoom_factor", aZoomFactor ); - myZoomFactorSpinBox->setValue( aZoomFactor ); - - aStepNumber = aResourceMgr->integerValue( "VISU", "picking_step_number", aStepNumber ); - myStepNumberSpinBox->setValue( aStepNumber ); - - aDisplayParentMesh = aResourceMgr->booleanValue( "VISU", "picking_display_parent_mesh", aDisplayParentMesh ); - myDisplayParentMeshCheckBox->setChecked( aDisplayParentMesh ); - - onClickApply(); -} - -void VVTK_PickingDlg::onSelectionValidate() -{ - myParentElementLineEdit->MarkValidated( myParentElementLineEdit->text() ); - myLocalPointLineEdit->MarkValidated( myLocalPointLineEdit->text() ); -} - -void VVTK_PickingDlg::onSelectionEvent() -{ - SelectorHelper aHelper( myInteractor ); - if ( !aHelper.get() ) - return; - - const TColStd_IndexedMapOfInteger& aMapIndex = aHelper.myMapIndex; - if ( aMapIndex.Extent() != 1 ) - return; - - int anObjId = aHelper.myMapIndex(1); - - VISU::TGaussPointID aGaussPointID = aHelper.myPipeLine->GetObjID( anObjId ); - - VISU::TCellID aCellID = aGaussPointID.first; - myParentElementLineEdit->setText( QString::number( aCellID ) ); - - VISU::TLocalPntID aLocalPntID = aGaussPointID.second; - myLocalPointLineEdit->setText( QString::number( aLocalPntID ) ); -} - -VISU_PickingSettings* -VVTK_PickingDlg -::GetPickingSettings() -{ - return myPickingSettings.GetPointer(); -} - -void VVTK_PickingDlg::SetInteractor( SVTK_RenderWindowInteractor* theInteractor ) -{ - myInteractor = theInteractor; - - theInteractor->GetDevice()->AddObserver(vtkCommand::KeyPressEvent, - myEventCallbackCommand.GetPointer(), - myPriority); - theInteractor->GetDevice()->AddObserver(vtkCommand::EndPickEvent, - myEventCallbackCommand.GetPointer(), - myPriority); - { - QValidator* aValidator = new GaussCellIDValidator( myLocalPointLineEdit, theInteractor, myParentElementLineEdit ); - myParentElementLineEdit->setValidator( aValidator ); - } - { - QValidator* aValidator = new GaussLocalPointIDValidator( myParentElementLineEdit, theInteractor, myLocalPointLineEdit ); - myLocalPointLineEdit->setValidator( aValidator ); - } -} - -void VVTK_PickingDlg::ProcessEvents(vtkObject* vtkNotUsed(theObject), - unsigned long theEvent, - void* theClientData, - void* vtkNotUsed(theCallData)) -{ - VVTK_PickingDlg* self = reinterpret_cast(theClientData); - - switch(theEvent){ - case vtkCommand::KeyPressEvent: - self->KeyPressed(); - break; - case vtkCommand::EndPickEvent: - self->onSelectionEvent(); - break; - } -} - -void VVTK_PickingDlg::KeyPressed() -{ - if( myInteractor->GetDevice()->GetKeyCode() == 'P' ) - { - bool aDisplayParentMesh = !myPickingSettings->GetDisplayParentMesh(); - myPickingSettings->SetDisplayParentMesh( aDisplayParentMesh ); - - myDisplayParentMeshCheckBox->setChecked( aDisplayParentMesh ); - - myPickingSettings->InvokeEvent(VISU::UpdatePickingSettingsEvent,NULL); - } -} - -void VVTK_PickingDlg::onClickApply() -{ - //myPickingSettings->SetInitial( false ); - - myPickingSettings->SetCursorSize( myCursorSizeSpinBox->value() ); - myPickingSettings->SetPyramidHeight( myPyramidHeightSpinBox->value() ); - myPickingSettings->SetPointTolerance( myPointToleranceSpinBox->value() ); - myPickingSettings->SetInfoWindowTransparency( myTransparencySpinBox->value() / 100.0 ); - myPickingSettings->SetInfoWindowPosition( myPositionComboBox->currentIndex() ); - myPickingSettings->SetZoomFactor( myZoomFactorSpinBox->value() ); - myPickingSettings->SetStepNumber( myStepNumberSpinBox->value() ); - myPickingSettings->SetDisplayParentMesh( myDisplayParentMeshCheckBox->isChecked() ); - - //QPalette aPalette( mySelectionColorButton->palette() ); - QColor aButtonColor = mySelectionColorButton->color();//aPalette.color(mySelectionColorButton->backgroundRole() ); - vtkFloatingPointType aColor[3]; - aColor[0] = aButtonColor.red() / 255.0; - aColor[1] = aButtonColor.green() / 255.0; - aColor[2] = aButtonColor.blue() / 255.0; - myPickingSettings->SetColor( aColor ); - - myPickingSettings->InvokeEvent( VISU::UpdatePickingSettingsEvent,NULL ); - - SelectorHelper aHelper( myInteractor ); - if ( !aHelper.get() ) - return; - - VISU::TCellID aCellID = myParentElementLineEdit->text().toInt(); - VISU::TLocalPntID aLocalPntID = myLocalPointLineEdit->text().toInt(); - VISU::PGaussPtsIDMapper anIDMapper = aHelper.myPipeLine->GetGaussPtsIDMapper(); - vtkIdType anObjId = anIDMapper->GetVTKID( VISU::TGaussPointID( aCellID, aLocalPntID ) ); - if ( anObjId < 0 ) - return; - - aHelper.myMapIndex.Clear(); - aHelper.myMapIndex.Add( anObjId ); - aHelper.mySelector->AddOrRemoveIndex( aHelper.myIO, aHelper.myMapIndex, false ); - aHelper.myActor->Highlight( aHelper.myIO ); - myInteractor->GetDevice()->CreateTimer( VTKI_TIMER_FIRST ); -} - -void VVTK_PickingDlg::onClickClose() -{ - reject(); -} - -void VVTK_PickingDlg::onClickHelp() -{ - QString aHelpFileName = "picking.htm"; - LightApp_Application* app = (LightApp_Application*)(SUIT_Session::session()->activeApplication()); - if (app) - app->onHelpContextModule(app->activeModule() ? app->moduleName(app->activeModule()->moduleName()) : QString(""), aHelpFileName); - else { - QString platform; -#ifdef WIN32 - platform = "winapplication"; -#else - platform = "application"; -#endif - SUIT_MessageBox::warning( 0, - QObject::tr("WRN_WARNING"), - QObject::tr("EXTERNAL_BROWSER_CANNOT_SHOW_PAGE"). - arg(app->resourceMgr()->stringValue("ExternalBrowser", platform)).arg(aHelpFileName), - QObject::tr("BUT_OK")); - } -} - -/*void VVTK_PickingDlg::onColorButtonPressed() -{ - QPalette aPalette( mySelectionColorButton->palette() ); - QColor aColor = QColorDialog:: - getColor( aPalette.color(mySelectionColorButton->backgroundRole() ), this ); - - if( aColor.isValid() ) - { - aPalette.setColor( mySelectionColorButton->backgroundRole(), - aColor ); - mySelectionColorButton->setPalette( aPalette ); - } -}*/ - -void VVTK_PickingDlg::keyPressEvent( QKeyEvent* e ) -{ - QDialog::keyPressEvent( e ); - if ( e->isAccepted() ) - return; - - if ( e->key() == Qt::Key_F1 ) - { - e->accept(); - onClickHelp(); - } -} diff --git a/src/VVTK/VVTK_PickingDlg.h b/src/VVTK/VVTK_PickingDlg.h deleted file mode 100644 index cd77197b..00000000 --- a/src/VVTK/VVTK_PickingDlg.h +++ /dev/null @@ -1,140 +0,0 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// -// File : VVTK_PickingDlg.h -// Author : Oleg Uvarov -// Module : VISU -// -#ifndef VVTK_PICKINGDLG_H -#define VVTK_PICKINGDLG_H - -#include "SVTK_DialogBase.h" - -#include -#include - -#include - -class vtkActorCollection; -class vtkCallbackCommand; -class vtkImageData; - -class QLabel; -class QComboBox; -class QCheckBox; -class QPushButton; - -class QtxAction; -class SalomeApp_DoubleSpinBox; -class SalomeApp_IntSpinBox; -class QtxColorButton; - -class VISU_GaussPtsAct; -class VISU_PickingSettings; - -class SVTK_MainWindow; -class SVTK_RenderWindowInteractor; -class VVTK_ValidatedLineEdit; - -//! Picking Dialog. -/*! - * Uses for set up picking preferenses and apply - * them to all actors in the current renderer. - */ -class VVTK_PickingDlg : public SVTK_DialogBase -{ - Q_OBJECT - -public: - VVTK_PickingDlg(QtxAction* theAction, - SVTK_MainWindow* theParent, - const char* theName); - - ~VVTK_PickingDlg(); - - //! Make an actor to listen the event of Update Picking Settings event. - void AddActor( VISU_GaussPtsAct* ); - void RemoveActor( VISU_GaussPtsAct* ); - - //! Update dialog contents. - void Update(); - - VISU_PickingSettings* GetPickingSettings(); - - void SetInteractor( SVTK_RenderWindowInteractor* ); - -protected slots: - void onSelectionEvent(); - void onClickApply(); - void onClickClose(); - void onClickHelp(); - - //void onColorButtonPressed(); - void onSelectionValidate(); - -private: - static void ProcessEvents(vtkObject* theObject, - unsigned long theEvent, - void* theClientData, - void* theCallData); - - void KeyPressed(); - void keyPressEvent( QKeyEvent* e ); - -private: - SalomeApp_DoubleSpinBox* myCursorSizeSpinBox; - SalomeApp_DoubleSpinBox* myPyramidHeightSpinBox; - QtxColorButton* mySelectionColorButton; - SalomeApp_DoubleSpinBox* myPointToleranceSpinBox; - SalomeApp_IntSpinBox* myTransparencySpinBox; - QComboBox* myPositionComboBox; - SalomeApp_DoubleSpinBox* myZoomFactorSpinBox; - SalomeApp_IntSpinBox* myStepNumberSpinBox; - QCheckBox* myDisplayParentMeshCheckBox; - - QtxAction* myAction; - vtkSmartPointer - myPickingSettings; - - VVTK_ValidatedLineEdit* - myParentElementLineEdit; - VVTK_ValidatedLineEdit* - myLocalPointLineEdit; - - SVTK_RenderWindowInteractor* - myInteractor; - - float myPriority; - vtkSmartPointer - myEventCallbackCommand; -}; - -class VVTK_ValidatedLineEdit : public QLineEdit -{ - Q_OBJECT; -public: - VVTK_ValidatedLineEdit( QWidget* parent ); - -public slots: - void MarkValidated( const QString& theText ); -}; - -#endif diff --git a/src/VVTK/VVTK_PrimitiveBox.cxx b/src/VVTK/VVTK_PrimitiveBox.cxx deleted file mode 100644 index c51539b3..00000000 --- a/src/VVTK/VVTK_PrimitiveBox.cxx +++ /dev/null @@ -1,377 +0,0 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// -// VISU VISUGUI : GUI of VISU component -// File : VVTK_PrimitiveBox.cxx -// Author : Oleg UVAROV -// Module : VISU -// -#include "VVTK_PrimitiveBox.h" -#include - -#include "VISU_OpenGLPointSpriteMapper.hxx" - -#include "SUIT_ResourceMgr.h" -#include "SUIT_Session.h" - -#include -#include - -#include -#include -#include -#include -#include -#include -#include - -#include - -using namespace std; - -VVTK_PrimitiveBox::VVTK_PrimitiveBox( QWidget* parent ) : - QGroupBox( parent ) -{ - SUIT_ResourceMgr* aResourceMgr = SUIT_Session::session()->resourceMgr(); - - setTitle( tr( "PRIMITIVE_TITLE" ) ); - //setColumnLayout(0, Qt::Vertical ); - //layout()->setSpacing( 0 ); - //layout()->setMargin( 0 ); - - QGridLayout* aLayout = new QGridLayout( this ); - aLayout->setAlignment(Qt::AlignTop | Qt::AlignCenter); - aLayout->setSpacing(6); - aLayout->setMargin(11); - - myPrimitiveType = VISU_OpenGLPointSpriteMapper::PointSprite; - - QString aRootDir = QString( getenv( "VISU_ROOT_DIR") ) + "/share/salome/resources/visu/"; - myMainTexture = aRootDir + "sprite_texture.bmp"; - myAlphaTexture = aRootDir + "sprite_alpha.bmp"; - - // Primitive Type - QGroupBox* aPrimitiveTypeGroup = new QGroupBox( this ); - aPrimitiveTypeGroup->setMinimumWidth( 450 ); - QHBoxLayout* aPrimLayout = new QHBoxLayout( aPrimitiveTypeGroup ); - aPrimLayout->setMargin( 0 ); - - //QButtonGroup* aPrimitiveTypeGroup = new QButtonGroup( 3, Qt::Horizontal, this, "PrimitiveTypeGroup" ); - //aPrimitiveTypeGroup->setMinimumWidth( 450 ); - //aPrimitiveTypeGroup->setRadioButtonExclusive( true ); - //aPrimitiveTypeGroup->setFrameStyle( QFrame::NoFrame ); - //aPrimitiveTypeGroup->layout()->setMargin( 0 ); - - myPointSpriteButton = new QRadioButton( tr( "POINT_SPRITE" ), aPrimitiveTypeGroup ); - myOpenGLPointButton = new QRadioButton( tr( "OPENGL_POINT" ), aPrimitiveTypeGroup ); - myGeomSphereButton = new QRadioButton( tr( "GEOMETRICAL_SPHERE" ), aPrimitiveTypeGroup ); - - aPrimLayout->addWidget( myPointSpriteButton ); - aPrimLayout->addWidget( myOpenGLPointButton ); - aPrimLayout->addWidget( myGeomSphereButton ); - - aLayout->addWidget( aPrimitiveTypeGroup, 0, 0, 1, 2 ); - - // Clamp ( Point Sprite & OpenGL Point ) - myClampLabel = new QLabel( tr( "CLAMP" ), this ); - myClampSpinBox = new SalomeApp_DoubleSpinBox( this ); - VISU::initSpinBox( myClampSpinBox, 1.0, 512.0, 1.0, "parametric_precision" ); - myClampSpinBox->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) ); - - aLayout->addWidget( myClampLabel, 1, 0 ); - aLayout->addWidget( myClampSpinBox, 1, 1, 1, 2 ); - - // Main Texture ( Point Sprite ) - myMainTextureLabel = new QLabel( tr( "MAIN_TEXTURE" ), this ); - myMainTextureLineEdit = new QLineEdit( this ); - myMainTextureButton = new QPushButton( this ); - myMainTextureButton->setAutoDefault( false ); - myMainTextureButton->setIcon( aResourceMgr->loadPixmap( "VISU", tr( "ICON_LOAD_TEXTURE" ) ) ); - connect( myMainTextureButton, SIGNAL( clicked() ), this, SLOT( onBrowseMainTexture() ) ); - - aLayout->addWidget( myMainTextureLabel, 2, 0 ); - aLayout->addWidget( myMainTextureLineEdit, 2, 1 ); - aLayout->addWidget( myMainTextureButton, 2, 2 ); - - // Alpha Texture ( Point Sprite ) - myAlphaTextureLabel = new QLabel( tr( "ALPHA_TEXTURE" ), this ); - myAlphaTextureLineEdit = new QLineEdit( this ); - myAlphaTextureButton = new QPushButton( this ); - myAlphaTextureButton->setAutoDefault( false ); - myAlphaTextureButton->setIcon( aResourceMgr->loadPixmap( "VISU", tr( "ICON_LOAD_TEXTURE" ) ) ); - connect( myAlphaTextureButton, SIGNAL( clicked() ), this, SLOT( onBrowseAlphaTexture() ) ); - - aLayout->addWidget( myAlphaTextureLabel, 3, 0 ); - aLayout->addWidget( myAlphaTextureLineEdit, 3, 1 ); - aLayout->addWidget( myAlphaTextureButton, 3, 2 ); - - // Alpha Threshold ( Point Sprite ) - myAlphaThresholdLabel = new QLabel( tr( "ALPHA_THRESHOLD" ), this ); - myAlphaThresholdSpinBox = new SalomeApp_DoubleSpinBox( this ); - VISU::initSpinBox( myAlphaThresholdSpinBox, 0.0, 1.0, 0.1, "parametric_precision" ); - myAlphaThresholdSpinBox->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) ); - - aLayout->addWidget( myAlphaThresholdLabel, 4, 0 ); - aLayout->addWidget( myAlphaThresholdSpinBox, 4, 1, 1, 2 ); - - // Resolution ( Geometrical Sphere ) - myResolutionLabel = new QLabel( tr( "RESOLUTION" ), this ); - myResolutionSpinBox = new SalomeApp_IntSpinBox( this ); - VISU::initSpinBox( myResolutionSpinBox, 3, 100, 1 ); - myResolutionSpinBox->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) ); - connect( myResolutionSpinBox, SIGNAL( valueChanged( int ) ), this, SLOT( onResolutionChanged( int ) ) ); - - aLayout->addWidget( myResolutionLabel, 5, 0 ); - aLayout->addWidget( myResolutionSpinBox, 5, 1, 1, 2 ); - - // Number of faces ( Geometrical Sphere ) - myFaceNumberLabel = new QLabel( tr( "FACE_NUMBER" ), this ); - myFaceNumberLineEdit = new QLineEdit( this ); - myFaceNumberLineEdit->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) ); - myFaceNumberLineEdit->setEnabled( false ); - //myFaceNumberLineEdit->setReadOnly( true ); - - aLayout->addWidget( myFaceNumberLabel, 6, 0 ); - aLayout->addWidget( myFaceNumberLineEdit, 6, 1, 1, 2 ); - - // Notification ( Geometrical Sphere ) - myFaceLimitLabel = new QLabel( tr( "FACE_LIMIT" ), this ); - myFaceLimitSpinBox = new SalomeApp_IntSpinBox( this ); - VISU::initSpinBox( myFaceLimitSpinBox, 10, 1000000, 10 ); - myFaceLimitSpinBox->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) ); - - aLayout->addWidget( myFaceLimitLabel, 7, 0 ); - aLayout->addWidget( myFaceLimitSpinBox, 7, 1, 1, 2 ); - - connect( myPointSpriteButton, SIGNAL( clicked() ), this, SLOT( onTogglePointSprite() ) ); - connect( myOpenGLPointButton, SIGNAL( clicked() ), this, SLOT( onToggleOpenGLPoint() ) ); - connect( myGeomSphereButton, SIGNAL( clicked() ), this, SLOT( onToggleGeomSphere() ) ); -} - -void VVTK_PrimitiveBox::onTogglePointSprite() -{ - myPrimitiveType = VISU_OpenGLPointSpriteMapper::PointSprite; - - myClampLabel->show(); - myClampSpinBox->show(); - - myMainTextureLabel->show(); - myMainTextureLineEdit->show(); - myMainTextureButton->show(); - - myAlphaTextureLabel->show(); - myAlphaTextureLineEdit->show(); - myAlphaTextureButton->show(); - - myAlphaThresholdLabel->show(); - myAlphaThresholdSpinBox->show(); - - myResolutionLabel->hide(); - myResolutionSpinBox->hide(); - - myFaceNumberLabel->hide(); - myFaceNumberLineEdit->hide(); - - myFaceLimitLabel->hide(); - myFaceLimitSpinBox->hide(); -} - -void VVTK_PrimitiveBox::onToggleOpenGLPoint() -{ - myPrimitiveType = VISU_OpenGLPointSpriteMapper::OpenGLPoint; - - myClampLabel->show(); - myClampSpinBox->show(); - - myMainTextureLabel->hide(); - myMainTextureLineEdit->hide(); - myMainTextureButton->hide(); - - myAlphaTextureLabel->hide(); - myAlphaTextureLineEdit->hide(); - myAlphaTextureButton->hide(); - - myAlphaThresholdLabel->hide(); - myAlphaThresholdSpinBox->hide(); - - myResolutionLabel->hide(); - myResolutionSpinBox->hide(); - - myFaceNumberLabel->hide(); - myFaceNumberLineEdit->hide(); - - myFaceLimitLabel->hide(); - myFaceLimitSpinBox->hide(); -} - -void VVTK_PrimitiveBox::onToggleGeomSphere() -{ - myPrimitiveType = VISU_OpenGLPointSpriteMapper::GeomSphere; - - myClampLabel->hide(); - myClampSpinBox->hide(); - - myMainTextureLabel->hide(); - myMainTextureLineEdit->hide(); - myMainTextureButton->hide(); - - myAlphaTextureLabel->hide(); - myAlphaTextureLineEdit->hide(); - myAlphaTextureButton->hide(); - - myAlphaThresholdLabel->hide(); - myAlphaThresholdSpinBox->hide(); - - myResolutionLabel->show(); - myResolutionSpinBox->show(); - - myFaceNumberLabel->show(); - myFaceNumberLineEdit->show(); - - myFaceLimitLabel->show(); - myFaceLimitSpinBox->show(); -} - -void VVTK_PrimitiveBox::onResolutionChanged( int theResolution ) -{ - setFaceNumber( 2 * theResolution * ( theResolution - 2 ) ); -} - -void VVTK_PrimitiveBox::setPrimitiveType( int theType ) -{ - myPrimitiveType = theType; - - switch( myPrimitiveType ) - { - case VISU_OpenGLPointSpriteMapper::PointSprite : - myPointSpriteButton->setChecked( true ); - onTogglePointSprite(); - break; - case VISU_OpenGLPointSpriteMapper::OpenGLPoint : - myOpenGLPointButton->setChecked( true ); - onToggleOpenGLPoint(); - break; - case VISU_OpenGLPointSpriteMapper::GeomSphere : - myGeomSphereButton->setChecked( true ); - onToggleGeomSphere(); - break; - default : break; - } -} - -float VVTK_PrimitiveBox::getClamp() const -{ - return myClampSpinBox->value(); -} - -void VVTK_PrimitiveBox::setClamp( float theClamp ) -{ - myClampSpinBox->setValue( theClamp ); -} - -void VVTK_PrimitiveBox::setClampMaximum( float theClampMaximum ) -{ - myClampSpinBox->setMaximum( theClampMaximum ); -} - -void VVTK_PrimitiveBox::setMainTexture( const QString& theMainTexture ) -{ - myMainTexture = theMainTexture; - myMainTextureLineEdit->setText( theMainTexture.section( '/', -1 ) ); -} - -void VVTK_PrimitiveBox::setAlphaTexture( const QString& theAlphaTexture ) -{ - myAlphaTexture = theAlphaTexture; - myAlphaTextureLineEdit->setText( theAlphaTexture.section( '/', -1 ) ); -} - -float VVTK_PrimitiveBox::getAlphaThreshold() const -{ - return myAlphaThresholdSpinBox->value(); -} - -void VVTK_PrimitiveBox::setAlphaThreshold( float theAlphaThreshold ) -{ - myAlphaThresholdSpinBox->setValue( theAlphaThreshold ); -} - -int VVTK_PrimitiveBox::getResolution() const -{ - return myResolutionSpinBox->value(); -} - -void VVTK_PrimitiveBox::setResolution( int theResolution ) -{ - myResolutionSpinBox->setValue( theResolution ); -} - -int VVTK_PrimitiveBox::getFaceNumber() const -{ - int aResolution = getResolution(); - return 2 * aResolution * ( aResolution - 2 ); - //return myFaceNumberLineEdit->text().toInt(); -} - -void VVTK_PrimitiveBox::setFaceNumber( int theFaceNumber ) -{ - myFaceNumberLineEdit->setText( QString::number( theFaceNumber ) ); -} - -int VVTK_PrimitiveBox::getFaceLimit() const -{ - return myFaceLimitSpinBox->value(); -} - -void VVTK_PrimitiveBox::setFaceLimit( int theFaceLimit ) -{ - myFaceLimitSpinBox->setValue( theFaceLimit ); -} - -void VVTK_PrimitiveBox::onBrowseMainTexture() -{ - QString aRootDir = QString( getenv( "VISU_ROOT_DIR") ) + "/share/salome/resources/visu/"; - QString aFileName = QFileDialog::getOpenFileName( this, - 0, - aRootDir, - "Bitmap (*.bmp *.jpg *.png)" ); - - if( aFileName.isNull() ) - return; - - myMainTexture = aFileName; - myMainTextureLineEdit->setText( aFileName.section( '/', -1 ) ); -} - -void VVTK_PrimitiveBox::onBrowseAlphaTexture() -{ - QString aRootDir = QString( getenv( "VISU_ROOT_DIR") ) + "/share/salome/resources/visu/"; - QString aFileName = QFileDialog::getOpenFileName( this, - 0, - aRootDir, - "Bitmap (*.bmp *.jpg *.png)" ); - - if( aFileName.isNull() ) - return; - - myAlphaTexture = aFileName; - myAlphaTextureLineEdit->setText( aFileName.section( '/', -1 ) ); -} diff --git a/src/VVTK/VVTK_PrimitiveBox.h b/src/VVTK/VVTK_PrimitiveBox.h deleted file mode 100644 index ed4ff5a0..00000000 --- a/src/VVTK/VVTK_PrimitiveBox.h +++ /dev/null @@ -1,122 +0,0 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// -// VISU VISUGUI : GUI of VISU component -// File : VVTK_PrimitiveBox.h -// Author : Oleg UVAROV -// Module : VISU -// -#ifndef VVTK_PRIMITIVEBOX_H -#define VVTK_PRIMITIVEBOX_H - -#include "VVTK.h" - -#include - -class QLabel; -class QLineEdit; -class QPushButton; -class QRadioButton; - -class SalomeApp_DoubleSpinBox; -class SalomeApp_IntSpinBox; - -class VVTK_EXPORT VVTK_PrimitiveBox : public QGroupBox -{ - Q_OBJECT - -public: - VVTK_PrimitiveBox( QWidget* ); - ~VVTK_PrimitiveBox() {} - -public: - int getPrimitiveType() const { return myPrimitiveType; } - void setPrimitiveType( int ); - - float getClamp() const; - void setClamp( float ); - void setClampMaximum( float ); - - QString getMainTexture() const { return myMainTexture; } - void setMainTexture( const QString& ); - - QString getAlphaTexture() const { return myAlphaTexture; } - void setAlphaTexture( const QString& ); - - float getAlphaThreshold() const; - void setAlphaThreshold( float ); - - int getResolution() const; - void setResolution( int ); - - int getFaceNumber() const; - void setFaceNumber( int ); - - int getFaceLimit() const; - void setFaceLimit( int ); - -protected slots: - void onTogglePointSprite(); - void onToggleOpenGLPoint(); - void onToggleGeomSphere(); - - void onBrowseMainTexture(); - void onBrowseAlphaTexture(); - - void onResolutionChanged( int ); - -private: - int myPrimitiveType; - - QRadioButton* myPointSpriteButton; - QRadioButton* myOpenGLPointButton; - QRadioButton* myGeomSphereButton; - - QString myMainTexture; - QString myAlphaTexture; - - QLabel* myClampLabel; - SalomeApp_DoubleSpinBox* myClampSpinBox; - - QLabel* myMainTextureLabel; - QLineEdit* myMainTextureLineEdit; - QPushButton* myMainTextureButton; - - QLabel* myAlphaTextureLabel; - QLineEdit* myAlphaTextureLineEdit; - QPushButton* myAlphaTextureButton; - - QLabel* myAlphaThresholdLabel; - SalomeApp_DoubleSpinBox* myAlphaThresholdSpinBox; - - QLabel* myResolutionLabel; - SalomeApp_IntSpinBox* myResolutionSpinBox; - - QLabel* myFaceNumberLabel; - QLineEdit* myFaceNumberLineEdit; - - QLabel* myFaceLimitLabel; - SalomeApp_IntSpinBox* myFaceLimitSpinBox; -}; - - - -#endif diff --git a/src/VVTK/VVTK_Recorder.cxx b/src/VVTK/VVTK_Recorder.cxx deleted file mode 100755 index 9ef0f6dc..00000000 --- a/src/VVTK/VVTK_Recorder.cxx +++ /dev/null @@ -1,490 +0,0 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// -// SALOME VTKViewer : build VTK viewer into Salome desktop -// File : -// Author : -// Module : -// $Header$ -// -#include "VVTK_Recorder.h" - -#include "VVTK_ImageWriter.h" -#include "VVTK_ImageWriterMgr.h" - -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include - -#ifndef WIN32 -#include -#endif - -#include -#include -#include - -#include "utilities.h" - -#ifdef _DEBUG_ -static int MYDEBUG = 0; -#else -static int MYDEBUG = 0; -#endif - - -namespace -{ - //---------------------------------------------------------------------------- - inline - void - GetNameJPEG(const std::string& thePreffix, - const int theIndex, - std::string& theName) - { - using namespace std; - ostringstream aStream; - aStream<SetClientData(this); - myCommand->SetCallback(VVTK_Recorder::ProcessEvents); -} - - -//---------------------------------------------------------------------------- -VVTK_Recorder -::~VVTK_Recorder() -{ - myCommand->Delete(); - myFilter->Delete(); - delete myWriterMgr; -} - - -//---------------------------------------------------------------------------- -void -VVTK_Recorder -::CheckExistAVIMaker() -{ - myErrorStatus = 0; - using namespace std; - ostringstream aStream; - aStream<<"which "<& /dev/null"; - std::string anAVIMakeCheck = aStream.str(); - int iErr = system(anAVIMakeCheck.c_str()); - if(iErr != 0) - myErrorStatus = 127; -} - - -//---------------------------------------------------------------------------- -void -VVTK_Recorder -::SetName(const char* theName) -{ - myName = theName; -} - -const char* -VVTK_Recorder::Name() const -{ - return myName.c_str(); -} - - -//---------------------------------------------------------------------------- -void -VVTK_Recorder -::SetNbFPS(const double theNbFPS) -{ - myNbFPS = theNbFPS; -} - -double -VVTK_Recorder -::NbFPS() const -{ - return myNbFPS; -} - - -//---------------------------------------------------------------------------- -void -VVTK_Recorder -::SetQuality(int theQuality) -{ - myQuality = theQuality; -} - -int -VVTK_Recorder -::GetQuality() const -{ - return myQuality; -} - - -//---------------------------------------------------------------------------- -void -VVTK_Recorder -::SetRenderWindow(vtkRenderWindow* theRenderWindow) -{ - myRenderWindow = theRenderWindow; -} - -vtkRenderWindow* -VVTK_Recorder -::RenderWindow() -{ - return myRenderWindow; -} - - -//---------------------------------------------------------------------------- -void -VVTK_Recorder -::SetProgressiveMode(bool theProgressiveMode) -{ - myProgressiveMode = theProgressiveMode; -} - -bool -VVTK_Recorder -::GetProgressiveMode() const -{ - return myProgressiveMode; -} - - -//---------------------------------------------------------------------------- -void -VVTK_Recorder -::SetUseSkippedFrames(bool theUseSkippedFrames) -{ - myUseSkippedFrames = theUseSkippedFrames; -} - -bool -VVTK_Recorder -::UseSkippedFrames() const -{ - return myUseSkippedFrames; -} - - -//---------------------------------------------------------------------------- -int -VVTK_Recorder -::ErrorStatus() const -{ - return myErrorStatus; -} - -int -VVTK_Recorder -::State() const -{ - return myState; -} - - -//---------------------------------------------------------------------------- -void -VVTK_Recorder -::ProcessEvents(vtkObject* vtkNotUsed(theObject), - unsigned long theEvent, - void* theClientData, - void* vtkNotUsed(theCallData)) -{ - if(vtkObject* anObj = reinterpret_cast(theClientData)){ - if(VVTK_Recorder* aSelf = dynamic_cast(anObj)){ - if(theEvent==vtkCommand::EndEvent){ - if(aSelf->State() == VVTK_Recorder::VVTK_Recorder_Record){ - aSelf->DoRecord(); - } - } - } - } -} - - -//---------------------------------------------------------------------------- -void -VVTK_Recorder -::Record() -{ - if(myState == VVTK_Recorder_Stop){ - if(myRenderWindow){ - myState = VVTK_Recorder_Record; - myFilter->SetInput(myRenderWindow); - myFrameIndex = -1; - myNbWrittenFrames = 0; - myRenderWindow->RemoveObserver(myCommand); - myRenderWindow->AddObserver(vtkCommand::EndEvent, - myCommand, - myPriority); - myRenderWindow->Render(); - } - } -} - - -//---------------------------------------------------------------------------- -void -VVTK_Recorder -::Stop() -{ - QApplication::setOverrideCursor( Qt::WaitCursor ); - - if(myState == VVTK_Recorder_Record){ - if(!myPaused) - DoRecord(); - - myWriterMgr->Stop(); - - if(myUseSkippedFrames) - AddSkippedFrames(); - - myFrameIndexes.clear(); - - MakeFileAVI(); - } - myState = VVTK_Recorder_Stop; - myPaused = 0; - - QApplication::restoreOverrideCursor(); -} - - -//---------------------------------------------------------------------------- -void -VVTK_Recorder -::Pause() -{ - myPaused = myPaused ? 0 : 1; - if(myPaused && !myFrameIndexes.empty()){ - myFrameIndexes.back() *= -1; - if(MYDEBUG) MESSAGE("VVTK_Recorder::Pause - myFrameIndexes.back() = "< -#include -#include - -#include - -class vtkRenderWindow; -class vtkCallbackCommand; -class vtkWindowToImageFilter; -class VVTK_ImageWriterMgr; -// -class VVTK_Recorder : public vtkObject -{ - protected: - enum State { - VVTK_Recorder_Unknown=0, - VVTK_Recorder_Record, - VVTK_Recorder_Stop - }; - - public: - static VVTK_Recorder *New(); - vtkTypeRevisionMacro(VVTK_Recorder,vtkObject); - - void - SetRenderWindow(vtkRenderWindow* theRenderWindow); - - vtkRenderWindow* - RenderWindow(); - - void - SetName(const char *theName); - - const char* - Name() const; - - void - SetNbFPS(const double theNbFPS); - - double - NbFPS() const; - - void - SetQuality(int theQuality); - - int - GetQuality() const; - - void - SetProgressiveMode(bool theProgressiveMode); - - bool - GetProgressiveMode() const; - - void - SetUseSkippedFrames(bool theUseSkippedFrames); - - bool - UseSkippedFrames() const; - - void - Record(); - - void - Pause(); - - void - Stop(); - - int - State() const; - - int - ErrorStatus() const; - - void - CheckExistAVIMaker(); - -protected : - VVTK_Recorder(); - - ~VVTK_Recorder(); - - void - DoRecord(); - - void - MakeFileAVI(); - - void - AddSkippedFrames(); - - void - PreWrite(); - - static - void - ProcessEvents(vtkObject* theObject, - unsigned long theEvent, - void* theClientData, - void* theCallData); - -protected : - int myState; - int myPaused; - int myErrorStatus; - - float myPriority; - double myTimeStart; - - int myFrameIndex; - int myNbWrittenFrames; - - double myNbFPS; - int myQuality; - bool myProgressiveMode; - - typedef std::vector TFrameIndexes; - TFrameIndexes myFrameIndexes; - bool myUseSkippedFrames; - - std::string myName; - std::string myNameAVIMaker; - - vtkCallbackCommand *myCommand; - vtkRenderWindow *myRenderWindow; - vtkWindowToImageFilter *myFilter; - VVTK_ImageWriterMgr *myWriterMgr; - - -private: - VVTK_Recorder(const VVTK_Recorder&); //Not implemented - void operator=(const VVTK_Recorder&); //Not implemented -}; -#endif diff --git a/src/VVTK/VVTK_RecorderDlg.cxx b/src/VVTK/VVTK_RecorderDlg.cxx deleted file mode 100644 index 0904de52..00000000 --- a/src/VVTK/VVTK_RecorderDlg.cxx +++ /dev/null @@ -1,231 +0,0 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// -// VISU VISUGUI : GUI of VISU component -// File : VVTK_RecorderDlg.cxx -// Author : Oleg UVAROV -// Module : VISU -// -#include "VVTK_RecorderDlg.h" -#include "VVTK_Recorder.h" -#include - -#include "SUIT_FileDlg.h" -#include "SUIT_MessageBox.h" -#include "SUIT_ResourceMgr.h" -#include "SUIT_Session.h" - -#include -#include - -#include "LightApp_Application.h" - -#include "CAM_Module.h" - -#include -#include -#include -#include -#include -#include -#include -#include - -/*! - * Constructor - */ -VVTK_RecorderDlg::VVTK_RecorderDlg( QWidget* theParent, VVTK_Recorder* theRecorder ): - QDialog( theParent ), - myRecorder( theRecorder ) -{ - setWindowTitle( tr( "DLG_RECORDER_TITLE" ) ); - - SUIT_ResourceMgr* aResourceMgr = SUIT_Session::session()->resourceMgr(); - - QVBoxLayout* aTopLayout = new QVBoxLayout( this ); - aTopLayout->setSpacing( 6 ); - aTopLayout->setMargin( 6 ); - //aTopLayout->setAutoAdd( true ); - - // Settings - QGroupBox* mySettingsBox = new QGroupBox( tr( "SETTINGS" ), this ); - //mySettingsBox->setColumnLayout( 0, Qt::Vertical ); - //mySettingsBox->layout()->setSpacing( 0 ); - //mySettingsBox->layout()->setMargin( 0 ); - - QGridLayout* aSettingsLayout = new QGridLayout( mySettingsBox ); - aSettingsLayout->setSpacing( 6 ); - aSettingsLayout->setMargin( 11 ); - - QLabel* aFileNameLabel = new QLabel( tr( "FILE_NAME" ), mySettingsBox ); - myFileNameLineEdit = new QLineEdit( mySettingsBox ); - myFileNameLineEdit->setMinimumWidth( 250 ); - myFileNameLineEdit->setReadOnly( true ); - - QLabel* aRecordingModeLabel = new QLabel( tr( "RECORDING_MODE" ), mySettingsBox ); - myRecordingModeComboBox = new QComboBox( mySettingsBox ); - myRecordingModeComboBox->addItem( tr( "SKIPPED_FRAMES" ) ); - myRecordingModeComboBox->addItem( tr( "ALL_DISLPAYED_FRAMES" ) ); - myRecordingModeComboBox->setCurrentIndex( aResourceMgr->integerValue( "VISU", "recorder_mode", 1 ) ); - - QLabel* aFPSLabel = new QLabel( tr( "FPS" ), mySettingsBox ); - myFPSSpinBox = new SalomeApp_DoubleSpinBox( mySettingsBox ); - VISU::initSpinBox( myFPSSpinBox, 0.1, 100.0, 1.0, "parametric_precision" ); - myFPSSpinBox->setValue( aResourceMgr->doubleValue( "VISU", "recorder_fps", 10.0 ) ); - - QLabel* aQualityLabel = new QLabel( tr( "QUALITY" ), mySettingsBox ); - myQualitySpinBox = new SalomeApp_IntSpinBox( mySettingsBox ); - VISU::initSpinBox( myQualitySpinBox, 1, 100, 1 ); - myQualitySpinBox->setValue( aResourceMgr->integerValue( "VISU", "recorder_quality", 80 ) ); - - myProgressiveCheckBox = new QCheckBox( tr( "PROGRESSIVE" ), mySettingsBox ); - myProgressiveCheckBox->setChecked( aResourceMgr->booleanValue( "VISU", "recorder_progressive", false ) ); - - aSettingsLayout->addWidget( aFileNameLabel, 0, 0 ); - aSettingsLayout->addWidget( myFileNameLineEdit, 1, 0, 1, 2 ); - //aSettingsLayout->addWidget( aFileNameButton, 1, 2 ); - aSettingsLayout->addWidget( aRecordingModeLabel, 2, 0 ); - aSettingsLayout->addWidget( myRecordingModeComboBox, 2, 1 ); - aSettingsLayout->addWidget( aFPSLabel, 3, 0 ); - aSettingsLayout->addWidget( myFPSSpinBox, 3, 1 ); - aSettingsLayout->addWidget( aQualityLabel, 4, 0 ); - aSettingsLayout->addWidget( myQualitySpinBox, 4, 1 ); - aSettingsLayout->addWidget( myProgressiveCheckBox, 5, 0 ); - - aTopLayout->addWidget( mySettingsBox ); - - // Start / Close - QGroupBox* CommonGroup = new QGroupBox( this ); - //CommonGroup->setColumnLayout(0, Qt::Vertical ); - //CommonGroup->layout()->setSpacing( 0 ); - //CommonGroup->layout()->setMargin( 0 ); - QGridLayout* CommonGroupLayout = new QGridLayout( CommonGroup ); - CommonGroupLayout->setAlignment( Qt::AlignTop ); - CommonGroupLayout->setSpacing( 6 ); - CommonGroupLayout->setMargin( 11 ); - - QPushButton* aStartButton = new QPushButton( tr( "START" ), CommonGroup ); - aStartButton->setAutoDefault( true ); - aStartButton->setDefault( true ); - CommonGroupLayout->addWidget( aStartButton, 0, 0 ); - CommonGroupLayout->addItem( new QSpacerItem( 5, 5, QSizePolicy::Expanding, QSizePolicy::Minimum ), 0, 1 ); - - QPushButton* aCloseButton = new QPushButton( tr( "CLOSE" ), CommonGroup ); - aCloseButton->setAutoDefault( true ); - CommonGroupLayout->addWidget( aCloseButton, 0, 2 ); - - QPushButton* aHelpButton = new QPushButton( tr( "HELP" ), CommonGroup ); - aHelpButton->setAutoDefault( true ); - CommonGroupLayout->addWidget( aHelpButton, 0, 3 ); - - aTopLayout->addWidget( CommonGroup ); - - connect( aStartButton, SIGNAL( clicked() ), this, SLOT( onStart() ) ); - connect( aCloseButton, SIGNAL( clicked() ), this, SLOT( onClose() ) ); - connect( aHelpButton, SIGNAL( clicked() ), this, SLOT( onHelp() ) ); -} - -VVTK_RecorderDlg::~VVTK_RecorderDlg() -{ -} - -void VVTK_RecorderDlg::onStart() -{ - if( myFileName.isNull() ) - return; - - myRecorder->SetName( (const char*)myFileName.toLatin1() ); - - myRecorder->SetUseSkippedFrames( myRecordingModeComboBox->currentIndex() == 0 ); - myRecorder->SetNbFPS( myFPSSpinBox->value() ); - myRecorder->SetQuality( myQualitySpinBox->value() ); - myRecorder->SetProgressiveMode( myProgressiveCheckBox->isChecked() ); - - accept(); - -} - -void VVTK_RecorderDlg::onClose() -{ - reject(); -} - -void VVTK_RecorderDlg::onHelp() -{ - QString aHelpFileName = "animation_in_gauss_viewer.htm"; - LightApp_Application* app = (LightApp_Application*)(SUIT_Session::session()->activeApplication()); - if (app) - app->onHelpContextModule(app->activeModule() ? app->moduleName(app->activeModule()->moduleName()) : QString(""), aHelpFileName); - else { - QString platform; -#ifdef WIN32 - platform = "winapplication"; -#else - platform = "application"; -#endif - SUIT_MessageBox::warning(0, QObject::tr("WRN_WARNING"), - QObject::tr("EXTERNAL_BROWSER_CANNOT_SHOW_PAGE"). - arg(app->resourceMgr()->stringValue("ExternalBrowser", platform)).arg(aHelpFileName) ); - } -} - -bool VVTK_RecorderDlg::onBrowseFile() -{ - QString aRootDir = QString( getenv( "VISU_ROOT_DIR") ); - - QStringList aFilter; - aFilter.append( tr( "FLT_AVI_FILES" ) ); - aFilter.append( tr( "FLT_ALL_FILES" ) ); - - QString aFileName = SUIT_FileDlg::getFileName( this, getenv( "HOME" ), aFilter, - tr( "FILE_NAME" ), false ); - - if( aFileName.isNull() ) - return false; - - myFileName = aFileName; - myFileNameLineEdit->setText( aFileName.section( '/', -1 ) ); - - return true; -} - -int VVTK_RecorderDlg::exec() -{ - if( !onBrowseFile() ) - { - reject(); - return 0; - } - return QDialog::exec(); -} - -void VVTK_RecorderDlg::keyPressEvent( QKeyEvent* e ) -{ - QDialog::keyPressEvent( e ); - if ( e->isAccepted() ) - return; - - if ( e->key() == Qt::Key_F1 ) - { - e->accept(); - onHelp(); - } -} diff --git a/src/VVTK/VVTK_RecorderDlg.h b/src/VVTK/VVTK_RecorderDlg.h deleted file mode 100644 index 7bdf6197..00000000 --- a/src/VVTK/VVTK_RecorderDlg.h +++ /dev/null @@ -1,83 +0,0 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// -// VISU VISUGUI : GUI of VISU component -// File : VVTK_RecorderDlg.h -// Author : Oleg UVAROV -// Module : VISU -// $Header$ -// -#ifndef VVTK_RECORDERDLG_H -#define VVTK_RECORDERDLG_H - -#include -#include - -class QCheckBox; -class QComboBox; -class QGroupBox; -class QLCDNumber; -class QLineEdit; -class QPushButton; -class QTimer; - -class SalomeApp_DoubleSpinBox; -class SalomeApp_IntSpinBox; - -class VVTK_Recorder; - -//! Recorder Dialog. -class VVTK_RecorderDlg : public QDialog -{ - Q_OBJECT - -public: - VVTK_RecorderDlg( QWidget*, VVTK_Recorder* ); - ~VVTK_RecorderDlg(); - - int exec(); - - QString fileName() const { return myFileName; } - -private: - virtual void keyPressEvent( QKeyEvent* ); - -protected slots: - void onStart(); - void onClose(); - void onHelp(); - - bool onBrowseFile(); - -private: - VVTK_Recorder* myRecorder; - QString myFileName; - - QLineEdit* myFileNameLineEdit; - - QComboBox* myRecordingModeComboBox; - SalomeApp_DoubleSpinBox* myFPSSpinBox; - SalomeApp_IntSpinBox* myQualitySpinBox; - QCheckBox* myProgressiveCheckBox; - -}; - -#endif diff --git a/src/VVTK/VVTK_Renderer.cxx b/src/VVTK/VVTK_Renderer.cxx deleted file mode 100644 index 23cc1c54..00000000 --- a/src/VVTK/VVTK_Renderer.cxx +++ /dev/null @@ -1,437 +0,0 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// -// SALOME VTKViewer : build VTK viewer into Salome desktop -// File : -// Author : -// Module : -// $Header$ -// -#include "VVTK_Renderer.h" - -#include "VISU_GaussPtsAct.h" -#include "VISU_GaussPointsPL.hxx" -#include "VISU_WidgetCtrl.hxx" -#include "VISU_PlanesWidget.hxx" -#include "VISU_SphereWidget.hxx" - -#include - -#include -#include -#include - -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "utilities.h" - -#ifdef _DEBUG_ -static int MYDEBUG = 0; -#else -static int MYDEBUG = 0; -#endif - -//====================================================================== -class VISU_FPSActor : public vtkTextActor -{ -public: - vtkTypeMacro( VISU_FPSActor, vtkTextActor); - static - VISU_FPSActor* - New(); - - virtual - int - RenderOpaqueGeometry(vtkViewport *theViewport); -}; - -//====================================================================== -vtkStandardNewMacro(VISU_FPSActor); - -//====================================================================== -// function: RenderOpaqueGeometry -// purpose : -//====================================================================== -int -VISU_FPSActor -::RenderOpaqueGeometry(vtkViewport *theViewport) -{ - // It's impossible to render opaque geometry of text actor - // if the size of the viewport is less than 1.0 - int *size = theViewport->GetSize(); - if( size[0] <= 1.0 || size[1] <= 1.0 ) - return 1; - - if(vtkRenderer *aRenderer = dynamic_cast(theViewport)){ - static float aTol = 1.e-6; - float aLastRenderTimeInSeconds = aRenderer->GetLastRenderTimeInSeconds(); - if(aLastRenderTimeInSeconds > aTol){ - size_t aNumberOfCells = 0; - VTK::ActorCollectionCopy aCopy(aRenderer->GetActors()); - if(vtkActorCollection *anActorCollection = aCopy.GetActors()){ - anActorCollection->InitTraversal(); - while(vtkActor *anActor = anActorCollection->GetNextActor()){ - if(anActor->GetVisibility()){ - if(SALOME_Actor *aSActor = dynamic_cast(anActor)){ - if(vtkMapper *aMapper = aSActor->GetMapper()){ - if(vtkDataSet *aDataSet = aMapper->GetInput()){ - aNumberOfCells += aDataSet->GetNumberOfCells(); - } - } - } - } - } - } - std::ostringstream aStr; - float aFPS = 1.0 / aLastRenderTimeInSeconds; - aStr<<"FPS: "<Delete(); - - vtkTextMapper* aTextMapper = vtkTextMapper::New(); - vtkTextProperty *aTextProperty = aTextMapper->GetTextProperty(); - aTextProperty->SetJustificationToRight(); - aTextProperty->SetVerticalJustificationToTop(); - aTextProperty->SetFontSize(10); - - myFPSActor->SetPickable(false); - myFPSActor->ScaledTextOff(); - myFPSActor->SetAlignmentPoint(8); - myFPSActor->SetPosition2 (1., 1.); - myFPSActor->SetMapper(aTextMapper); - aTextMapper->Delete(); - - //GetDevice()->AddActor2D(myFPSActor.GetPointer()); - - myGaussPointPicker->Delete(); - - myGaussPreHighlightProperty->Delete(); - myGaussPreHighlightProperty->SetColor(0,1,1); - - myGaussHighlightProperty->Delete(); - myGaussHighlightProperty->SetColor(1,1,0); - -} - -VVTK_Renderer -::~VVTK_Renderer() -{ - if(MYDEBUG) INFOS("~VVTK_Renderer() - "<(theActor)){ - anActor->SetPointPicker(myGaussPointPicker.GetPointer()); - anActor->SetPreHighlightProperty(myGaussPreHighlightProperty.GetPointer()); - anActor->SetHighlightProperty(myGaussHighlightProperty.GetPointer()); - - anActor->SetInsideCursorSettings(myInsideCursorSettings); - //anActor->SetPickingSettings(myPickingSettings); - } -} - -//---------------------------------------------------------------------------- -void -VVTK_Renderer -::RemoveActor(VTKViewer_Actor* theActor) -{ - Superclass::RemoveActor(theActor); - if(VISU_GaussPtsAct* anActor = dynamic_cast(theActor)){ - anActor->SetPointPicker(NULL); - anActor->SetPreHighlightProperty(NULL); - anActor->SetHighlightProperty(NULL); - - anActor->SetInsideCursorSettings(NULL); - //anActor->SetPickingSettings(NULL); - } -} - -//---------------------------------------------------------------------------- -void -VVTK_Renderer -::SetInsideCursorSettings(VISU_InsideCursorSettings* theInsideCursorSettings) -{ - myInsideCursorSettings = theInsideCursorSettings; -} - -//---------------------------------------------------------------------------- -void -VVTK_Renderer -::SetPickingSettings(VISU_PickingSettings* thePickingSettings) -{ - myPickingSettings = thePickingSettings; -} - - -//---------------------------------------------------------------------------- -vtkStandardNewMacro(VVTK_Renderer1); - -//---------------------------------------------------------------------------- -VVTK_Renderer1::VVTK_Renderer1(): - myWidgetCtrl(VISU_WidgetCtrl::New()), - myOutsideCursorSettings(NULL) -{ - if(MYDEBUG) INFOS("VVTK_Renderer1() - "<SetPlaceFactor(1.1); - // - VISU_PlanesWidget *aPlanesWidget = myWidgetCtrl->GetPlanesWidget(); - aPlanesWidget->SetOutlineTranslation(false); - vtkProperty* aSelectedPlaneProperty = aPlanesWidget->GetSelectedPlaneProperty(); - vtkProperty* aPlaneProperty = aPlanesWidget->GetPlaneProperty(); - aPlaneProperty->SetOpacity(aSelectedPlaneProperty->GetOpacity()*1.5); - // - //myWidgetCtrl->Delete(); -} - -VVTK_Renderer1 -::~VVTK_Renderer1() -{ - if(MYDEBUG) INFOS("~VVTK_Renderer1() - "<SetInteractor(NULL); -} - -//---------------------------------------------------------------------------- -void -VVTK_Renderer1 -::AddActor(VTKViewer_Actor* theActor) -{ - Superclass::AddActor(theActor); - if(VISU_GaussPtsAct1* anActor = dynamic_cast(theActor)){ - anActor->SetWidgetCtrl(GetWidgetCtrl()); - anActor->SetOutsideCursorSettings(myOutsideCursorSettings); - AdjustWidgetCtrl(); - } -} - - -//---------------------------------------------------------------------------- -void -VVTK_Renderer1 -::RemoveActor(VTKViewer_Actor* theActor) -{ - Superclass::RemoveActor(theActor); - if(VISU_GaussPtsAct1* anActor = dynamic_cast(theActor)){ - anActor->SetWidgetCtrl(NULL); - anActor->SetOutsideCursorSettings(NULL); - AdjustWidgetCtrl(); - } -} - - -//---------------------------------------------------------------------------- -void -VVTK_Renderer1 -::AdjustWidgetCtrl() -{ - VISU_PlanesWidget *aPlanesWidget = myWidgetCtrl->GetPlanesWidget(); - aPlanesWidget->InitialPlaceWidget(myBndBox); - aPlanesWidget->SetOrigin(0.5*(myBndBox[1] + myBndBox[0]), - 0.5*(myBndBox[3] + myBndBox[2]), - 0.5*(myBndBox[5] + myBndBox[4])); - // - VISU_SphereWidget *aSphereWidget = myWidgetCtrl->GetSphereWidget(); - aSphereWidget->SetCenter(0.5*(myBndBox[1] + myBndBox[0]), - 0.5*(myBndBox[3] + myBndBox[2]), - 0.5*(myBndBox[5] + myBndBox[4])); - - float aMinLength = VTK_LARGE_FLOAT; - for (int i=0; i<3; ++i) { - float aLength = myBndBox[2*i+1]-myBndBox[2*i]; - aMinLength = std::min(aMinLength,aLength); - } - aSphereWidget->SetRadius(aMinLength); -} - -//---------------------------------------------------------------------------- -void -VVTK_Renderer1 -::Initialize(vtkRenderWindowInteractor* theInteractor, - SVTK_Selector* theSelector) -{ - SVTK_Renderer::Initialize(theInteractor,theSelector); - myWidgetCtrl->SetInteractor(theInteractor); -} - -//---------------------------------------------------------------------------- -void -VVTK_Renderer1 -::SetOutsideCursorSettings(VISU_OutsideCursorSettings* theOutsideCursorSettings) -{ - myOutsideCursorSettings = theOutsideCursorSettings; -} - -//---------------------------------------------------------------------------- -VISU_WidgetCtrl* -VVTK_Renderer1 -::GetWidgetCtrl() -{ - return myWidgetCtrl;//.GetPointer(); -} - -//---------------------------------------------------------------------------- -bool -VVTK_Renderer1 -::OnAdjustActors() -{ - return SVTK_Renderer::OnAdjustActors(); -} - - -//---------------------------------------------------------------------------- -vtkStandardNewMacro(VVTK_Renderer2); - -//---------------------------------------------------------------------------- -VVTK_Renderer2 -::VVTK_Renderer2(): - myEventCallbackCommand(vtkCallbackCommand::New()) -{ - if(MYDEBUG) INFOS("VVTK_Renderer2() - "<Delete(); - - myPriority = 0.0; - myEventCallbackCommand->SetClientData(this); - myEventCallbackCommand->SetCallback(VVTK_Renderer2::ProcessEvents); -} - -VVTK_Renderer2 -::~VVTK_Renderer2() -{ - if(MYDEBUG) INFOS("~VVTK_Renderer2() - "<AddObserver(vtkCommand::EndInteractionEvent, - myEventCallbackCommand.GetPointer(), - myPriority); - theWidgetCtrl->AddObserver(vtkCommand::EnableEvent, - myEventCallbackCommand.GetPointer(), - myPriority); - theWidgetCtrl->AddObserver(vtkCommand::DisableEvent, - myEventCallbackCommand.GetPointer(), - myPriority); - myWidgetCtrl = theWidgetCtrl; -} - -void -VVTK_Renderer2 -::ProcessEvents(vtkObject* vtkNotUsed(theObject), - unsigned long theEvent, - void* theClientData, - void* vtkNotUsed(theCallData)) -{ - VVTK_Renderer2* self = reinterpret_cast(theClientData); - - switch(theEvent){ - case vtkCommand::EnableEvent: - case vtkCommand::EndInteractionEvent: - self->OnEndInteractionEvent(); - break; - } -} - -void -VVTK_Renderer2 -::OnEndInteractionEvent() -{ - AdjustActors(); - myInteractor->Render(); -} - - -//---------------------------------------------------------------------------- -void VVTK_Renderer2::AddActor(VTKViewer_Actor* theActor) -{ - if(VISU_GaussPtsAct1* anActor = dynamic_cast(theActor)){ - if(VISU::TGaussPtsActorFactory* aFactory = anActor->GetGaussPtsFactory()){ - if(VISU_GaussPtsAct2* anActor2 = aFactory->CloneActor(anActor)){ - anActor2->SetWidgetCtrl(myWidgetCtrl); - Superclass::AddActor(anActor2); - } - } - } -} - -//---------------------------------------------------------------------------- -void -VVTK_Renderer2 -::RemoveActor(VTKViewer_Actor* theActor) -{ - using namespace VISU; - if(VISU_GaussPtsAct2* anActor = dynamic_cast(theActor)){ - anActor->SetWidgetCtrl(NULL); - Superclass::RemoveActor(theActor); - } -} diff --git a/src/VVTK/VVTK_Renderer.h b/src/VVTK/VVTK_Renderer.h deleted file mode 100644 index ae558db2..00000000 --- a/src/VVTK/VVTK_Renderer.h +++ /dev/null @@ -1,179 +0,0 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// -// SALOME VTKViewer : build VTK viewer into Salome desktop -// File : -// Author : -// Module : SALOME -// $Header$ -// -#ifndef VVTK_Renderer_h -#define VVTK_Renderer_h - -#include "VVTK.h" - -#include "SVTK_Renderer.h" - -class VISU_WidgetCtrl; -class VISU_InsideCursorSettings; -class VISU_OutsideCursorSettings; -class VISU_PickingSettings; -class VISU_FPSActor; - -class vtkPointPicker; -class vtkImplicitFunction; - -//---------------------------------------------------------------------------- -//! To customize SVTK_Renderer according to VVTK functionality -class VVTK_EXPORT VVTK_Renderer : public SVTK_Renderer -{ - public: - vtkTypeMacro(VVTK_Renderer,SVTK_Renderer); - static VVTK_Renderer* New(); - - //! Reimplement SVTK_Renderer::AddActor - /*! - Perform an additional action - apply picking settings on the published VISU_GaussPtsAct actors - */ - virtual - void - AddActor(VTKViewer_Actor* theActor); - - //! Reimplement SVTK_Renderer::RemoveActor (remove additional settings) - virtual - void - RemoveActor(VTKViewer_Actor* theActor); - - //! To set VISU_PickingSettings to share them among all VISU_GaussPtsAct actors published into the view - void - SetInsideCursorSettings(VISU_InsideCursorSettings* theInsideCursorSettings); - - void - SetPickingSettings(VISU_PickingSettings* thePickingSettings); - - protected: - VVTK_Renderer(); - ~VVTK_Renderer(); - - VISU_PickingSettings* myPickingSettings; //! Keeps reference of the VISU_PickingSettings - VISU_InsideCursorSettings* myInsideCursorSettings; //! Keeps reference of the VISU_InsideCursorSettings - vtkSmartPointer myFPSActor; //!< To show FPS of the rendering at run-time - - vtkSmartPointer myGaussPointPicker; - vtkSmartPointer myGaussPreHighlightProperty; - vtkSmartPointer myGaussHighlightProperty; -}; - - -//---------------------------------------------------------------------------- -//! To extend VVTK_Renderer to implement base view functionality -class VVTK_EXPORT VVTK_Renderer1 : public VVTK_Renderer -{ - public: - vtkTypeMacro(VVTK_Renderer1,VVTK_Renderer); - static VVTK_Renderer1* New(); - - //! Reimplement SVTK_Renderer::Initialize - virtual - void - Initialize(vtkRenderWindowInteractor* theInteractor, - SVTK_Selector* theSelector); - - //! Reimplement VVTK_Renderer::AddActor to apply to the actor additional settings - virtual - void - AddActor(VTKViewer_Actor* theActor); - - //! Reimplement VVTK_Renderer::RemoveActor - virtual - void - RemoveActor(VTKViewer_Actor* theActor); - - //! To set VISU_PickingSettings to share them among all VISU_GaussPtsAct1 actors published into the view - void - SetOutsideCursorSettings(VISU_OutsideCursorSettings* theOutsideCursorSettings); - - VISU_WidgetCtrl* GetWidgetCtrl(); - - protected: - VVTK_Renderer1(); - ~VVTK_Renderer1(); - - //! Reimplement VVTK_Renderer::OnAdjustActors - virtual - bool - OnAdjustActors(); - - void AdjustWidgetCtrl(); - - VISU_WidgetCtrl* myWidgetCtrl; - //vtkSmartPointer myWidgetCtrl; - VISU_OutsideCursorSettings* myOutsideCursorSettings; - vtkSmartPointer myTextActor; -}; - - -//---------------------------------------------------------------------------- -class VVTK_EXPORT VVTK_Renderer2 : public VVTK_Renderer -{ - public: - vtkTypeMacro(VVTK_Renderer2,VVTK_Renderer); - static VVTK_Renderer2* New(); - - //! Reimplement VVTK_Renderer::AddActor to apply to the actor additional settings - virtual - void - AddActor(VTKViewer_Actor* theActor); - - //! Reimplement VVTK_Renderer::RemoveActor - virtual - void - RemoveActor(VTKViewer_Actor* theActor); - - void SetWidgetCtrl(VISU_WidgetCtrl* theWidgetCtrl); - - //! To handle vtkCommand::EndInteractionEvent to redraw the view - void - OnEndInteractionEvent(); - - protected: - VVTK_Renderer2(); - ~VVTK_Renderer2(); - - //! Main process VTK event method - static - void - ProcessEvents(vtkObject* theObject, - unsigned long theEvent, - void* theClientData, - void* theCallData); - - //! Used to process VTK events - vtkSmartPointer myEventCallbackCommand; - - //! Priority at which events are processed - float myPriority; - - VISU_WidgetCtrl* myWidgetCtrl; -}; - - -#endif diff --git a/src/VVTK/VVTK_SegmentationCursorDlg.cxx b/src/VVTK/VVTK_SegmentationCursorDlg.cxx deleted file mode 100644 index 8190bb3c..00000000 --- a/src/VVTK/VVTK_SegmentationCursorDlg.cxx +++ /dev/null @@ -1,871 +0,0 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// -// File : VVTK_SegmentationCursorDlg.cxx -// Author : Oleg Uvarov -// Module : VISU -// -#include "VVTK_SegmentationCursorDlg.h" -#include "VVTK_PrimitiveBox.h" -#include "VVTK_SizeBox.h" -#include - -#include "VISU_GaussPtsAct.h" -#include "VISU_GaussPtsSettings.h" - -#include "VISU_WidgetCtrl.hxx" -#include "VISU_PlanesWidget.hxx" -#include "VISU_SphereWidget.hxx" - -#include "VISU_GaussPointsPL.hxx" -#include "VISU_OpenGLPointSpriteMapper.hxx" - -#include -#include -#include -#include - -#include -#include - -#include -#include -#include -#include -#include -#include -#include - -#include "utilities.h" - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include - -//---------------------------------------------------------------- -VVTK_SegmentationCursorDlg::VVTK_SegmentationCursorDlg( QWidget* parent, const char* name ) - :QDialog( parent, - Qt::WindowTitleHint | Qt::WindowSystemMenuHint ), - myEventCallbackCommand( vtkCallbackCommand::New() ), - myInsideCursorSettings( VISU_InsideCursorSettings::New() ), - myOutsideCursorSettings( VISU_OutsideCursorSettings::New() ), - myIsPlaneSegmentation( true ), - myWidgetCtrl(NULL), - myInteractor(NULL) -{ - setAccessibleName( name ); - - myPriority = 0.0; - myEventCallbackCommand->Delete(); - myEventCallbackCommand->SetClientData(this); - myEventCallbackCommand->SetCallback(VVTK_SegmentationCursorDlg::ProcessEvents); - - myInsideCursorSettings->AddObserver(VISU::UpdateFromSettingsEvent, - myEventCallbackCommand.GetPointer(), - myPriority); - - setWindowTitle( tr( "SEGMENTATION_CURSOR_DLG_TITLE" ) ); - setSizeGripEnabled(TRUE); - - QVBoxLayout* TopLayout = new QVBoxLayout( this ); - TopLayout->setSpacing(6); - TopLayout->setMargin(11); - - myTabBox = new QTabWidget( this ); - - // Segmentation cursor pane - mySegmentationCursorBox = new QWidget( this ); - QVBoxLayout* SCBoxLayout = new QVBoxLayout( mySegmentationCursorBox ); - SCBoxLayout->setMargin(11); - SCBoxLayout->setSpacing(6); - SCBoxLayout->setAlignment(Qt::AlignTop); - - // Origin - myOriginGroup = new QGroupBox( tr( "ORIGIN_TITLE" ), mySegmentationCursorBox ); - //myOriginGroup->setColumnLayout( 0, Qt::Vertical ); - //myOriginGroup->layout()->setSpacing( 0 ); - //myOriginGroup->layout()->setMargin( 0 ); - - QGridLayout* OriginGroupLayout = new QGridLayout( myOriginGroup ); - OriginGroupLayout->setAlignment(Qt::AlignTop | Qt::AlignCenter); - OriginGroupLayout->setSpacing(6); - OriginGroupLayout->setMargin(11); - - QLabel* XOriginLabel = new QLabel( tr( "ORIGIN_X" ), myOriginGroup ); - myXOriginSpinBox = new SalomeApp_DoubleSpinBox( myOriginGroup ); - VISU::initSpinBox( myXOriginSpinBox, -1000.0, 1000.0, 0.1, "length_precision" ); - myXOriginSpinBox->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) ); - myXOriginSpinBox->setMinimumWidth( 100 ); - myXOriginSpinBox->setValue( 0.0 ); - - QLabel* YOriginLabel = new QLabel( tr( "ORIGIN_Y" ), myOriginGroup ); - myYOriginSpinBox = new SalomeApp_DoubleSpinBox( myOriginGroup ); - VISU::initSpinBox( myYOriginSpinBox, -1000.0, 1000.0, 0.1, "length_precision" ); - myYOriginSpinBox->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) ); - myYOriginSpinBox->setMinimumWidth( 100 ); - myYOriginSpinBox->setValue( 0.0 ); - - QLabel* ZOriginLabel = new QLabel( tr( "ORIGIN_Z" ), myOriginGroup ); - myZOriginSpinBox = new SalomeApp_DoubleSpinBox( myOriginGroup ); - VISU::initSpinBox( myZOriginSpinBox, -1000.0, 1000.0, 0.1, "length_precision" ); - //myZOriginSpinBox->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) ); - myZOriginSpinBox->setMinimumWidth( 100 ); - myZOriginSpinBox->setValue( 1.0 ); - - OriginGroupLayout->addWidget( XOriginLabel, 0, 0 ); - OriginGroupLayout->addWidget( myXOriginSpinBox, 0, 1 ); - OriginGroupLayout->addWidget( YOriginLabel, 0, 2 ); - OriginGroupLayout->addWidget( myYOriginSpinBox, 0, 3 ); - OriginGroupLayout->addWidget( ZOriginLabel, 0, 4 ); - OriginGroupLayout->addWidget( myZOriginSpinBox, 0, 5 ); - - SCBoxLayout->addWidget( myOriginGroup ); - - // Direction ( Plane Segmentation ) - myDirectionGroup = new QGroupBox( tr( "DIRECTION_TITLE" ), mySegmentationCursorBox ); - //myDirectionGroup->setColumnLayout( 0, Qt::Vertical ); - //myDirectionGroup->layout()->setSpacing( 0 ); - //myDirectionGroup->layout()->setMargin( 0 ); - - QGridLayout* DirectionGroupLayout = new QGridLayout( myDirectionGroup ); - DirectionGroupLayout->setAlignment(Qt::AlignTop | Qt::AlignCenter); - DirectionGroupLayout->setSpacing(6); - DirectionGroupLayout->setMargin(11); - - QLabel* DXDirectionLabel = new QLabel( tr( "DIRECTION_DX" ), myDirectionGroup ); - myDXDirectionSpinBox = new SalomeApp_DoubleSpinBox( myDirectionGroup ); - VISU::initSpinBox( myDXDirectionSpinBox, -1.0, 1.0, 0.1, "length_precision" ); - myDXDirectionSpinBox->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) ); - myDXDirectionSpinBox->setMinimumWidth( 100 ); - myDXDirectionSpinBox->setValue( 0.0 ); - - QLabel* DYDirectionLabel = new QLabel( tr( "DIRECTION_DY" ), myDirectionGroup ); - myDYDirectionSpinBox = new SalomeApp_DoubleSpinBox( myDirectionGroup ); - VISU::initSpinBox( myDYDirectionSpinBox, -1.0, 1.0, 0.1, "length_precision" ); - myDYDirectionSpinBox->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) ); - myDYDirectionSpinBox->setMinimumWidth( 100 ); - myDYDirectionSpinBox->setValue( 0.0 ); - - QLabel* DZDirectionLabel = new QLabel( tr( "DIRECTION_DZ" ), myDirectionGroup ); - myDZDirectionSpinBox = new SalomeApp_DoubleSpinBox( myDirectionGroup ); - VISU::initSpinBox( myDZDirectionSpinBox, -1.0, 1.0, 0.1, "length_precision" ); - myDZDirectionSpinBox->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) ); - myDZDirectionSpinBox->setMinimumWidth( 100 ); - myDZDirectionSpinBox->setValue( 1.0 ); - - DirectionGroupLayout->addWidget( DXDirectionLabel, 0, 0 ); - DirectionGroupLayout->addWidget( myDXDirectionSpinBox, 0, 1 ); - DirectionGroupLayout->addWidget( DYDirectionLabel, 0, 2 ); - DirectionGroupLayout->addWidget( myDYDirectionSpinBox, 0, 3 ); - DirectionGroupLayout->addWidget( DZDirectionLabel, 0, 4 ); - DirectionGroupLayout->addWidget( myDZDirectionSpinBox, 0, 5 ); - - SCBoxLayout->addWidget( myDirectionGroup ); - - // Depth ( Plane Segmentation ) - myDepthGroup = new QGroupBox( tr( "DEPTH_TITLE" ), mySegmentationCursorBox ); - //myDepthGroup->setColumnLayout( 0, Qt::Vertical ); - //myDepthGroup->layout()->setSpacing( 0 ); - //myDepthGroup->layout()->setMargin( 0 ); - - QGridLayout* DepthGroupLayout = new QGridLayout( myDepthGroup ); - DepthGroupLayout->setAlignment(Qt::AlignTop | Qt::AlignCenter); - DepthGroupLayout->setSpacing(6); - DepthGroupLayout->setMargin(11); - - QLabel* DepthLabel = new QLabel( tr( "DEPTH" ), myDepthGroup ); - myDepthSpinBox = new SalomeApp_DoubleSpinBox( myDepthGroup ); - VISU::initSpinBox( myDepthSpinBox, 0.0, VTK_LARGE_FLOAT, 0.1, "length_precision" ); - myDepthSpinBox->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) ); - myDepthSpinBox->setMinimumWidth( 100 ); - myDepthSpinBox->setValue( 1.0 ); - - DepthGroupLayout->addWidget( DepthLabel, 0, 0 ); - DepthGroupLayout->addWidget( myDepthSpinBox, 0, 1 ); - - SCBoxLayout->addWidget( myDepthGroup ); - - // Radius ( Sphere Segmentation ) - myRadiusGroup = new QGroupBox( tr( "RADIUS_TITLE" ), mySegmentationCursorBox ); - //myRadiusGroup->setColumnLayout( 0, Qt::Vertical ); - //myRadiusGroup->layout()->setSpacing( 0 ); - //myRadiusGroup->layout()->setMargin( 0 ); - - QGridLayout* RadiusGroupLayout = new QGridLayout( myRadiusGroup ); - RadiusGroupLayout->setAlignment(Qt::AlignTop | Qt::AlignCenter); - RadiusGroupLayout->setSpacing(6); - RadiusGroupLayout->setMargin(11); - - QLabel* RadiusLabel = new QLabel( tr( "RADIUS" ),myRadiusGroup ); - myRadiusSpinBox = new SalomeApp_DoubleSpinBox( myRadiusGroup ); - VISU::initSpinBox( myRadiusSpinBox, 0.0, 1000.0, 1.0, "length_precision" ); - myRadiusSpinBox->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) ); - myRadiusSpinBox->setMinimumWidth( 100 ); - myRadiusSpinBox->setValue( 100.0 ); - - QLabel* RatioLabel = new QLabel( tr( "RATIO" ), myRadiusGroup ); - myRatioSpinBox = new SalomeApp_DoubleSpinBox( myRadiusGroup ); - VISU::initSpinBox( myRatioSpinBox, 0.1, 10.0, 0.1, "parametric_precision" ); - myRatioSpinBox->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) ); - myRatioSpinBox->setMinimumWidth( 100 ); - myRatioSpinBox->setValue( 2.0 ); - - RadiusGroupLayout->addWidget( RadiusLabel, 0, 0 ); - RadiusGroupLayout->addWidget( myRadiusSpinBox, 0, 1 ); - RadiusGroupLayout->addWidget( RatioLabel, 0, 2 ); - RadiusGroupLayout->addWidget( myRatioSpinBox, 0, 3 ); - - SCBoxLayout->addWidget( myRadiusGroup ); - - myTabBox->addTab( mySegmentationCursorBox, tr( "SEGMENTATION_CURSOR_TAB" ) ); - - // Gauss points pane - myGaussPointsBox = new QWidget( this ); - QVBoxLayout* GPBoxLayout = new QVBoxLayout( myGaussPointsBox ); - GPBoxLayout->setMargin(11); - GPBoxLayout->setSpacing(6); - - // Inside Gauss points - QGroupBox* anInsideGroup = new QGroupBox( tr( "INSIDE_GAUSS_POINTS" ), myGaussPointsBox ); - //anInsideGroup->setColumnLayout( 0, Qt::Vertical ); - //anInsideGroup->layout()->setSpacing( 0 ); - //anInsideGroup->layout()->setMargin( 0 ); - - QGridLayout* anInsideGroupLayout = new QGridLayout( anInsideGroup ); - anInsideGroupLayout->setAlignment(Qt::AlignTop | Qt::AlignCenter); - anInsideGroupLayout->setSpacing(6); - anInsideGroupLayout->setMargin(11); - - // Primitive - myInsidePrimitiveBox = new VVTK_PrimitiveBox( anInsideGroup ); - - // Size - myInsideSizeBox = new VVTK_SizeBox( anInsideGroup ); - myInsideSizeBox->setType( VVTK_SizeBox::Inside ); - - anInsideGroupLayout->addWidget( myInsidePrimitiveBox, 0, 0 ); - anInsideGroupLayout->addWidget( myInsideSizeBox, 1, 0 ); - - GPBoxLayout->addWidget( anInsideGroup ); - - // Outside Gauss points - QGroupBox* anOutsideGroup = new QGroupBox( tr( "OUTSIDE_GAUSS_POINTS" ), myGaussPointsBox ); - //anOutsideGroup->setColumnLayout( 0, Qt::Vertical ); - //anOutsideGroup->layout()->setSpacing( 0 ); - //anOutsideGroup->layout()->setMargin( 0 ); - - QGridLayout* anOutsideGroupLayout = new QGridLayout( anOutsideGroup ); - anOutsideGroupLayout->setAlignment(Qt::AlignTop | Qt::AlignCenter); - anOutsideGroupLayout->setSpacing(6); - anOutsideGroupLayout->setMargin(11); - - // Primitive - myOutsidePrimitiveBox = new VVTK_PrimitiveBox( anOutsideGroup ); - - // Size - myOutsideSizeBox = new VVTK_SizeBox( anOutsideGroup ); - myOutsideSizeBox->setType( VVTK_SizeBox::Outside ); - - anOutsideGroupLayout->addWidget( myOutsidePrimitiveBox, 0, 0 ); - anOutsideGroupLayout->addWidget( myOutsideSizeBox, 1, 0 ); - - GPBoxLayout->addWidget( anOutsideGroup ); - - // Magnification - QGroupBox* MagnificationGroup = new QGroupBox ( tr( "MAGNIFICATION_TITLE" ), myGaussPointsBox ); - //MagnificationGroup->setColumnLayout(0, Qt::Vertical ); - //MagnificationGroup->layout()->setSpacing( 0 ); - //MagnificationGroup->layout()->setMargin( 0 ); - - QGridLayout* MagnificationGroupLayout = new QGridLayout ( MagnificationGroup ); - MagnificationGroupLayout->setAlignment(Qt::AlignTop | Qt::AlignCenter); - MagnificationGroupLayout->setSpacing(6); - MagnificationGroupLayout->setMargin(11); - - myMagnificationLabel = new QLabel( tr( "MAGNIFICATION" ), MagnificationGroup ); - myMagnificationSpinBox = new SalomeApp_IntSpinBox( MagnificationGroup ); - VISU::initSpinBox( myMagnificationSpinBox, 1, 10000, 10 ); - myMagnificationSpinBox->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) ); - - MagnificationGroupLayout->addWidget( myMagnificationLabel, 0, 0 ); - MagnificationGroupLayout->addWidget( myMagnificationSpinBox, 0, 1 ); - - // Increment - myIncrementLabel = new QLabel( tr( "INCREMENT" ), MagnificationGroup ); - myIncrementSpinBox = new SalomeApp_DoubleSpinBox( MagnificationGroup ); - VISU::initSpinBox( myIncrementSpinBox, 0.01, 10, 0.1, "parametric_precision" ); - myIncrementSpinBox->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) ); - - MagnificationGroupLayout->addWidget( myIncrementLabel, 0, 2 ); - MagnificationGroupLayout->addWidget( myIncrementSpinBox, 0, 3 ); - - - myTabBox->addTab( myGaussPointsBox, tr( "GAUSS_POINTS_TAB" ) ); - //myTabBox->showPage( myGaussPointsBox ); - myTabBox->setCurrentWidget( myGaussPointsBox ); - - GPBoxLayout->addWidget( MagnificationGroup ); - - - // Common buttons =========================================================== - QGroupBox* GroupButtons = new QGroupBox( this ); - //GroupButtons->setColumnLayout(0, Qt::Vertical ); - //GroupButtons->layout()->setSpacing( 0 ); - //GroupButtons->layout()->setMargin( 0 ); - QGridLayout* GroupButtonsLayout = new QGridLayout( GroupButtons ); - GroupButtonsLayout->setAlignment( Qt::AlignTop ); - GroupButtonsLayout->setSpacing( 6 ); - GroupButtonsLayout->setMargin( 11 ); - - QPushButton* buttonApply = new QPushButton( tr( "&Apply" ), GroupButtons ); - buttonApply->setAutoDefault( TRUE ); - buttonApply->setDefault( TRUE ); - GroupButtonsLayout->addWidget( buttonApply, 0, 0 ); - GroupButtonsLayout->addItem( new QSpacerItem( 5, 5, QSizePolicy::Expanding, QSizePolicy::Minimum ), 0, 1 ); - - QPushButton* buttonClose = new QPushButton( tr( "&Close" ) , GroupButtons ); - buttonClose->setAutoDefault( TRUE ); - GroupButtonsLayout->addWidget( buttonClose, 0, 2 ); - - QPushButton* buttonHelp = new QPushButton( tr( "&Help" ) , GroupButtons ); - buttonHelp->setAutoDefault( TRUE ); - GroupButtonsLayout->addWidget( buttonHelp, 0, 3 ); - - TopLayout->addWidget( myTabBox ); - TopLayout->addWidget( GroupButtons ); - - connect( buttonApply, SIGNAL( clicked() ), this, SLOT( onClickApply() ) ); - connect( buttonClose, SIGNAL( clicked() ), this, SLOT( onClickClose() ) ); - connect( buttonHelp, SIGNAL( clicked() ), this, SLOT( onClickHelp() ) ); - - connect(parent, SIGNAL(Show( QShowEvent * )), this, SLOT(onParentShow())); - connect(parent, SIGNAL(Hide( QHideEvent * )), this, SLOT(onParentHide())); -} - -VVTK_SegmentationCursorDlg::~VVTK_SegmentationCursorDlg() -{ - SetWidgetCtrl(NULL); -} - -float VVTK_SegmentationCursorDlg::getMagnification() const -{ - return myMagnificationSpinBox->value() / 100.0; -} - -void VVTK_SegmentationCursorDlg::setMagnification( float theMagnification ) -{ - myMagnificationSpinBox->setValue( ( int )( theMagnification * 100 ) ); -} - -float VVTK_SegmentationCursorDlg::getIncrement() const -{ - return myIncrementSpinBox->value(); -} - -void VVTK_SegmentationCursorDlg::setIncrement( float theIncrement ) -{ - myIncrementSpinBox->setValue( theIncrement ); -} - - -void VVTK_SegmentationCursorDlg::SetWidgetCtrl( VISU_WidgetCtrl* theWidgetCtrl ) -{ - if(myWidgetCtrl == theWidgetCtrl) - return; - - if(myWidgetCtrl) - myWidgetCtrl->RemoveObserver(myEventCallbackCommand.GetPointer()); - - myWidgetCtrl = theWidgetCtrl; - - if(theWidgetCtrl) - theWidgetCtrl->AddObserver(vtkCommand::EndInteractionEvent, - myEventCallbackCommand.GetPointer(), - myPriority); -} - -void VVTK_SegmentationCursorDlg::ProcessEvents(vtkObject* vtkNotUsed(theObject), - unsigned long theEvent, - void* theClientData, - void* vtkNotUsed(theCallData)) -{ - VVTK_SegmentationCursorDlg* self = reinterpret_cast(theClientData); - - switch(theEvent){ - case vtkCommand::EndInteractionEvent: - self->UpdateSegmentation(); - break; - case VISU::UpdateFromSettingsEvent: - self->GetOutsideCursorSettings()->SetMagnification( self->GetInsideCursorSettings()->GetMagnification() ); - self->GetOutsideCursorSettings()->SetIncrement( self->GetInsideCursorSettings()->GetIncrement() ); - - self->UpdateInsideGaussPoints(); - self->UpdateOutsideGaussPoints(); - - self->GetInsideCursorSettings()->InvokeEvent(VISU::UpdateInsideSettingsEvent,NULL); - self->GetOutsideCursorSettings()->InvokeEvent(VISU::UpdateOutsideSettingsEvent,NULL); - break; - } -} - -void VVTK_SegmentationCursorDlg::UpdateSegmentation() -{ - if( myIsPlaneSegmentation ) - { - myDirectionGroup->show(); - myDepthGroup->show(); - myRadiusGroup->hide(); - - VISU_PlanesWidget *pPlanesWidget=myWidgetCtrl->GetPlanesWidget(); - vtkFloatingPointType origin[3]; - pPlanesWidget->GetOrigin( origin ); - myXOriginSpinBox->setValue( origin[0] ); - myYOriginSpinBox->setValue( origin[1] ); - myZOriginSpinBox->setValue( origin[2] ); - - vtkFloatingPointType normal[3]; - pPlanesWidget->GetNormal( normal ); - myDXDirectionSpinBox->setValue( normal[0] ); - myDYDirectionSpinBox->setValue( normal[1] ); - myDZDirectionSpinBox->setValue( normal[2] ); - - myDepthSpinBox->setValue( pPlanesWidget->Distance() ); - } - else - { - myDirectionGroup->hide(); - myDepthGroup->hide(); - myRadiusGroup->show(); - - VISU_SphereWidget *pSphereWidget=myWidgetCtrl->GetSphereWidget(); - vtkFloatingPointType origin[3], aRadius; - pSphereWidget->GetCenter(origin); - myXOriginSpinBox->setValue( origin[0] ); - myYOriginSpinBox->setValue( origin[1] ); - myZOriginSpinBox->setValue( origin[2] ); - aRadius=pSphereWidget->GetRadius(); - myRadiusSpinBox->setValue(aRadius); - myRatioSpinBox->setValue(pSphereWidget->GetRatio()); - } -} - -void VVTK_SegmentationCursorDlg::UpdateInsideGaussPoints() -{ - int aPrimitiveType = VISU_OpenGLPointSpriteMapper::PointSprite; - vtkFloatingPointType aClamp = 200.0; - QString aMainTexture = QString( getenv( "VISU_ROOT_DIR") ) + "/share/salome/resources/visu/sprite_texture.bmp"; - QString anAlphaTexture = QString( getenv( "VISU_ROOT_DIR") ) + "/share/salome/resources/visu/sprite_alpha.bmp"; - vtkFloatingPointType anAlphaThreshold = 0.1; - int aResolution = 8; - int aMinSize = 3; - int aMaxSize = 33; - int aMagnification = 100; - vtkFloatingPointType anIncrement = 2.0; - - if( !myInsideCursorSettings->GetInitial() ) - { - myInsidePrimitiveBox->setPrimitiveType( myInsideCursorSettings->GetPrimitiveType() ); - myInsidePrimitiveBox->setClamp( myInsideCursorSettings->GetClamp() ); - myInsidePrimitiveBox->setMainTexture( myInsideMainTexture ); - myInsidePrimitiveBox->setAlphaTexture( myInsideAlphaTexture ); - myInsidePrimitiveBox->setAlphaThreshold( myInsideCursorSettings->GetAlphaThreshold() ); - myInsidePrimitiveBox->setResolution( myInsideCursorSettings->GetResolution() ); - - myInsideSizeBox->setMinSize( myInsideCursorSettings->GetMinSize() ); - myInsideSizeBox->setMaxSize( myInsideCursorSettings->GetMaxSize() ); - - this->setMagnification( myInsideCursorSettings->GetMagnification() ); - this->setIncrement( myInsideCursorSettings->GetIncrement() ); - - return; - } - - SUIT_ResourceMgr* aResourceMgr = SUIT_Session::session()->resourceMgr(); - - aPrimitiveType = aResourceMgr->integerValue( "VISU", "inside_point_sprite_primitive_type", aPrimitiveType ); - myInsidePrimitiveBox->setPrimitiveType( aPrimitiveType ); - - aClamp = aResourceMgr->doubleValue( "VISU", "inside_point_sprite_clamp", aClamp ); - myInsidePrimitiveBox->setClamp( aClamp ); - - aMainTexture = aResourceMgr->stringValue( "VISU", "inside_point_sprite_main_texture", aMainTexture ); - myInsidePrimitiveBox->setMainTexture( aMainTexture ); - - anAlphaTexture = aResourceMgr->stringValue( "VISU", "inside_point_sprite_alpha_texture", anAlphaTexture ); - myInsidePrimitiveBox->setAlphaTexture( anAlphaTexture ); - - anAlphaThreshold = aResourceMgr->doubleValue( "VISU", "inside_point_sprite_alpha_threshold", anAlphaThreshold ); - myInsidePrimitiveBox->setAlphaThreshold( anAlphaThreshold ); - - aResolution = aResourceMgr->integerValue( "VISU", "inside_geom_sphere_resolution", aResolution ); - myInsidePrimitiveBox->setResolution( aResolution ); - - aMinSize = aResourceMgr->integerValue( "VISU", "inside_point_sprite_min_size", aMinSize ); - myInsideSizeBox->setMinSize( aMinSize / 100.0 ); - - aMaxSize = aResourceMgr->integerValue( "VISU", "inside_point_sprite_max_size", aMaxSize ); - myInsideSizeBox->setMaxSize( aMaxSize / 100.0 ); - - aMagnification = aResourceMgr->integerValue( "VISU", "inside_point_sprite_magnification", aMagnification ); - this->setMagnification( aMagnification / 100.0 ); - - anIncrement = aResourceMgr->doubleValue( "VISU", "inside_point_sprite_increment", anIncrement ); - this->setIncrement( anIncrement ); - - myInsidePrimitiveBox->setFaceLimit( 50000 ); - - ApplyInsideGaussPoints(); -} - -void VVTK_SegmentationCursorDlg::UpdateOutsideGaussPoints() -{ - vtkFloatingPointType aClamp = 256.0; - int aPrimitiveType = VISU_OpenGLPointSpriteMapper::PointSprite; - QString aMainTexture = QString( getenv( "VISU_ROOT_DIR") ) + "/share/salome/resources/visu/sprite_texture.bmp"; - QString anAlphaTexture = QString( getenv( "VISU_ROOT_DIR") ) + "/share/salome/resources/visu/sprite_alpha.bmp"; - vtkFloatingPointType anAlphaThreshold = 0.1; - int aResolution = 8; - int aSize = 25; - bool aUniform = false; - QColor aColor = Qt::blue; - - if( !myOutsideCursorSettings->GetInitial() ) - { - myOutsidePrimitiveBox->setPrimitiveType( myOutsideCursorSettings->GetPrimitiveType() ); - myOutsidePrimitiveBox->setClamp( myOutsideCursorSettings->GetClamp() ); - myOutsidePrimitiveBox->setMainTexture( myOutsideMainTexture ); - myOutsidePrimitiveBox->setAlphaTexture( myOutsideAlphaTexture ); - myOutsidePrimitiveBox->setAlphaThreshold( myOutsideCursorSettings->GetAlphaThreshold() ); - myOutsidePrimitiveBox->setResolution( myOutsideCursorSettings->GetResolution() ); - - myOutsideSizeBox->setOutsideSize( myOutsideCursorSettings->GetSize() ); - myOutsideSizeBox->setUniform( myOutsideCursorSettings->GetUniform() ); - - vtkFloatingPointType* aColor = myOutsideCursorSettings->GetColor(); - myOutsideSizeBox->setColor( QColor( ( int )( aColor[0] * 255.0 ), - ( int )( aColor[1] * 255.0 ), - ( int )( aColor[2] * 255.0 ) ) ); - - return; - } - - SUIT_ResourceMgr* aResourceMgr = SUIT_Session::session()->resourceMgr(); - - aPrimitiveType = aResourceMgr->integerValue( "VISU", "outside_point_sprite_primitive_type", aPrimitiveType ); - myOutsidePrimitiveBox->setPrimitiveType( aPrimitiveType ); - - aClamp = aResourceMgr->doubleValue( "VISU", "outside_point_sprite_clamp", aClamp ); - myOutsidePrimitiveBox->setClamp( aClamp ); - - aMainTexture = aResourceMgr->stringValue( "VISU", "outside_point_sprite_main_texture", aMainTexture ); - myOutsidePrimitiveBox->setMainTexture( aMainTexture ); - - anAlphaTexture = aResourceMgr->stringValue( "VISU", "outside_point_sprite_alpha_texture", anAlphaTexture ); - myOutsidePrimitiveBox->setAlphaTexture( anAlphaTexture ); - - anAlphaThreshold = aResourceMgr->doubleValue( "VISU", "outside_point_sprite_alpha_threshold", anAlphaThreshold ); - myOutsidePrimitiveBox->setAlphaThreshold( anAlphaThreshold ); - - aResolution = aResourceMgr->integerValue( "VISU", "outside_geom_sphere_resolution", aResolution ); - myOutsidePrimitiveBox->setResolution( aResolution ); - - aSize = aResourceMgr->integerValue( "VISU", "outside_point_sprite_size", aSize ); - myOutsideSizeBox->setOutsideSize( aSize / 100.0 ); - - aUniform = aResourceMgr->booleanValue( "VISU", "outside_point_sprite_uniform", aUniform ); - myOutsideSizeBox->setUniform( aUniform ); - - aColor = aResourceMgr->colorValue( "VISU", "outside_point_sprite_color", aColor ); - myOutsideSizeBox->setColor( aColor ); - - myOutsidePrimitiveBox->setFaceLimit( 50000 ); - - ApplyOutsideGaussPoints(); -} - -VISU_InsideCursorSettings* VVTK_SegmentationCursorDlg::GetInsideCursorSettings() -{ - return myInsideCursorSettings.GetPointer(); -} - -VISU_OutsideCursorSettings* VVTK_SegmentationCursorDlg::GetOutsideCursorSettings() -{ - return myOutsideCursorSettings.GetPointer(); -} - -VISU::TTextureValue -VVTK_SegmentationCursorDlg -::MakeImageData( bool theInside, - const QString& theMainTexture, - const QString& theAlphaTexture ) -{ - if( theInside ) - { - bool updateMainTexture = myInsideMainTexture != theMainTexture; - bool updateAlphaTexture = myInsideAlphaTexture != theAlphaTexture; - if( !updateMainTexture && !updateAlphaTexture ) - return 0; - - myInsideMainTexture = theMainTexture; - myInsideAlphaTexture = theAlphaTexture; - } - else - { - bool updateMainTexture = myOutsideMainTexture != theMainTexture; - bool updateAlphaTexture = myOutsideAlphaTexture != theAlphaTexture; - if( !updateMainTexture && !updateAlphaTexture ) - return 0; - - myOutsideMainTexture = theMainTexture; - myOutsideAlphaTexture = theAlphaTexture; - } - - return VISU::GetTexture( (const char*)theMainTexture.toLatin1(), - (const char*)theAlphaTexture.toLatin1()); -} - -void VVTK_SegmentationCursorDlg::onClickApply() -{ - if( myTabBox->currentWidget() == mySegmentationCursorBox ) - ApplySegmentationCursor(); - else - { - QString aWarning = "The number of faces needed to perform the 'Geometrical Sphere' primitive\n"; - aWarning.append( "presentation might be too important to ensure an acceptable frame rate.\n\n" ); - aWarning.append( "Can you please confirm that you want to continue anyway?" ); - bool toApply = CheckNumberOfFaces() || - SUIT_MessageBox::warning( this, tr( "Warning" ), aWarning, - tr( "&OK" ), tr( "&Cancel" ), 0, 1, 1 ) == 0; - - if( toApply ) - { - ApplyInsideGaussPoints(); - ApplyOutsideGaussPoints(); - } - } -} - -void VVTK_SegmentationCursorDlg::ApplySegmentationCursor() -{ - if( myIsPlaneSegmentation ) - { - VISU_PlanesWidget *pPlanesWidget=myWidgetCtrl->GetPlanesWidget(); - vtkFloatingPointType origin[3]; - origin[0] = myXOriginSpinBox->value(); - origin[1] = myYOriginSpinBox->value(); - origin[2] = myZOriginSpinBox->value(); - pPlanesWidget->SetOrigin( origin ); - - vtkFloatingPointType normal[3]; - normal[0] = myDXDirectionSpinBox->value(); - normal[1] = myDYDirectionSpinBox->value(); - normal[2] = myDZDirectionSpinBox->value(); - - if( normal[0] == 0.0 && normal[1] == 0.0 && normal[2] == 0.0 ) - { - normal[2] = 1.0; - myDZDirectionSpinBox->setValue( 1.0 ); - } - pPlanesWidget->SetNormal( normal ); - - pPlanesWidget->SetDistance( myDepthSpinBox->value() ); - - myWidgetCtrl->InvokeEvent(vtkCommand::EndInteractionEvent,NULL); - myWidgetCtrl->GetInteractor()->Render(); - } - else - { - VISU_SphereWidget *pSphereWidget=myWidgetCtrl->GetSphereWidget(); - vtkFloatingPointType origin[3], aRadius; - origin[0] = myXOriginSpinBox->value(); - origin[1] = myYOriginSpinBox->value(); - origin[2] = myZOriginSpinBox->value(); - pSphereWidget->SetCenter(origin); - - aRadius=myRadiusSpinBox->value(); - pSphereWidget->SetRadius(aRadius); - - pSphereWidget->SetRatio(myRatioSpinBox->value()); - - myWidgetCtrl->InvokeEvent(vtkCommand::EndInteractionEvent,NULL); - myWidgetCtrl->GetInteractor()->Render(); - } -} - -void VVTK_SegmentationCursorDlg::ApplyInsideGaussPoints() -{ - QString anInsideMainTexture = myInsidePrimitiveBox->getMainTexture(); - QString anInsideAlphaTexture = myInsidePrimitiveBox->getAlphaTexture(); - VISU::TTextureValue aTexture = MakeImageData( true, anInsideMainTexture, anInsideAlphaTexture ); - - if( aTexture.GetPointer() ) - myInsideCursorSettings->SetTexture( aTexture.GetPointer() ); - - myInsideCursorSettings->SetInitial( false ); - myInsideCursorSettings->SetPrimitiveType( myInsidePrimitiveBox->getPrimitiveType() ); - myInsideCursorSettings->SetClamp( myInsidePrimitiveBox->getClamp() ); - myInsideCursorSettings->SetAlphaThreshold( myInsidePrimitiveBox->getAlphaThreshold() ); - myInsideCursorSettings->SetResolution( myInsidePrimitiveBox->getResolution() ); - - myInsideCursorSettings->SetMinSize( myInsideSizeBox->getMinSize() ); - myInsideCursorSettings->SetMaxSize( myInsideSizeBox->getMaxSize() ); - - myInsideCursorSettings->SetMagnification( this->getMagnification() ); - myInsideCursorSettings->SetIncrement( this->getIncrement() ); - - myInsideCursorSettings->InvokeEvent(VISU::UpdateInsideSettingsEvent,NULL); -} - -void VVTK_SegmentationCursorDlg::ApplyOutsideGaussPoints() -{ - QString anOutsideMainTexture = myOutsidePrimitiveBox->getMainTexture(); - QString anOutsideAlphaTexture = myOutsidePrimitiveBox->getAlphaTexture(); - VISU::TTextureValue aTexture = MakeImageData( false, anOutsideMainTexture, anOutsideAlphaTexture ); - - if( aTexture.GetPointer() ) - myOutsideCursorSettings->SetTexture( aTexture.GetPointer() ); - - myOutsideCursorSettings->SetInitial( false ); - myOutsideCursorSettings->SetPrimitiveType( myOutsidePrimitiveBox->getPrimitiveType() ); - myOutsideCursorSettings->SetClamp( myOutsidePrimitiveBox->getClamp() ); - myOutsideCursorSettings->SetAlphaThreshold( myOutsidePrimitiveBox->getAlphaThreshold() ); - myOutsideCursorSettings->SetResolution( myOutsidePrimitiveBox->getResolution() ); - - myOutsideCursorSettings->SetSize( myOutsideSizeBox->getOutsideSize() ); - myOutsideCursorSettings->SetUniform( myOutsideSizeBox->getUniform() ); - - QColor aButtonColor = myOutsideSizeBox->getColor(); - vtkFloatingPointType aColor[3]; - aColor[0] = aButtonColor.red() / 255.0; - aColor[1] = aButtonColor.green() / 255.0; - aColor[2] = aButtonColor.blue() / 255.0; - myOutsideCursorSettings->SetColor( aColor ); - - myOutsideCursorSettings->SetMagnification( this->getMagnification() ); - myOutsideCursorSettings->SetIncrement( this->getIncrement() ); - - myOutsideCursorSettings->InvokeEvent(VISU::UpdateOutsideSettingsEvent,NULL); -} - -void VVTK_SegmentationCursorDlg::onClickClose() -{ - myPlaneAction->setChecked( false ); - mySphereAction->setChecked( false ); - - emit scgClose(); - - reject(); -} - -void VVTK_SegmentationCursorDlg::onClickHelp() -{ - QString aHelpFileName = "segmentation.htm"; - LightApp_Application* app = (LightApp_Application*)(SUIT_Session::session()->activeApplication()); - if (app) - app->onHelpContextModule(app->activeModule() ? app->moduleName(app->activeModule()->moduleName()) : QString(""), aHelpFileName); - else { - QString platform; -#ifdef WIN32 - platform = "winapplication"; -#else - platform = "application"; -#endif - SUIT_MessageBox::warning( 0, QObject::tr("WRN_WARNING"), - QObject::tr("EXTERNAL_BROWSER_CANNOT_SHOW_PAGE"). - arg(app->resourceMgr()->stringValue("ExternalBrowser", platform)).arg(aHelpFileName), - QObject::tr("BUT_OK")); - } -} - -void VVTK_SegmentationCursorDlg::done( int r ) -{ - myPlaneAction->setChecked( false ); - mySphereAction->setChecked( false ); - - emit scgClose(); - - QDialog::done( r ); -} - -void VVTK_SegmentationCursorDlg::onParentShow() -{ - if(myPlaneAction->isChecked() || mySphereAction->isChecked()) - show(); - else - hide(); -} - -void VVTK_SegmentationCursorDlg::onParentHide() -{ - hide(); -} - -bool VVTK_SegmentationCursorDlg::CheckNumberOfFaces() -{ - if( !myInteractor ) - return false; - - vtkRenderer* aRenderer = myInteractor->getRenderer(); - - if( !aRenderer ) - return false; - - int aNumberOfPoints = 0; - - vtkActor* anActor; - VTK::ActorCollectionCopy aCopy(aRenderer->GetActors()); - vtkActorCollection* anActColl = aCopy.GetActors(); - for( anActColl->InitTraversal(); ( anActor = anActColl->GetNextActor() ) != NULL; ) - { - if( VISU_GaussPtsAct1* aGaussActor = VISU_GaussPtsAct1::SafeDownCast( anActor ) ) - aNumberOfPoints += aGaussActor->GetInput()->GetNumberOfCells(); - } - return !( myInsidePrimitiveBox->getPrimitiveType() == VISU_OpenGLPointSpriteMapper::GeomSphere && - aNumberOfPoints * myInsidePrimitiveBox->getFaceNumber() * 2 > myInsidePrimitiveBox->getFaceLimit() || - myOutsidePrimitiveBox->getPrimitiveType() == VISU_OpenGLPointSpriteMapper::GeomSphere && - aNumberOfPoints * myOutsidePrimitiveBox->getFaceNumber() > myOutsidePrimitiveBox->getFaceLimit() ); -} - -void VVTK_SegmentationCursorDlg::keyPressEvent( QKeyEvent* e ) -{ - QDialog::keyPressEvent( e ); - if ( e->isAccepted() ) - return; - - if ( e->key() == Qt::Key_F1 ) - { - e->accept(); - onClickHelp(); - } -} diff --git a/src/VVTK/VVTK_SegmentationCursorDlg.h b/src/VVTK/VVTK_SegmentationCursorDlg.h deleted file mode 100644 index 54750222..00000000 --- a/src/VVTK/VVTK_SegmentationCursorDlg.h +++ /dev/null @@ -1,199 +0,0 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// -// File : VVTK_SegmentationCursorDlg.h -// Author : Oleg Uvarov -// Module : VISU -// -#ifndef VVTK_SEGMENTATIONCURSORDLG_H -#define VVTK_SEGMENTATIONCURSORDLG_H - -#include "VVTK.h" - -#include "VISU_GaussPtsDeviceActor.h" - -#include - -#include -#include - -class vtkActorCollection; -class vtkCallbackCommand; -class vtkImageData; - -class QLabel; -class QLineEdit; -class QPushButton; -class QRadioButton; -class QTabWidget; -class QGroupBox; -class QWidget; -//class QVBox; - -class QtxAction; -class SalomeApp_DoubleSpinBox; -class SalomeApp_IntSpinBox; - -class VISU_GaussPtsAct1; -class VISU_InsideCursorSettings; -class VISU_OutsideCursorSettings; -class VISU_WidgetCtrl; - -class VVTK_PrimitiveBox; -class VVTK_SizeBox; - -class SVTK_RenderWindowInteractor; - - -//! Segmentation Cursor Dialog. -/*! - * Uses for set up Segmentation and Outside Cursor Gauss Points preferenses - * and apply them to all actors in the current renderer. - */ -class VVTK_SegmentationCursorDlg : public QDialog -{ - Q_OBJECT - -public: - VVTK_SegmentationCursorDlg( QWidget* parent = 0, const char* name = 0 ); - ~VVTK_SegmentationCursorDlg(); - - void SetWidgetCtrl( VISU_WidgetCtrl* ); - void SetPlaneAction( QtxAction* theAction ) { myPlaneAction = theAction; } - void SetSphereAction( QtxAction* theAction ) { mySphereAction = theAction; } - - bool GetIsPlaneSegmentation() const { return myIsPlaneSegmentation; } - void SetIsPlaneSegmentation( bool on ) { myIsPlaneSegmentation = on; } - - //! Update contents of the Segmentation tab. - void UpdateSegmentation(); - void UpdateInsideGaussPoints(); - void UpdateOutsideGaussPoints(); - - //! Update contents of the Outside Cursor tab. - void UpdateOutsideCursor(); - - VISU_InsideCursorSettings* GetInsideCursorSettings(); - VISU_OutsideCursorSettings* GetOutsideCursorSettings(); - - vtkSmartPointer GetEventCallbackCommand() { return myEventCallbackCommand; } - - void SetInteractor( SVTK_RenderWindowInteractor* theInteractor ) { myInteractor = theInteractor; } - -public: - float getMagnification() const; - void setMagnification( float ); - - float getIncrement() const; - void setIncrement( float ); - -protected: - void ApplySegmentationCursor(); - void ApplyInsideGaussPoints(); - void ApplyOutsideGaussPoints(); - - bool CheckNumberOfFaces(); - - VISU::TTextureValue - MakeImageData( bool theInside, - const QString& theMainTexture, - const QString& theAlphaTexture ); - -private: - static void ProcessEvents(vtkObject* theObject, - unsigned long theEvent, - void* theClientData, - void* theCallData); - - void keyPressEvent( QKeyEvent* e ); - -protected slots: - virtual void done( int ); - void onParentShow(); - void onParentHide(); - - void onClickApply(); - void onClickClose(); - void onClickHelp(); - -signals: - void scgClose(); - -private: - SVTK_RenderWindowInteractor* myInteractor; - - QTabWidget* myTabBox; - - // Segmentation cursor - QWidget* mySegmentationCursorBox; - - QGroupBox* myOriginGroup; - SalomeApp_DoubleSpinBox* myXOriginSpinBox; - SalomeApp_DoubleSpinBox* myYOriginSpinBox; - SalomeApp_DoubleSpinBox* myZOriginSpinBox; - - QGroupBox* myDirectionGroup; - SalomeApp_DoubleSpinBox* myDXDirectionSpinBox; - SalomeApp_DoubleSpinBox* myDYDirectionSpinBox; - SalomeApp_DoubleSpinBox* myDZDirectionSpinBox; - - QGroupBox* myDepthGroup; - SalomeApp_DoubleSpinBox* myDepthSpinBox; - - QGroupBox* myRadiusGroup; - SalomeApp_DoubleSpinBox* myRadiusSpinBox; - SalomeApp_DoubleSpinBox* myRatioSpinBox; - - bool myIsPlaneSegmentation; - - float myPriority; - vtkSmartPointer myEventCallbackCommand; - - VISU_WidgetCtrl* myWidgetCtrl; - QtxAction* myPlaneAction; - QtxAction* mySphereAction; - - // Gauss Points - QWidget* myGaussPointsBox; - - VVTK_PrimitiveBox* myInsidePrimitiveBox; - VVTK_SizeBox* myInsideSizeBox; - - QString myInsideMainTexture; - QString myInsideAlphaTexture; - - vtkSmartPointer myInsideCursorSettings; - - VVTK_PrimitiveBox* myOutsidePrimitiveBox; - VVTK_SizeBox* myOutsideSizeBox; - - QString myOutsideMainTexture; - QString myOutsideAlphaTexture; - - vtkSmartPointer myOutsideCursorSettings; - - QLabel* myMagnificationLabel; - SalomeApp_IntSpinBox* myMagnificationSpinBox; - QLabel* myIncrementLabel; - SalomeApp_DoubleSpinBox* myIncrementSpinBox; -}; - -#endif diff --git a/src/VVTK/VVTK_SizeBox.cxx b/src/VVTK/VVTK_SizeBox.cxx deleted file mode 100644 index d12c3c9e..00000000 --- a/src/VVTK/VVTK_SizeBox.cxx +++ /dev/null @@ -1,382 +0,0 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// -// VISU VISUGUI : GUI of VISU component -// File : VVTK_SizeBox.cxx -// Author : Oleg UVAROV -// Module : VISU -// -#include "VVTK_SizeBox.h" - -#include - -#include "SUIT_ResourceMgr.h" -#include "SUIT_Session.h" - -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -using namespace std; - -VVTK_SizeBox::VVTK_SizeBox( QWidget* parent ) : - QWidget( parent ) -{ - QVBoxLayout* aMainLayout = new QVBoxLayout( this ); - aMainLayout->setSpacing( 0 ); - aMainLayout->setMargin( 0 ); - - // Size - QGroupBox* SizeGroup = new QGroupBox ( tr( "SIZE_TITLE" ), this ); - //SizeGroup->setColumnLayout(0, Qt::Vertical ); - //SizeGroup->layout()->setSpacing( 0 ); - //SizeGroup->layout()->setMargin( 0 ); - - QGridLayout* SizeGroupLayout = new QGridLayout (SizeGroup); - SizeGroupLayout->setAlignment(Qt::AlignTop | Qt::AlignCenter); - SizeGroupLayout->setSpacing(6); - SizeGroupLayout->setMargin(11); - - // Outside Size - myOutsideSizeLabel = new QLabel( tr( "OUTSIDE_SIZE" ), SizeGroup ); - myOutsideSizeSpinBox = new SalomeApp_IntSpinBox( SizeGroup ); - VISU::initSpinBox( myOutsideSizeSpinBox, 0, 100, 1 ); - myOutsideSizeSpinBox->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) ); - - SizeGroupLayout->addWidget( myOutsideSizeLabel, 0, 0 ); - SizeGroupLayout->addWidget( myOutsideSizeSpinBox, 0, 1 ); - - // Geometry Size - myGeomSizeLabel = new QLabel( tr( "GEOM_SIZE" ), SizeGroup ); - myGeomSizeSpinBox = new SalomeApp_IntSpinBox( SizeGroup ); - VISU::initSpinBox( myGeomSizeSpinBox, 0, 100, 1 ); - myGeomSizeSpinBox->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) ); - - SizeGroupLayout->addWidget( myGeomSizeLabel, 0, 0 ); - SizeGroupLayout->addWidget( myGeomSizeSpinBox, 0, 1 ); - - // Min Size - myMinSizeLabel = new QLabel( tr( "MIN_SIZE" ), SizeGroup ); - myMinSizeSpinBox = new SalomeApp_IntSpinBox( SizeGroup ); - VISU::initSpinBox( myMinSizeSpinBox, 0, 100, 1 ); - myMinSizeSpinBox->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) ); - - SizeGroupLayout->addWidget( myMinSizeLabel, 1, 0 ); - SizeGroupLayout->addWidget( myMinSizeSpinBox, 1, 1 ); - - // Max Size - myMaxSizeLabel = new QLabel( tr( "MAX_SIZE" ), SizeGroup ); - myMaxSizeSpinBox = new SalomeApp_IntSpinBox( SizeGroup ); - VISU::initSpinBox( myMaxSizeSpinBox, 0, 100, 1 ); - myMaxSizeSpinBox->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) ); - - SizeGroupLayout->addWidget( myMaxSizeLabel, 1, 2 ); - SizeGroupLayout->addWidget( myMaxSizeSpinBox, 1, 3 ); - - // Magnification - myMagnificationLabel = new QLabel( tr( "MAGNIFICATION" ), SizeGroup ); - myMagnificationSpinBox = new SalomeApp_IntSpinBox( SizeGroup ); - VISU::initSpinBox( myMagnificationSpinBox, 1, 10000, 10 ); - myMagnificationSpinBox->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) ); - - SizeGroupLayout->addWidget( myMagnificationLabel, 2, 0 ); - SizeGroupLayout->addWidget( myMagnificationSpinBox, 2, 1 ); - - // Increment - myIncrementLabel = new QLabel( tr( "INCREMENT" ), SizeGroup ); - myIncrementSpinBox = new SalomeApp_DoubleSpinBox( SizeGroup ); - VISU::initSpinBox( myIncrementSpinBox, 0.01, 10, 0.1, "parametric_precision" ); - myIncrementSpinBox->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) ); - - SizeGroupLayout->addWidget( myIncrementLabel, 2, 2 ); - SizeGroupLayout->addWidget( myIncrementSpinBox, 2, 3 ); - - aMainLayout->addWidget( SizeGroup ); - - // Color - myColorGroup = new QGroupBox ( tr( "COLOR_TITLE" ), this ); - //myColorGroup->setColumnLayout(0, Qt::Vertical ); - //myColorGroup->layout()->setSpacing( 0 ); - //myColorGroup->layout()->setMargin( 0 ); - - QGridLayout* ColorGroupLayout = new QGridLayout ( myColorGroup ); - ColorGroupLayout->setAlignment(Qt::AlignTop | Qt::AlignLeft); - ColorGroupLayout->setSpacing(6); - ColorGroupLayout->setMargin(11); - - myUniformCheckBox = new QCheckBox( tr( "UNIFORM_COLOR" ), myColorGroup ); - - myColorLabel = new QLabel( tr( "COLOR" ), myColorGroup ); - myColorButton = new QtxColorButton( myColorGroup ); - - ColorGroupLayout->addWidget( myUniformCheckBox, 0, 0 ); - ColorGroupLayout->addWidget( myColorLabel, 0, 1 ); - ColorGroupLayout->addWidget( myColorButton, 0, 2 ); - - aMainLayout->addWidget( myColorGroup ); - - connect( myUniformCheckBox, SIGNAL( toggled( bool ) ), myColorButton, SLOT( setEnabled( bool ) ) ); - //connect( myColorButton, SIGNAL( clicked() ), this, SLOT( onColorButtonPressed() ) ); - - setType( VVTK_SizeBox::Results ); -} - -void VVTK_SizeBox::onToggleResults() -{ - myType = VVTK_SizeBox::Results; - - myOutsideSizeLabel->hide(); - myOutsideSizeSpinBox->hide(); - - myGeomSizeLabel->hide(); - myGeomSizeSpinBox->hide(); - - myMinSizeLabel->show(); - myMinSizeSpinBox->show(); - - myMaxSizeLabel->show(); - myMaxSizeSpinBox->show(); - - myMagnificationLabel->show(); - myMagnificationSpinBox->show(); - - myIncrementLabel->show(); - myIncrementSpinBox->show(); - - myColorGroup->hide(); - - myUniformCheckBox->hide(); -} - -void VVTK_SizeBox::onToggleGeometry() -{ - myType = VVTK_SizeBox::Geometry; - - myOutsideSizeLabel->hide(); - myOutsideSizeSpinBox->hide(); - - myGeomSizeLabel->show(); - myGeomSizeSpinBox->show(); - - myMinSizeLabel->hide(); - myMinSizeSpinBox->hide(); - - myMaxSizeLabel->hide(); - myMaxSizeSpinBox->hide(); - - myMagnificationLabel->show(); - myMagnificationSpinBox->show(); - - myIncrementLabel->show(); - myIncrementSpinBox->show(); - - myColorGroup->show(); - - myUniformCheckBox->hide(); -} - -void VVTK_SizeBox::onToggleInside() -{ - myType = VVTK_SizeBox::Inside; - - myOutsideSizeLabel->hide(); - myOutsideSizeSpinBox->hide(); - - myGeomSizeLabel->hide(); - myGeomSizeSpinBox->hide(); - - myMinSizeLabel->show(); - myMinSizeSpinBox->show(); - - myMaxSizeLabel->show(); - myMaxSizeSpinBox->show(); - - myMagnificationLabel->hide(); - myMagnificationSpinBox->hide(); - - myIncrementLabel->hide(); - myIncrementSpinBox->hide(); - - myColorGroup->hide(); - - myUniformCheckBox->hide(); -} - -void VVTK_SizeBox::onToggleOutside() -{ - myType = VVTK_SizeBox::Outside; - - myOutsideSizeLabel->show(); - myOutsideSizeSpinBox->show(); - - myGeomSizeLabel->hide(); - myGeomSizeSpinBox->hide(); - - myMinSizeLabel->hide(); - myMinSizeSpinBox->hide(); - - myMaxSizeLabel->hide(); - myMaxSizeSpinBox->hide(); - - myMagnificationLabel->hide(); - myMagnificationSpinBox->hide(); - - myIncrementLabel->hide(); - myIncrementSpinBox->hide(); - - myColorGroup->show(); - - myUniformCheckBox->show(); -} - -void VVTK_SizeBox::setType( int theType ) -{ - myType = theType; - - switch( myType ) - { - case VVTK_SizeBox::Results : onToggleResults(); break; - case VVTK_SizeBox::Geometry : onToggleGeometry(); break; - case VVTK_SizeBox::Inside : onToggleInside(); break; - case VVTK_SizeBox::Outside : onToggleOutside(); break; - default : break; - } -} - -float VVTK_SizeBox::getOutsideSize() const -{ - return myOutsideSizeSpinBox->value() / 100.0; -} - -void VVTK_SizeBox::setOutsideSize( float theOutsideSize ) -{ - myOutsideSizeSpinBox->setValue( ( int )( theOutsideSize * 100 ) ); -} - -float VVTK_SizeBox::getGeomSize() const -{ - return myGeomSizeSpinBox->value() / 100.0; -} - -void VVTK_SizeBox::setGeomSize( float theGeomSize ) -{ - myGeomSizeSpinBox->setValue( ( int )( theGeomSize * 100 ) ); -} - -float VVTK_SizeBox::getMinSize() const -{ - return myMinSizeSpinBox->value() / 100.0; -} - -void VVTK_SizeBox::setMinSize( float theMinSize ) -{ - myMinSizeSpinBox->setValue( ( int )( theMinSize * 100 ) ); -} - -float VVTK_SizeBox::getMaxSize() const -{ - return myMaxSizeSpinBox->value() / 100.0; -} - -void VVTK_SizeBox::setMaxSize( float theMaxSize ) -{ - myMaxSizeSpinBox->setValue( ( int )( theMaxSize * 100 ) ); -} - -float VVTK_SizeBox::getMagnification() const -{ - return myMagnificationSpinBox->value() / 100.0; -} - -void VVTK_SizeBox::setMagnification( float theMagnification ) -{ - myMagnificationSpinBox->setValue( ( int )( theMagnification * 100 ) ); -} - -float VVTK_SizeBox::getIncrement() const -{ - return myIncrementSpinBox->value(); -} - -void VVTK_SizeBox::setIncrement( float theIncrement ) -{ - myIncrementSpinBox->setValue( theIncrement ); -} - -bool VVTK_SizeBox::getUniform() const -{ - return myUniformCheckBox->isChecked(); -} - -void VVTK_SizeBox::setUniform( bool theUniform ) -{ - myUniformCheckBox->setChecked( theUniform ); - myColorButton->setEnabled( theUniform ); -} - -QColor VVTK_SizeBox::getColor() const -{ - return myColorButton->color();//palette().color( myColorButton->backgroundRole() ); - //return myColorButton->paletteBackgroundColor(); -} - -void VVTK_SizeBox::setColor( const QColor& theColor ) -{ - if ( theColor.isValid() ) - { - //QPalette aPalette( myColorButton->palette() ); - //aPalette.setColor( myColorButton->backgroundRole(), theColor ); - myColorButton->setColor( theColor ); - } - //myColorButton->setPaletteBackgroundColor( theColor ); -} - -void VVTK_SizeBox::enableSizeControls( bool enabled ) -{ - myMagnificationSpinBox->setEnabled( enabled ); - myMaxSizeSpinBox->setEnabled( enabled ); - myMinSizeSpinBox->setEnabled( enabled ); - myIncrementSpinBox->setEnabled( enabled ); - myGeomSizeSpinBox->setEnabled( enabled ); -} - -/*void VVTK_SizeBox::onColorButtonPressed() -{ - QPalette aPalette( myColorButton->palette() ); - QColor aColor = QColorDialog:: - getColor( aPalette.color(myColorButton->backgroundRole() ), this ); - - if( aColor.isValid() ) - { - aPalette.setColor( myColorButton->backgroundRole(), aColor ); - myColorButton->setPalette( aPalette ); - } -}*/ diff --git a/src/VVTK/VVTK_SizeBox.h b/src/VVTK/VVTK_SizeBox.h deleted file mode 100644 index 6322c125..00000000 --- a/src/VVTK/VVTK_SizeBox.h +++ /dev/null @@ -1,123 +0,0 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// -// VISU VISUGUI : GUI of VISU component -// File : VVTK_SizeBox.h -// Author : Oleg UVAROV -// Module : VISU -// -#ifndef VVTK_SIZEBOX_H -#define VVTK_SIZEBOX_H - -#include "VVTK.h" - -#include - -class QLabel; -class QLineEdit; -class QPushButton; -class QCheckBox; -class QGroupBox; - -class SalomeApp_DoubleSpinBox; -class SalomeApp_IntSpinBox; -class QtxColorButton; - -class VVTK_EXPORT VVTK_SizeBox : public QWidget -{ - Q_OBJECT - -public: - enum { Results = 0, Geometry, Inside, Outside }; - -public: - VVTK_SizeBox( QWidget* ); - ~VVTK_SizeBox() {} - -public: - int getType() const { return myType; } - void setType( int ); - - float getOutsideSize() const; - void setOutsideSize( float ); - - float getGeomSize() const; - void setGeomSize( float ); - - float getMinSize() const; - void setMinSize( float ); - - float getMaxSize() const; - void setMaxSize( float ); - - float getMagnification() const; - void setMagnification( float ); - - float getIncrement() const; - void setIncrement( float ); - - bool getUniform() const; - void setUniform( bool ); - - QColor getColor() const; - void setColor( const QColor& ); - - void enableSizeControls( bool enabled ); - -protected slots: - void onToggleResults(); - void onToggleGeometry(); - void onToggleInside(); - void onToggleOutside(); - - //void onColorButtonPressed(); - -private: - int myType; - - QLabel* myOutsideSizeLabel; - SalomeApp_IntSpinBox* myOutsideSizeSpinBox; - - QLabel* myGeomSizeLabel; - SalomeApp_IntSpinBox* myGeomSizeSpinBox; - - QLabel* myMinSizeLabel; - SalomeApp_IntSpinBox* myMinSizeSpinBox; - - QLabel* myMaxSizeLabel; - SalomeApp_IntSpinBox* myMaxSizeSpinBox; - - QLabel* myMagnificationLabel; - SalomeApp_IntSpinBox* myMagnificationSpinBox; - - QLabel* myIncrementLabel; - SalomeApp_DoubleSpinBox* myIncrementSpinBox; - - QCheckBox* myUniformCheckBox; - - QGroupBox* myColorGroup; - QLabel* myColorLabel; - QtxColorButton* myColorButton; -}; - - - -#endif diff --git a/src/VVTK/VVTK_ViewManager.cxx b/src/VVTK/VVTK_ViewManager.cxx deleted file mode 100644 index 2c9f8512..00000000 --- a/src/VVTK/VVTK_ViewManager.cxx +++ /dev/null @@ -1,49 +0,0 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// -#include "VVTK_ViewManager.h" -#include "VVTK_ViewModel.h" - -#include - -int VVTK_ViewManager::_VVTKViewMgr_Id = 0; - -//*************************************************************** -VVTK_ViewManager -::VVTK_ViewManager( SUIT_Study* study, - SUIT_Desktop* theDesktop ) -: SVTK_ViewManager( study, theDesktop ) -{ - myId = ++_VVTKViewMgr_Id; - setViewModel( new VVTK_Viewer() ); -} - -//*************************************************************** -VVTK_ViewManager::~VVTK_ViewManager() -{ -} - -//*************************************************************** -void VVTK_ViewManager::setViewName(SUIT_ViewWindow* theView) -{ - int aPos = myViews.indexOf(theView); - theView->setWindowTitle( tr( "VTK_VIEW_TITLE" ).arg( myId ).arg( aPos + 1 ) ); -} diff --git a/src/VVTK/VVTK_ViewManager.h b/src/VVTK/VVTK_ViewManager.h deleted file mode 100644 index 5bc84e43..00000000 --- a/src/VVTK/VVTK_ViewManager.h +++ /dev/null @@ -1,49 +0,0 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// -#ifndef VVTK_VIEWMANAGER_H -#define VVTK_VIEWMANAGER_H - -#include "SVTK_ViewManager.h" -#include "VVTK.h" - -class SUIT_Desktop; - -//! Extend SUIT_ViewManager to deal with VVTK_Viewer -class VVTK_EXPORT VVTK_ViewManager : public SVTK_ViewManager -{ - Q_OBJECT; -public: - //! Construct the view manager - VVTK_ViewManager( SUIT_Study* study, SUIT_Desktop* ); - - //! Destroy the view manager - virtual ~VVTK_ViewManager(); - -protected: - void setViewName( SUIT_ViewWindow* theView ); - -private: - int myId; - static int _VVTKViewMgr_Id; -}; - -#endif diff --git a/src/VVTK/VVTK_ViewModel.cxx b/src/VVTK/VVTK_ViewModel.cxx deleted file mode 100644 index a06b2ca3..00000000 --- a/src/VVTK/VVTK_ViewModel.cxx +++ /dev/null @@ -1,124 +0,0 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// -#include "VVTK_ViewModel.h" -#include "VISU_ActorFactory.h" -#include "VVTK_ViewWindow.h" - -#include "VTKViewer_Algorithm.h" -#include "SVTK_Functor.h" -#include "VISU_ActorBase.h" -#include "SVTK_View.h" -#include "SVTK_Prs.h" - -#include - -#include -#include - -//--------------------------------------------------------------- -VVTK_Viewer::VVTK_Viewer() -{ -} - -//--------------------------------------------------------------- -VVTK_Viewer::~VVTK_Viewer() -{ -} - -//--------------------------------------------------------------- -SUIT_ViewWindow* VVTK_Viewer::createView( SUIT_Desktop* theDesktop ) -{ - TViewWindow* aViewWindow = new TViewWindow (theDesktop); - aViewWindow->Initialize(this); - - aViewWindow->setBackgroundColor( backgroundColor() ); - aViewWindow->SetTrihedronSize( trihedronSize() ); - aViewWindow->SetProjectionMode( projectionMode() ); - aViewWindow->SetInteractionStyle( interactionStyle() ); - aViewWindow->SetIncrementalSpeed( incrementalSpeed(), incrementalSpeedMode() ); - aViewWindow->SetSpacemouseButtons( spacemouseBtn(1), spacemouseBtn(2), spacemouseBtn(3) ); - - return aViewWindow; -} - -//--------------------------------------------------------------- -void VVTK_Viewer::Display(const SALOME_VTKPrs* thePrs) -{ - // try do downcast object - if(const SVTK_Prs* aPrs = dynamic_cast(thePrs)){ - if(aPrs->IsNull()) - return; - if(vtkActorCollection* aCollection = aPrs->GetObjects()){ - aCollection->InitTraversal(); - while(VISU_ActorBase* anActor = dynamic_cast(aCollection->GetNextActor())){ - if(!anActor->GetFactory()->GetActiveState()) - continue; - QVector aViews = myViewManager->getViews(); - for(int i = 0, iEnd = aViews.size(); i < iEnd; i++){ - if(SVTK_ViewWindow* aViewWindow = dynamic_cast(aViews.at(i))){ - if(SVTK_View* aView = aViewWindow->getView()){ - aView->Display(anActor, false); - } - } - } - } - } - } -} - -//--------------------------------------------------------------- -namespace VVTK -{ - struct TIsOneActorVisibleAction - { - bool& myResult; - TIsOneActorVisibleAction(bool& theResult): - myResult(theResult) - { - myResult = false; - } - void - operator()(SALOME_Actor* theActor) - { - if(!myResult) - myResult = theActor->GetVisibility(); - } - }; -} - -//--------------------------------------------------------------- -bool VVTK_Viewer::isVisible( const Handle(SALOME_InteractiveObject)& theIO ) -{ - QVector aViews = myViewManager->getViews(); - for(int i = 0, iEnd = aViews.size(); i < iEnd; i++) - if(SVTK_ViewWindow* aViewWindow = dynamic_cast(aViews.at(i))){ - bool aResult; - VVTK::TIsOneActorVisibleAction anAction(aResult); - VTK::ActorCollectionCopy aCopy(aViewWindow->getRenderer()->GetActors()); - SVTK::ForEachIf(aCopy.GetActors(), - SVTK::TIsSameIObject(theIO), - anAction); - return anAction.myResult; - } - - return false; -} diff --git a/src/VVTK/VVTK_ViewModel.h b/src/VVTK/VVTK_ViewModel.h deleted file mode 100644 index 7cfb87c3..00000000 --- a/src/VVTK/VVTK_ViewModel.h +++ /dev/null @@ -1,76 +0,0 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// -#ifndef VVTK_VIEWMODEL_H -#define VVTK_VIEWMODEL_H - -#include - -#include "VVTK.h" -#include "SVTK_ViewModel.h" - -class VVTK_ViewWindow; - -//! VVTK View Model -class VVTK_EXPORT VVTK_Viewer : public SVTK_Viewer -{ - Q_OBJECT; - -public: - typedef VVTK_ViewWindow TViewWindow; - - static - QString - Type() - { - return "VVTK"; - } - - VVTK_Viewer(); - - virtual - ~VVTK_Viewer(); - - //! See #SUIT_ViewModel::createView - virtual - SUIT_ViewWindow* - createView(SUIT_Desktop*); - - //! See SUIT_ViewModel::getType - virtual - QString - getType() const - { - return Type(); - } - - //! See #SALOME_View::Display( const SALOME_Prs* ) - virtual - void - Display(const SALOME_VTKPrs* thePrs); - - //! See #SALOME_View::isVisible( const Handle(SALOME_InteractiveObject)& ) - virtual - bool - isVisible(const Handle(SALOME_InteractiveObject)& theIO); -}; - -#endif diff --git a/src/VVTK/VVTK_ViewWindow.cxx b/src/VVTK/VVTK_ViewWindow.cxx deleted file mode 100755 index 1d5be16b..00000000 --- a/src/VVTK/VVTK_ViewWindow.cxx +++ /dev/null @@ -1,324 +0,0 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// -// SALOME VTKViewer : build VTK viewer into Salome desktop -// File : -// Author : -// Module : SALOME -// $Header$ -// -#include "VVTK_ViewWindow.h" -#include "VVTK_ViewModel.h" -#include "VVTK_MainWindow.h" -#include "SVTK_View.h" - -#include "SUIT_Session.h" - -#include "VVTK_Renderer.h" -#include "SVTK_Selector.h" -#include "SVTK_InteractorStyle.h" -#include "SVTK_RenderWindowInteractor.h" -#include "SVTK_GenericRenderWindowInteractor.h" - -#include - -#include -#include -#include -#include - -//---------------------------------------------------------------------------- -VVTK_ViewWindow -::VVTK_ViewWindow(SUIT_Desktop* theDesktop): - SVTK_ViewWindow(theDesktop), - myMainWindow1(NULL), - myMainWindow2(NULL), - myView2(NULL), - myDumpImage(QImage()) -{} - -//---------------------------------------------------------------------------- -void VVTK_ViewWindow::Initialize(SVTK_ViewModelBase* theModel) -{ - if(SUIT_ResourceMgr* aResourceMgr = SUIT_Session::session()->resourceMgr()){ - - QSplitter* s = new QSplitter( Qt::Vertical, this ); - setCentralWidget( s ); - - VISU_WidgetCtrl* aWidgetCtrl = NULL; - VISU_InsideCursorSettings* anInsideCursorSettings = NULL; - VISU_OutsideCursorSettings* anOutsideCursorSettings = NULL; - VISU_PickingSettings* aPickingSettings = NULL; - SVTK_Selector* aSelector = SVTK_Selector::New(); - { - myMainWindow1 = new VVTK_MainWindow1(s, - "VVTK_MainWindow", - aResourceMgr, - this); - - anInsideCursorSettings = myMainWindow1->GetInsideCursorSettings(); - anOutsideCursorSettings = myMainWindow1->GetOutsideCursorSettings(); - aPickingSettings = myMainWindow1->GetPickingSettings(); - - SVTK_RenderWindowInteractor* anIteractor = - new SVTK_RenderWindowInteractor(myMainWindow1,"SVTK_RenderWindowInteractor1"); - - SVTK_GenericRenderWindowInteractor* aDevice = - SVTK_GenericRenderWindowInteractor::New(); - aDevice->SetRenderWidget(anIteractor); - aDevice->SetSelector(aSelector); - - VVTK_Renderer1* aRenderer = VVTK_Renderer1::New(); - aRenderer->Initialize(aDevice,aSelector); - - aWidgetCtrl = aRenderer->GetWidgetCtrl(); - - aRenderer->SetInsideCursorSettings(anInsideCursorSettings); - aRenderer->SetOutsideCursorSettings(anOutsideCursorSettings); - aRenderer->SetPickingSettings(aPickingSettings); - - anIteractor->Initialize(aDevice,aRenderer,aSelector); - - SVTK_InteractorStyle* aStyle = SVTK_InteractorStyle::New(); - anIteractor->PushInteractorStyle(aStyle); - aStyle->Delete(); - - aDevice->Delete(); - aRenderer->Delete(); - - myMainWindow1->Initialize(anIteractor,aRenderer); - - myView1 = new SVTK_View(myMainWindow1); - SVTK_ViewWindow::Initialize(myView1,theModel); - - anIteractor->getRenderWindow()->Render(); - myMainWindow1->onResetView(); - } - { - myMainWindow2 = myMainWindow1->CreateMainWindow2(s, - "VVTK_SegmantationWindow", - aResourceMgr, - this); - SVTK_RenderWindowInteractor* anIteractor = - new SVTK_RenderWindowInteractor(myMainWindow2,"SVTK_RenderWindowInteractor1"); - - SVTK_GenericRenderWindowInteractor* aDevice = - SVTK_GenericRenderWindowInteractor::New(); - aDevice->SetRenderWidget(anIteractor); - aDevice->SetSelector(aSelector); - - VVTK_Renderer2* aRenderer = VVTK_Renderer2::New(); - aRenderer->Initialize(aDevice,aSelector); - - aRenderer->SetWidgetCtrl(aWidgetCtrl); - - aRenderer->SetInsideCursorSettings(anInsideCursorSettings); - aRenderer->SetPickingSettings(aPickingSettings); - - anIteractor->Initialize(aDevice,aRenderer,aSelector); - - SVTK_InteractorStyle* aStyle = SVTK_InteractorStyle::New(); - anIteractor->PushInteractorStyle(aStyle); - aStyle->Delete(); - - aDevice->Delete(); - aRenderer->Delete(); - - myMainWindow2->Initialize(anIteractor); - - myView2 = new SVTK_View(myMainWindow2); - SVTK_ViewWindow::Initialize(myView2,theModel); - - anIteractor->getRenderWindow()->Render(); - myMainWindow2->onResetView(); - } - aSelector->Delete(); - - int h = height() / 2; - QList aSizes; - aSizes.append( h ); - aSizes.append( h ); - s->setSizes( aSizes ); - myMainWindow2->hide(); - - myMainWindow = myMainWindow1; - myView = myView1; - } -} - -//---------------------------------------------------------------------------- -VVTK_ViewWindow -::~VVTK_ViewWindow() -{} - - -//---------------------------------------------------------------------------- -VVTK_MainWindow1* -VVTK_ViewWindow -::getMainWindow1() -{ - return myMainWindow1; -} - -VVTK_MainWindow2* -VVTK_ViewWindow -::getMainWindow2() -{ - return myMainWindow2; -} - - -//---------------------------------------------------------------------------- -void -VVTK_ViewWindow -::AddActor(VTKViewer_Actor* theActor, - bool theIsUpdate) -{ - myMainWindow1->AddActor(theActor,theIsUpdate); - myMainWindow2->AddActor(theActor,theIsUpdate); -} - -//---------------------------------------------------------------------------- -void -VVTK_ViewWindow -::RemoveActor(VTKViewer_Actor* theActor, - bool theIsUpdate) -{ - myMainWindow1->RemoveActor(theActor,theIsUpdate); - myMainWindow2->RemoveActor(theActor,theIsUpdate); -} - -//---------------------------------------------------------------------------- -void -VVTK_ViewWindow -::Repaint(bool theUpdateTrihedron) -{ - myMainWindow1->Repaint(theUpdateTrihedron); - myMainWindow2->Repaint(theUpdateTrihedron); -} - -//---------------------------------------------------------------- -void -VVTK_ViewWindow -::unHighlightAll() -{ - myView1->unHighlightAll(); - myView2->unHighlightAll(); -} - -//---------------------------------------------------------------- -void -VVTK_ViewWindow -::highlight(const Handle(SALOME_InteractiveObject)& theIO, - bool theIsHighlight, - bool theIsUpdate ) -{ - if(GetSelector()->AddIObject(theIO)) - GetSelector()->EndPickCallback(); - myView1->highlight( theIO, theIsHighlight, theIsUpdate ); - myView2->highlight( theIO, theIsHighlight, theIsUpdate ); -} - -//---------------------------------------------------------------- -void -VVTK_ViewWindow -::onSelectionChanged() -{ - myView1->onSelectionChanged(); - myView2->onSelectionChanged(); -} - -//---------------------------------------------------------------------------- -void -VVTK_ViewWindow -::onResetView() -{ - myMainWindow1->onResetView(); - myMainWindow2->onResetView(); -} - -//---------------------------------------------------------------------------- -void -VVTK_ViewWindow -::onFitAll() -{ - myMainWindow1->onFitAll(); - myMainWindow2->onFitAll(); -} - -//---------------------------------------------------------------------------- -bool -VVTK_ViewWindow -::action( const int accelAction ) -{ - if ( myMainWindow1->hasFocus() ) - myMainWindow1->action( accelAction ); - else if ( myMainWindow2->hasFocus() ) - myMainWindow2->action( accelAction ); - else - return false; - return true; -} - -//---------------------------------------------------------------------------- -QImage -VVTK_ViewWindow -::dumpView() -{ - if( myMainWindow1->GetInteractor()->hasFocus() ) - { - if ( myMainWindow1->getToolBar()->testAttribute(Qt::WA_UnderMouse) || myDumpImage.isNull() ) - return myMainWindow1->dumpView(); - else - return myDumpImage; - } - - if( myMainWindow2->GetInteractor()->hasFocus() ) - { - if ( myMainWindow1->getToolBar()->testAttribute(Qt::WA_UnderMouse) || myDumpImage.isNull() ) - return myMainWindow2->dumpView(); - else - return myDumpImage; - } - - return QImage(); -} - -//---------------------------------------------------------------------------- -void -VVTK_ViewWindow -::setBackgroundColor( const QColor& theColor ) -{ - myMainWindow1->SetBackgroundColor( theColor ); - myMainWindow2->SetBackgroundColor( theColor ); -} - - -//---------------------------------------------------------------------------- -void -VVTK_ViewWindow -::RefreshDumpImage() -{ - if( myMainWindow1->GetInteractor()->hasFocus() ) - myDumpImage = myMainWindow1->dumpView(); - else if ( myMainWindow2->GetInteractor()->hasFocus() ) - myDumpImage = myMainWindow2->dumpView(); -} diff --git a/src/VVTK/VVTK_ViewWindow.h b/src/VVTK/VVTK_ViewWindow.h deleted file mode 100755 index bedf4b44..00000000 --- a/src/VVTK/VVTK_ViewWindow.h +++ /dev/null @@ -1,155 +0,0 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// -#ifndef VVTK_VIEWWINDOW_H -#define VVTK_VIEWWINDOW_H - -#ifdef WIN32 -#pragma warning( disable:4251 ) -#endif - -#include "VVTK.h" -#include "SVTK_ViewWindow.h" - -#include - -#include - -class VVTK_MainWindow1; -class VVTK_MainWindow2; -class SVTK_View; - -//---------------------------------------------------------------------------- -//! Customize the SVTK_ViewWindow in order to manage two SVTK_View (base and segmented one) -class VVTK_EXPORT VVTK_ViewWindow : public SVTK_ViewWindow -{ - Q_OBJECT; - -public: - //! To construct the class - VVTK_ViewWindow(SUIT_Desktop* theDesktop); - - //! Destroy - virtual - ~VVTK_ViewWindow(); - - //! To initialize - virtual - void - Initialize(SVTK_ViewModelBase* theModel); - - //---------------------------------------------------------------------------- - //! Get access to base SVTK_MainWindow - VVTK_MainWindow1* - getMainWindow1(); - - //! Get access to segmented SVTK_MainWindow - VVTK_MainWindow2* - getMainWindow2(); - - //---------------------------------------------------------------------------- - //! Redefine SVTK_ViewWindow::AddActor method - /*! - This is an entry point for publication the presentation into the viewer. - Pointed actor published into the basic MainWindow. If the actor is - a Gauss Points one second actor is created from initial actor and - is put into segemented MainWindow. - */ - virtual - void - AddActor(VTKViewer_Actor* theActor, - bool theIsUpdate = false); - - //! Redefine SVTK_ViewWindow::RemoveActor method - virtual - void - RemoveActor(VTKViewer_Actor* theActor, - bool theIsUpdate = false); - - //! Redefine SVTK_ViewWindow::Repaint method - virtual - void - Repaint(bool theUpdateTrihedron = true); - - //---------------------------------------------------------------------------- - /* interactive object management */ - //! Redefine SVTK_ViewWindow::highlight method - virtual - void - highlight(const Handle(SALOME_InteractiveObject)& theIO, - bool theIsHighlight = true, - bool theIsUpdate = true); - - //! Redefine SVTK_ViewWindow::unHighlightAll method - virtual - void - unHighlightAll(); - - //! Redefine SVTK_ViewWindow::setBackgroundColor method - virtual - void - setBackgroundColor( const QColor& ); - - //---------------------------------------------------------------------------- - - //! Refresh dump images of the viewers - virtual - void RefreshDumpImage(); - -public slots: - //! Redefine SVTK_ViewWindow::onSelectionChanged method - virtual - void - onSelectionChanged(); - - //! Redefine SVTK_ViewWindow::onResetView method - virtual - void - onResetView(); - - //! Redefine SVTK_ViewWindow::onFitAll method - virtual - void - onFitAll(); - - //---------------------------------------------------------------------------- -protected: - virtual - bool - action( const int ); - - virtual QImage dumpView(); - - VVTK_MainWindow1* myMainWindow1; //!< The manage base view - SVTK_View* myView1; //!< The manage base view - - VVTK_MainWindow2* myMainWindow2; //!< The manage segmented view - SVTK_View* myView2; //!< The manage segmented view - -private: - QImage myDumpImage; -}; - -#ifdef WIN32 -#pragma warning( default:4251 ) -#endif - -#endif