Applied patch [ 1339882 ] richtext misc cleanup
[wxWidgets.git] / include / wx / richtext / richtextxml.h
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$
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
21 #if wxUSE_RICHTEXT
22
23 /*!
24 * wxRichTextXMLHandler
25 */
26
27 class WXDLLIMPEXP_XML wxXmlNode;
28
29 class WXDLLIMPEXP_ADV wxRichTextXMLHandler: public wxRichTextFileHandler
30 {
31 DECLARE_CLASS(wxRichTextXMLHandler)
32 public:
33 wxRichTextXMLHandler(const wxString& name = wxT("XML"), const wxString& ext = wxT("xml"), int type = wxRICHTEXT_TYPE_XML)
34 : wxRichTextFileHandler(name, ext, type)
35 { }
36
37 #if wxUSE_STREAMS
38 virtual bool DoLoadFile(wxRichTextBuffer *buffer, wxInputStream& stream);
39 virtual bool DoSaveFile(wxRichTextBuffer *buffer, wxOutputStream& stream);
40
41 /// Recursively export an object
42 bool ExportXML(wxOutputStream& stream, wxMBConv* convMem, wxMBConv* convFile, wxRichTextObject& obj, int level);
43
44 /// Recursively import an object
45 bool ImportXML(wxRichTextBuffer* buffer, 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?
55 virtual bool CanSave() const { return true; }
56
57 /// Can we load using this handler?
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
70 };
71
72 /*!
73 * wxRichTextHTMLHandler
74 */
75
76 class WXDLLIMPEXP_ADV wxRichTextHTMLHandler: public wxRichTextFileHandler
77 {
78 DECLARE_CLASS(wxRichTextHTMLHandler)
79 public:
80 wxRichTextHTMLHandler(const wxString& name = wxT("HTML"), const wxString& ext = wxT("html"), int type = wxRICHTEXT_TYPE_HTML)
81 : wxRichTextFileHandler(name, ext, type)
82 { }
83
84 #if wxUSE_STREAMS
85 virtual bool DoLoadFile(wxRichTextBuffer *buffer, wxInputStream& stream);
86 virtual bool DoSaveFile(wxRichTextBuffer *buffer, wxOutputStream& stream);
87 #endif
88
89 /// Can we save using this handler?
90 virtual bool CanSave() const { return true; }
91
92 /// Can we load using this handler?
93 virtual bool CanLoad() const { return false; }
94
95 /// Can we handle this filename (if using files)? By default, checks the extension.
96 virtual bool CanHandle(const wxString& filename) const;
97
98 /// Output character formatting
99 virtual void OutputCharacterFormatting(const wxTextAttrEx& currentStyle, const wxTextAttrEx& thisStyle, wxOutputStream& stream, bool start);
100
101 /// Output paragraph formatting
102 virtual void OutputParagraphFormatting(const wxTextAttrEx& currentStyle, const wxTextAttrEx& thisStyle, wxOutputStream& stream, bool start);
103
104 protected:
105
106 };
107
108 #endif
109 // wxUSE_RICHTEXT
110
111 #endif
112 // _WX_RICHTEXTXML_H_