00001 /*========================================================================= 00002 00003 Program: ParaView 00004 Module: $RCSfile: vtkPVXMLPackageParser.h,v $ 00005 00006 Copyright (c) Kitware, Inc. 00007 All rights reserved. 00008 See Copyright.txt or http://www.paraview.org/HTML/Copyright.html for details. 00009 00010 This software is distributed WITHOUT ANY WARRANTY; without even 00011 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 00012 PURPOSE. See the above copyright notice for more information. 00013 00014 =========================================================================*/ 00022 #ifndef __vtkPVXMLPackageParser_h 00023 #define __vtkPVXMLPackageParser_h 00024 #include "vtkPVXMLParser.h" 00025 00026 //BTX 00027 template <class key, class data> 00028 class vtkArrayMap; 00029 //ETX 00030 00031 class vtkPVSource; 00032 class vtkPVWindow; 00033 class vtkPVWidget; 00034 00035 class VTK_EXPORT vtkPVXMLPackageParser : public vtkPVXMLParser 00036 { 00037 public: 00038 vtkTypeRevisionMacro(vtkPVXMLPackageParser,vtkPVXMLParser); 00039 void PrintSelf(ostream& os, vtkIndent indent); 00040 static vtkPVXMLPackageParser* New(); 00041 00044 void StoreConfiguration(vtkPVWindow* window); 00045 00046 protected: 00047 vtkPVXMLPackageParser(); 00048 ~vtkPVXMLPackageParser(); 00049 00050 // Get the vtkPVWidget corresponding to the given vtkPVXMLElement. 00051 vtkPVWidget* GetPVWidget(vtkPVXMLElement* element, vtkPVSource* pvm, int store); 00052 00053 // Get the vtkPVWindow currently being stored. 00054 vtkPVWindow* GetPVWindow(); 00055 00056 void ProcessConfiguration(); 00057 void CreateReaderModule(vtkPVXMLElement* me); 00058 void CreateSourceModule(vtkPVXMLElement* me); 00059 void CreateFilterModule(vtkPVXMLElement* me); 00060 void CreateManipulator(vtkPVXMLElement* ma); 00061 void CreateWriter(vtkPVXMLElement* ma); 00062 int CreateModule(vtkPVXMLElement* me, vtkPVSource* pvm); 00063 int LoadPackageLibrary(vtkPVXMLElement* le); 00064 int LoadServerManagerFile(vtkPVXMLElement* le); 00065 int ParseVTKFilter(vtkPVXMLElement* filterElement, 00066 vtkPVSource* pvm); 00067 00068 //BTX 00069 typedef vtkArrayMap<vtkPVXMLElement*, vtkPVWidget*> InternalWidgetMap; 00070 //ETX 00071 00072 // Map of XML element representation to widget. 00073 InternalWidgetMap* WidgetMap; 00074 00075 // The window into which the modules will be stored. 00076 vtkPVWindow* Window; 00077 00078 //BTX 00079 friend class vtkPVXMLElement; 00080 friend class vtkPVWidget; 00081 //ETX 00082 00083 private: 00084 // Used by GetPVWidget. Do not call directly. 00085 vtkPVWidget* CreatePVWidget(vtkPVXMLElement* element); 00086 00087 private: 00088 vtkPVXMLPackageParser(const vtkPVXMLPackageParser&); // Not implemented. 00089 void operator=(const vtkPVXMLPackageParser&); // Not implemented. 00090 }; 00091 00092 #endif