]> Creatis software - cpPlugins.git/blobdiff - plugins/cpExtensions/SkeletonWriter.cxx
yet another refactoring
[cpPlugins.git] / plugins / cpExtensions / SkeletonWriter.cxx
diff --git a/plugins/cpExtensions/SkeletonWriter.cxx b/plugins/cpExtensions/SkeletonWriter.cxx
new file mode 100644 (file)
index 0000000..f23f600
--- /dev/null
@@ -0,0 +1,79 @@
+#include <cpExtensions/SkeletonWriter.h>
+#include <cpInstances/DataObjects/Skeleton.h>
+
+#include <cpExtensions/DataStructures/Skeleton.h>
+#include <cpExtensions/Algorithms/SkeletonWriter.h>
+#include <cpPlugins/QT/SaveFileDialog.h>
+
+#ifdef cpPlugins_QT4
+#  include <QApplication>
+#endif // cpPlugins_QT4
+
+// -------------------------------------------------------------------------
+QDialog* cpPluginscpExtensions::SkeletonWriter::
+CreateQDialog( )
+{
+#ifdef cpPlugins_QT4
+  cpPlugins::QT::SaveFileDialog* dlg = NULL;
+  if( QApplication::instance( ) != NULL )
+  {
+    dlg = new cpPlugins::QT::SaveFileDialog( );
+    dlg->SetParameters( &( this->m_Parameters ), "FileName" );
+
+  } // fi
+  return( dlg );
+#else // cpPlugins_QT4
+  return( NULL );
+#endif // cpPlugins_QT4
+}
+
+// -------------------------------------------------------------------------
+cpPluginscpExtensions::SkeletonWriter::
+SkeletonWriter( )
+  : Superclass( )
+{
+  this->_ConfigureInput< cpInstances::Skeleton >( "Input", true, false );
+  this->m_Parameters.ConfigureAsSaveFileName( "FileName", "" );
+  this->m_Parameters.SetAcceptedFileExtensions(
+    "FileName",
+    "Skeleton files (*.txt)"
+    );
+}
+
+// -------------------------------------------------------------------------
+cpPluginscpExtensions::SkeletonWriter::
+~SkeletonWriter( )
+{
+}
+
+// -------------------------------------------------------------------------
+void cpPluginscpExtensions::SkeletonWriter::
+_GenerateData( )
+{
+  auto o = this->GetInputData( "Input" );
+  cpPlugins_Demangle_Skeleton_All_1( o, _GD0 )
+    this->_Error( "Invalid input skeleton." );
+}
+
+// -------------------------------------------------------------------------
+template< class _TSkeleton >
+void cpPluginscpExtensions::SkeletonWriter::
+_GD0( _TSkeleton* skeleton )
+{
+  typedef cpExtensions::Algorithms::SkeletonWriter< _TSkeleton > _TWriter;
+
+  auto filter = this->_CreateITK< _TWriter >( );
+  filter->SetInput( skeleton );
+  filter->SetFileName( this->m_Parameters.GetSaveFileName( "FileName" ) );
+  try
+  {
+    filter->Update( );
+  }
+  catch( itk::ExceptionObject& err )
+  {
+    this->_Error( err.GetDescription( ) );
+
+  } // yrt
+}
+
+// eof - $RCSfile$