/////////////////////////////////////////////////////////////////////////////
-// Name: wx/richtext/richeditxml.h
+// Name: wx/richtext/richtextxml.h
// Purpose: XML and HTML I/O for wxRichTextCtrl
// Author: Julian Smart
// Modified by:
// Created: 2005-09-30
-// RCS-ID: $Id$
// Copyright: (c) Julian Smart
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
* 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 GetNodeContent(wxXmlNode *node);
wxString GetParamValue(wxXmlNode *node, const wxString& param);
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
wxMBConv* m_convMem;
wxMBConv* m_convFile;
#endif
+
+ static wxStringToStringHashMap sm_nodeNameToClassMap;
};
#endif