#include <vtkPolyData.h>
#include <vtkPolyDataWriter.h>
+#ifdef cpPlugins_Interface_QT4
+#include <QFileDialog>
+#endif // cpPlugins_Interface_QT4
+
// -------------------------------------------------------------------------
cpPlugins::IO::MeshWriter::
-MeshWriter( )
- : Superclass( ),
- m_Writer( NULL )
+DialogResult cpPlugins::IO::MeshWriter::
+ExecConfigurationDialog( QWidget* parent )
{
- this->m_ClassName = "cpPlugins::IO::MeshWriter";
- this->m_ClassCategory = "MeshWriter";
- this->SetNumberOfInputs( 1 );
+ DialogResult r = Self::DialogResult_Cancel;
+
+#ifdef cpPlugins_Interface_QT4
+
+ std::string name = this->m_Parameters->GetString( "FileName" );
+ if( name == "" )
+ name = "save.vtk";
+
+ // Show dialog and check if it was accepted
+ QString qname =
+ QFileDialog::getSaveFileName(
+ parent,
+ QFileDialog::tr( "Save File" ),
+ QFileDialog::tr( name.c_str( ) ),
+ QFileDialog::tr( "Mesh files (*.vtk *.stl *.obj);;Any file (*)")
+ );
+ name = qname.toStdString( );
+ if( name != "" )
+ {
+ this->m_Parameters->SetString( "FileName", name );
+ r = Self::DialogResult_NoModal;
+
+ } // fi
+
+#endif // cpPlugins_Interface_QT4
- using namespace cpPlugins::Interface;
- this->m_DefaultParameters.Configure( Parameters::String, "FileName" );
- this->m_Parameters = this->m_DefaultParameters;
+ return( r );
+}
+
+// -------------------------------------------------------------------------
+cpPlugins::IO::MeshWriter::
+MeshWriter( )
+ : Superclass( )
+{
+ this->_AddInput( "Input" );
+ this->m_Parameters->ConfigureAsString( "FileName" );
}
// -------------------------------------------------------------------------
cpPlugins::IO::MeshWriter::
~MeshWriter( )
{
- if( this->m_Writer != NULL )
- this->m_Writer->Delete( );
}
// -------------------------------------------------------------------------
_GenerateData( )
{
cpPlugins::Interface::Mesh* mesh =
- this->GetInput< cpPlugins::Interface::Mesh >( 0 );
+ this->GetInput< cpPlugins::Interface::Mesh >( "Input" );
if( mesh == NULL )
return( "MeshWriter: No input mesh." );
- vtkPolyData* i = mesh->GetVTKMesh( );
+ vtkPolyData* i = mesh->GetVTK< vtkPolyData >( );
if( i == NULL )
return( "MeshWriter: No suitable input." );
- std::string fname = this->m_Parameters.GetValueAsString( "FileName" );
-
- if( this->m_Writer != NULL )
- this->m_Writer->Delete( );
+ std::string fname = this->m_Parameters->GetString( "FileName" );
- vtkPolyDataWriter* pdw = vtkPolyDataWriter::New( );
- this->m_Writer = pdw;
+ vtkPolyDataWriter* pdw = this->_CreateVTK< vtkPolyDataWriter >( );
pdw->SetInputData( i );
pdw->SetFileName( fname.c_str( ) );
pdw->Update( );