]> git.saurik.com Git - wxWidgets.git/commitdiff
Added custom properties to style definitions and style sheets
authorJulian Smart <julian@anthemion.co.uk>
Tue, 24 Apr 2012 11:22:18 +0000 (11:22 +0000)
committerJulian Smart <julian@anthemion.co.uk>
Tue, 24 Apr 2012 11:22:18 +0000 (11:22 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@71276 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/richtext/richtextstyles.h
include/wx/richtext/richtextxml.h
interface/wx/richtext/richtextbuffer.h
interface/wx/richtext/richtextstyles.h
src/richtext/richtextstyles.cpp
src/richtext/richtextxml.cpp

index e639144f7c69e69d1522f4065761bbd4156b6eed..75efa9b1b049e030ea00241777ad89b7efaa90b1 100644 (file)
@@ -101,11 +101,27 @@ public:
     /// Gets the style combined with the base style
     virtual wxRichTextAttr GetStyleMergedWithBase(const wxRichTextStyleSheet* sheet) const;
 
+    /**
+        Sets the definition's properties.
+    */
+    wxRichTextProperties& GetProperties() { return m_properties; }
+
+    /**
+        Returns the definition's properties.
+    */
+    const wxRichTextProperties& GetProperties() const { return m_properties; }
+
+    /**
+        Returns the definition's properties.
+    */
+    void SetProperties(const wxRichTextProperties& props) { m_properties = props; }
+
 protected:
-    wxString        m_name;
-    wxString        m_baseStyle;
-    wxString        m_description;
-    wxRichTextAttr  m_style;
+    wxString                m_name;
+    wxString                m_baseStyle;
+    wxString                m_description;
+    wxRichTextAttr          m_style;
+    wxRichTextProperties    m_properties;
 };
 
 /*!
@@ -402,6 +418,21 @@ public:
     void SetDescription(const wxString& descr) { m_description = descr; }
     const wxString& GetDescription() const { return m_description; }
 
+    /**
+        Sets the definition's properties.
+    */
+    wxRichTextProperties& GetProperties() { return m_properties; }
+
+    /**
+        Returns the definition's properties.
+    */
+    const wxRichTextProperties& GetProperties() const { return m_properties; }
+
+    /**
+        Returns the definition's properties.
+    */
+    void SetProperties(const wxRichTextProperties& props) { m_properties = props; }
+
 /// Implementation
 
     /// Add a definition to one of the style lists
@@ -425,6 +456,7 @@ protected:
 
     wxRichTextStyleSheet*   m_previousSheet;
     wxRichTextStyleSheet*   m_nextSheet;
+    wxRichTextProperties    m_properties;
 };
 
 #if wxUSE_HTML
index d51d2043e5d407292932b25e9e0f5b8d0d91ee19..44a933cb48caa789508222166f5d5f82cca9c372 100644 (file)
@@ -35,7 +35,7 @@ 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
@@ -69,6 +69,7 @@ public:
     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);
@@ -76,7 +77,7 @@ public:
 
     /// 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; }
 
index 0e4c5b2d3a99998278eb66012668c3483f885849..3525641fd2644012cbd515c5f4f39e4a2e392542 100644 (file)
@@ -2377,7 +2377,7 @@ public:
     wxRichTextAttr& GetAttributes() { return m_attributes; }
 
     /**
-        Sets the object's properties.
+        Returns the object's properties.
     */
     wxRichTextProperties& GetProperties() { return m_properties; }
 
@@ -2387,7 +2387,7 @@ public:
     const wxRichTextProperties& GetProperties() const { return m_properties; }
 
     /**
-        Returns the object's properties.
+        Sets the object's properties.
     */
     void SetProperties(const wxRichTextProperties& props) { m_properties = props; }
 
index c1c636fef82f377ae2c36cb51d734057f9197c62..e89f8fa7f965500c0c10c1f7fff11d67e1edd82c 100644 (file)
@@ -179,6 +179,21 @@ public:
         Sets the attributes for this style.
     */
     void SetStyle(const wxTextAttr& style);
+
+    /**
+        Returns the definition's properties.
+    */
+    wxRichTextProperties& GetProperties();
+
+    /**
+        Returns the definition's properties.
+    */
+    const wxRichTextProperties& GetProperties() const;
+
+    /**
+        Sets the definition's properties.
+    */
+    void SetProperties(const wxRichTextProperties& props);
 };
 
 
@@ -662,5 +677,20 @@ public:
         Sets the style sheet's name.
     */
     void SetName(const wxString& name);
+
+    /**
+        Returns the sheet's properties.
+    */
+    wxRichTextProperties& GetProperties();
+
+    /**
+        Returns the sheet's properties.
+    */
+    const wxRichTextProperties& GetProperties() const;
+
+    /**
+        Sets the sheet's properties.
+    */
+    void SetProperties(const wxRichTextProperties& props);
 };
 
index 86e64ccfbb0b4e8a45e8d91a68c15d27dcb670de..cac6a8b1d62c9ae2b57580656ca8bc6745611375 100644 (file)
@@ -47,11 +47,12 @@ void wxRichTextStyleDefinition::Copy(const wxRichTextStyleDefinition& def)
     m_baseStyle = def.m_baseStyle;
     m_style = def.m_style;
     m_description = def.m_description;
+    m_properties = def.m_properties;
 }
 
 bool wxRichTextStyleDefinition::Eq(const wxRichTextStyleDefinition& def) const
 {
-    return (m_name == def.m_name && m_baseStyle == def.m_baseStyle && m_style == def.m_style);
+    return (m_name == def.m_name && m_baseStyle == def.m_baseStyle && m_style == def.m_style && m_properties == def.m_properties);
 }
 
 /// Gets the style combined with the base style
@@ -523,6 +524,7 @@ void wxRichTextStyleSheet::Copy(const wxRichTextStyleSheet& sheet)
 
     SetName(sheet.GetName());
     SetDescription(sheet.GetDescription());
+    m_properties = sheet.m_properties;
 }
 
 /// Equality
index f78883c8be6709b807e5ec747ab0f964d447c215..e798ee5935a5349537038e3f5fe5315fc3b9acf3 100644 (file)
@@ -207,6 +207,11 @@ bool wxRichTextXMLHandler::ImportXML(wxRichTextBuffer* buffer, wxRichTextObject*
 }
 
 bool wxRichTextXMLHandler::ImportProperties(wxRichTextObject* obj, wxXmlNode* node)
+{
+    return ImportProperties(obj->GetProperties(), node);
+}
+
+bool wxRichTextXMLHandler::ImportProperties(wxRichTextProperties& properties, wxXmlNode* node)
 {
     wxXmlNode* child = node->GetChildren();
     while (child)
@@ -225,7 +230,7 @@ bool wxRichTextXMLHandler::ImportProperties(wxRichTextObject* obj, wxXmlNode* no
                     wxVariant var = MakePropertyFromString(name, value, type);
                     if (!var.IsNull())
                     {
-                        obj->GetProperties().SetProperty(var);
+                        properties.SetProperty(var);
                     }
                 }
                 propertyChild = propertyChild->GetNext();
@@ -262,6 +267,8 @@ bool wxRichTextXMLHandler::ImportStyleDefinition(wxRichTextStyleSheet* sheet, wx
             child = child->GetNext();
         }
 
+        ImportProperties(def->GetProperties(), node);
+
         sheet->AddCharacterStyle(def);
     }
     else if (styleType == wxT("paragraphstyle"))
@@ -284,6 +291,8 @@ bool wxRichTextXMLHandler::ImportStyleDefinition(wxRichTextStyleSheet* sheet, wx
             child = child->GetNext();
         }
 
+        ImportProperties(def->GetProperties(), node);
+
         sheet->AddParagraphStyle(def);
     }
     else if (styleType == wxT("boxstyle"))
@@ -304,6 +313,8 @@ bool wxRichTextXMLHandler::ImportStyleDefinition(wxRichTextStyleSheet* sheet, wx
             child = child->GetNext();
         }
 
+        ImportProperties(def->GetProperties(), node);
+
         sheet->AddBoxStyle(def);
     }
     else if (styleType == wxT("liststyle"))
@@ -339,6 +350,8 @@ bool wxRichTextXMLHandler::ImportStyleDefinition(wxRichTextStyleSheet* sheet, wx
             child = child->GetNext();
         }
 
+        ImportProperties(def->GetProperties(), node);
+
         sheet->AddListStyle(def);
     }
 
@@ -835,6 +848,8 @@ bool wxRichTextXMLHandler::DoSaveFile(wxRichTextBuffer *buffer, wxOutputStream&
             wxRichTextBoxStyleDefinition* def = buffer->GetStyleSheet()->GetBoxStyle(i);
             ExportStyleDefinition(styleSheetNode, def);
         }
+
+        WriteProperties(styleSheetNode, buffer->GetStyleSheet()->GetProperties());
     }
     bool success = ExportXML(rootNode, *buffer);
 #if wxRICHTEXT_USE_OUTPUT_TIMINGS
@@ -910,6 +925,8 @@ bool wxRichTextXMLHandler::DoSaveFile(wxRichTextBuffer *buffer, wxOutputStream&
             ExportStyleDefinition(stream, def, level + 1);
         }
 
+        WriteProperties(stream, buffer->GetStyleSheet()->GetProperties(), level);
+
         OutputIndentation(stream, level);
         OutputString(stream, wxT("</stylesheet>"));
     }
@@ -1373,6 +1390,8 @@ bool wxRichTextXMLHandler::ExportStyleDefinition(wxXmlNode* parent, wxRichTextSt
         AddAttributes(styleNode, def->GetStyle(), true);
     }
 
+    WriteProperties(defNode, def->GetProperties());
+
     return true;
 }
 
@@ -2532,6 +2551,7 @@ bool wxRichTextParagraphLayoutBox::ImportFromXML(wxRichTextBuffer* buffer, wxXml
 
             child2 = child2->GetNext();
         }
+        handler->ImportProperties(sheet->GetProperties(), child);
 
         // Notify that styles have changed. If this is vetoed by the app,
         // the new sheet will be deleted. If it is not vetoed, the