* Includes
*/
+#include "wx/hashmap.h"
#include "wx/richtext/richtextbuffer.h"
#include "wx/richtext/richtextstyles.h"
class WXDLLIMPEXP_RICHTEXT wxRichTextXMLHandler: public wxRichTextFileHandler
{
- DECLARE_CLASS(wxRichTextXMLHandler)
+ DECLARE_DYNAMIC_CLASS(wxRichTextXMLHandler)
public:
wxRichTextXMLHandler(const wxString& name = wxT("XML"), const wxString& ext = wxT("xml"), int type = wxRICHTEXT_TYPE_XML)
: wxRichTextFileHandler(name, ext, type)
{ Init(); }
-
+
void Init();
#if wxUSE_STREAMS
bool ImportXML(wxRichTextBuffer* buffer, wxRichTextObject* obj, wxXmlNode* node);
bool ImportStyleDefinition(wxRichTextStyleSheet* sheet, wxXmlNode* node);
bool ImportProperties(wxRichTextObject* obj, wxXmlNode* node);
+ bool ImportProperties(wxRichTextProperties& properties, wxXmlNode* node);
/// Import style parameters
bool ImportStyle(wxRichTextAttr& attr, wxXmlNode* node, bool isPara = false);
/// Creates an object given an XML element name
virtual wxRichTextObject* CreateObjectForXMLName(wxRichTextObject* parent, const wxString& name) const;
-
+
/// Can we save using this handler?
virtual bool CanSave() const { return true; }
wxString GetText(wxXmlNode *node, const wxString& param = wxEmptyString, bool translate = false);
static wxXmlNode* FindNode(wxXmlNode* node, const wxString& name);
+ /**
+ Call with XML node name, C++ class name so that wxRTC can read in the node.
+ If you add a custom object, call this.
+ */
+ static void RegisterNodeName(const wxString& nodeName, const wxString& className) { sm_nodeNameToClassMap[nodeName] = className; }
+
+ /**
+ Cleans up the mapping between node name and C++ class.
+ */
+ static void ClearNodeToClassMap() { sm_nodeNameToClassMap.clear(); }
+
protected:
#if wxUSE_STREAMS
virtual bool DoLoadFile(wxRichTextBuffer *buffer, wxInputStream& stream);
wxMBConv* m_convMem;
wxMBConv* m_convFile;
#endif
+
+ static wxStringToStringHashMap sm_nodeNameToClassMap;
};
#endif