--- /dev/null
+#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$