1 ///////////////////////////////////////////////////////////////////////////// 2 // Name: wx/richtext/richeditxml.h 3 // Purpose: XML and HTML I/O for wxRichTextCtrl 4 // Author: Julian Smart 5 // Modified by: 6 // Created: 2005-09-30 7 // RCS-ID: $Id: richtextxml.h 53135 2008-04-12 02:31:04Z VZ $ 8 // Copyright: (c) Julian Smart 9 // Licence: wxWindows licence 10 ///////////////////////////////////////////////////////////////////////////// 11 12 #ifndef _WX_RICHTEXTXML_H_ 13 #define _WX_RICHTEXTXML_H_ 14 15 /*! 16 * Includes 17 */ 18 19 #include "wx/richtext/richtextbuffer.h" 20 #include "wx/richtext/richtextstyles.h" 21 22 #if wxUSE_RICHTEXT && wxUSE_XML 23 24 /*! 25 * wxRichTextXMLHandler 26 */ 27 28 class WXDLLIMPEXP_FWD_XML wxXmlNode; 29 30 class WXDLLIMPEXP_RICHTEXT wxRichTextXMLHandler: public wxRichTextFileHandler 31 { DECLARE_CLASS(wxRichTextXMLHandler)32 DECLARE_CLASS(wxRichTextXMLHandler) 33 public: 34 wxRichTextXMLHandler(const wxString& name = wxT("XML"), const wxString& ext = wxT("xml"), int type = wxRICHTEXT_TYPE_XML) 35 : wxRichTextFileHandler(name, ext, type) 36 { } 37 38 #if wxUSE_STREAMS 39 /// Recursively export an object 40 bool ExportXML(wxOutputStream& stream, wxMBConv* convMem, wxMBConv* convFile, wxRichTextObject& obj, int level); 41 bool ExportStyleDefinition(wxOutputStream& stream, wxMBConv* convMem, wxMBConv* convFile, wxRichTextStyleDefinition* def, int level); 42 43 /// Recursively import an object 44 bool ImportXML(wxRichTextBuffer* buffer, wxXmlNode* node); 45 bool ImportStyleDefinition(wxRichTextStyleSheet* sheet, wxXmlNode* node); 46 47 /// Create style parameters 48 wxString CreateStyle(const wxTextAttrEx& attr, bool isPara = false); 49 50 /// Get style parameters 51 bool GetStyle(wxTextAttrEx& attr, wxXmlNode* node, bool isPara = false); 52 #endif 53 54 /// Can we save using this handler? CanSave()55 virtual bool CanSave() const { return true; } 56 57 /// Can we load using this handler? CanLoad()58 virtual bool CanLoad() const { return true; } 59 60 // Implementation 61 62 bool HasParam(wxXmlNode* node, const wxString& param); 63 wxXmlNode *GetParamNode(wxXmlNode* node, const wxString& param); 64 wxString GetNodeContent(wxXmlNode *node); 65 wxString GetParamValue(wxXmlNode *node, const wxString& param); 66 wxString GetText(wxXmlNode *node, const wxString& param = wxEmptyString, bool translate = false); 67 68 protected: 69 #if wxUSE_STREAMS 70 virtual bool DoLoadFile(wxRichTextBuffer *buffer, wxInputStream& stream); 71 virtual bool DoSaveFile(wxRichTextBuffer *buffer, wxOutputStream& stream); 72 #endif 73 }; 74 75 #endif 76 // wxUSE_RICHTEXT && wxUSE_XML 77 78 #endif 79 // _WX_RICHTEXTXML_H_ 80