1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110
|
/*=========================================================================
Program: ParaView
Module: pvstatetest.cxx
Copyright (c) Kitware, Inc.
All rights reserved.
See Copyright.txt or http://www.paraview.org/HTML/Copyright.html for details.
This software is distributed WITHOUT ANY WARRANTY; without even
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the above copyright notice for more information.
=========================================================================*/
#include "vtkInitializationHelper.h"
#include "vtkProcessModule.h"
#include "vtkPVOptions.h"
#include "vtkSMPropertyHelper.h"
#include "vtkSMProxyManager.h"
#include "vtkSMSession.h"
#include "vtkSMSessionProxyManager.h"
#include "vtkSMSourceProxy.h"
#include "vtkPVDataInformation.h"
#include "vtkPVXMLElement.h"
//----------------------------------------------------------------------------
int TestXMLSaveLoadState(int argc, char* argv[])
{
vtkPVOptions* options = vtkPVOptions::New();
vtkInitializationHelper::Initialize( argc, argv,
vtkProcessModule::PROCESS_CLIENT,
options );
//---------------------------------------------------------------------------
int return_value = EXIT_SUCCESS;
vtkSmartPointer<vtkPVXMLElement> xmlRootNodeOrigin;
vtkSmartPointer<vtkPVXMLElement> xmlRootNodeLoaded;
//---------------------------------------------------------------------------
vtkSMSession* session = vtkSMSession::New();
cout << "==== Starting ====" << endl;
vtkSMSessionProxyManager* pxm =
vtkSMProxyManager::GetProxyManager()->GetSessionProxyManager(session);
vtkSMProxy* proxy = pxm->NewProxy("sources", "SphereSource");
vtkSMPropertyHelper(proxy, "PhiResolution").Set(20);
vtkSMPropertyHelper(proxy, "ThetaResolution").Set(20);
proxy->UpdateVTKObjects();
vtkSMSourceProxy* shrink =
vtkSMSourceProxy::SafeDownCast(
pxm->NewProxy("filters", "ShrinkFilter"));
vtkSMPropertyHelper(shrink, "Input").Set(proxy);
shrink->UpdateVTKObjects();
shrink->UpdatePipeline();
//shrink->GetDataInformation(0)->Print(cout);
pxm->RegisterProxy("sources", "sphere", proxy);
pxm->RegisterProxy("filters", "shrink", shrink);
// Try to build XML state
xmlRootNodeOrigin.TakeReference(pxm->SaveXMLState());
xmlRootNodeOrigin->PrintXML();
cout << "==== End of State creation ===" << endl;
cout << "==== Clear proxyManager state ===" << endl;
pxm->UnRegisterProxies();;
proxy->Delete();
shrink->Delete();
cout << "==== Make sure that the state is empty ===" << endl;
xmlRootNodeLoaded.TakeReference(pxm->SaveXMLState());
//xmlRootNodeLoaded->PrintXML();
if( pxm->GetProxy("sources", "sphere") && pxm->GetProxy("filters", "shrink") )
{
cout << " - Error in clearing" << endl;
return_value = EXIT_FAILURE;
}
else
{
cout << " - Clearing done" << endl;
}
cout << "==== Loading previous state ====" << endl;
pxm->LoadXMLState(xmlRootNodeOrigin);
xmlRootNodeLoaded.TakeReference(pxm->SaveXMLState());
xmlRootNodeLoaded->PrintXML();
cout << "==== End of state loading ====" << endl;
//---------------------------------------------------------------------------
if( pxm->GetProxy("sources", "sphere") && pxm->GetProxy("filters", "shrink")
&& return_value == EXIT_SUCCESS )
{
cout << endl << " ### SUCESS: States are equals ###" << endl;
}
else
{
cout << endl << " ### FAILED: States are NOT equals ###" << endl;
return_value = EXIT_FAILURE;
}
session->Delete();
//---------------------------------------------------------------------------
vtkInitializationHelper::Finalize();
options->Delete();
return return_value;
}
|