[Libreoffice-commits] core.git: 2 commits - desktop/source include/LibreOfficeKit libreofficekit/qa

Mihai Varga mihai.varga at collabora.com
Fri Sep 4 02:23:16 PDT 2015


 desktop/source/lib/init.cxx               |   26 ++++++++++++++++++++++----
 include/LibreOfficeKit/LibreOfficeKit.h   |    2 +-
 include/LibreOfficeKit/LibreOfficeKit.hxx |    9 ++++++---
 libreofficekit/qa/unit/tiledrendering.cxx |    8 ++++++--
 4 files changed, 35 insertions(+), 10 deletions(-)

New commits:
commit d3c93279667badf0c0feb927e9c46af97a538d84
Author: Mihai Varga <mihai.varga at collabora.com>
Date:   Fri Sep 4 11:55:47 2015 +0300

    LOK: allow float numbers in json -> property value conversion
    
    Change-Id: I866a44fcb71044d27a9bf06e2f55ca2e4135c23b

diff --git a/desktop/source/lib/init.cxx b/desktop/source/lib/init.cxx
index 44a9e19..f15417c 100644
--- a/desktop/source/lib/init.cxx
+++ b/desktop/source/lib/init.cxx
@@ -772,6 +772,8 @@ static void jsonToPropertyValues(const char* pJSON, uno::Sequence<beans::Propert
                 aValue.Value <<= OUString::fromUtf8(rValue.c_str());
             else if (rType == "boolean")
                 aValue.Value <<= OString(rValue.c_str()).toBoolean();
+            else if (rType == "float")
+                aValue.Value <<= OString(rValue.c_str()).toFloat();
             else if (rType == "long")
                 aValue.Value <<= OString(rValue.c_str()).toInt32();
             else
commit 9640dcea46dd3201aa4c27f6a3918f7419288a2a
Author: Mihai Varga <mihai.varga at collabora.com>
Date:   Fri Sep 4 10:27:58 2015 +0300

    LOK: added a general getCommandValues method
    
    This method returns a JSON mapping of the posible values for the given
    command (e.g. .uno:StyleApply, etc).
    
    returns:
    {commandName: "cmdName", commandValues: {json_of_cmd_values}}
    
    Change-Id: Ic8f970d077af6be9bc226f72f725b6cdf2d4c160

diff --git a/desktop/source/lib/init.cxx b/desktop/source/lib/init.cxx
index 51302d1..44a9e19 100644
--- a/desktop/source/lib/init.cxx
+++ b/desktop/source/lib/init.cxx
@@ -235,7 +235,7 @@ static void doc_setGraphicSelection (LibreOfficeKitDocument* pThis,
                                   int nX,
                                   int nY);
 static void doc_resetSelection (LibreOfficeKitDocument* pThis);
-static char* doc_getStyles(LibreOfficeKitDocument* pThis);
+static char* doc_getCommandValues(LibreOfficeKitDocument* pThis, const char* pCommand);
 
 struct LibLODocument_Impl : public _LibreOfficeKitDocument
 {
@@ -270,7 +270,7 @@ struct LibLODocument_Impl : public _LibreOfficeKitDocument
             m_pDocumentClass->getTextSelection = doc_getTextSelection;
             m_pDocumentClass->setGraphicSelection = doc_setGraphicSelection;
             m_pDocumentClass->resetSelection = doc_resetSelection;
-            m_pDocumentClass->getStyles = doc_getStyles;
+            m_pDocumentClass->getCommandValues = doc_getCommandValues;
 
             gDocumentClass = m_pDocumentClass;
         }
@@ -868,15 +868,17 @@ static void doc_resetSelection(LibreOfficeKitDocument* pThis)
     pDoc->resetSelection();
 }
 
-static char* doc_getStyles(LibreOfficeKitDocument* pThis)
+static char* getStyles(LibreOfficeKitDocument* pThis, const char* pCommand)
 {
     LibLODocument_Impl* pDocument = static_cast<LibLODocument_Impl*>(pThis);
 
     boost::property_tree::ptree aTree;
+    aTree.put("commandName", pCommand);
     uno::Reference<css::style::XStyleFamiliesSupplier> xStyleFamiliesSupplier(pDocument->mxComponent, uno::UNO_QUERY);
     uno::Reference<container::XNameAccess> xStyleFamilies(xStyleFamiliesSupplier->getStyleFamilies(), uno::UNO_QUERY);
     uno::Sequence<OUString> aStyleFamilies = xStyleFamilies->getElementNames();
 
+    boost::property_tree::ptree aValues;
     for (sal_Int32 nStyleFam = 0; nStyleFam < aStyleFamilies.getLength(); ++nStyleFam)
     {
         boost::property_tree::ptree aChildren;
@@ -889,8 +891,9 @@ static char* doc_getStyles(LibreOfficeKitDocument* pThis)
             aChild.put("", aStyles[nInd]);
             aChildren.push_back(std::make_pair("", aChild));
         }
-        aTree.add_child(sStyleFam.toUtf8().getStr(), aChildren);
+        aValues.add_child(sStyleFam.toUtf8().getStr(), aChildren);
     }
+    aTree.add_child("commandValues", aValues);
     std::stringstream aStream;
     boost::property_tree::write_json(aStream, aTree);
     char* pJson = static_cast<char*>(malloc(aStream.str().size() + 1));
@@ -898,6 +901,19 @@ static char* doc_getStyles(LibreOfficeKitDocument* pThis)
     pJson[aStream.str().size()] = '\0';
     return pJson;
 }
+
+static char* doc_getCommandValues(LibreOfficeKitDocument* pThis, const char* pCommand)
+{
+    if (!strcmp(pCommand, ".uno:StyleApply"))
+    {
+        return getStyles(pThis, pCommand);
+    }
+    else {
+        gImpl->maLastExceptionMsg = "Unknown command, no values returned";
+        return NULL;
+    }
+}
+
 static char* lo_getError (LibreOfficeKit *pThis)
 {
     LibLibreOffice_Impl* pLib = static_cast<LibLibreOffice_Impl*>(pThis);
diff --git a/include/LibreOfficeKit/LibreOfficeKit.h b/include/LibreOfficeKit/LibreOfficeKit.h
index af7155c..8060f0e 100644
--- a/include/LibreOfficeKit/LibreOfficeKit.h
+++ b/include/LibreOfficeKit/LibreOfficeKit.h
@@ -161,7 +161,7 @@ struct _LibreOfficeKitDocumentClass
     void (*resetSelection) (LibreOfficeKitDocument* pThis);
 
     /// @see lok::Document:getStyles
-    char* (*getStyles) (LibreOfficeKitDocument* pThis);
+    char* (*getCommandValues) (LibreOfficeKitDocument* pThis, const char* pCommand);
 #endif // LOK_USE_UNSTABLE_API
 };
 
diff --git a/include/LibreOfficeKit/LibreOfficeKit.hxx b/include/LibreOfficeKit/LibreOfficeKit.hxx
index c526bda..4459994 100644
--- a/include/LibreOfficeKit/LibreOfficeKit.hxx
+++ b/include/LibreOfficeKit/LibreOfficeKit.hxx
@@ -248,11 +248,14 @@ public:
     }
 
     /**
-     * Returns a json map, {"familyName1" : ["list of style names in the family1"], etc.}
+     * Returns a json mapping of the possible values for the given command
+     * e.g. {commandName: ".uno:StyleApply", commandValues: {"familyName1" : ["list of style names in the family1"], etc.}}
+     * @param pCommand a uno command for which the possible values are requested
+     * @return {commandName: unoCmd, commandValues: {possible_values}}
      */
-    inline char* getStyles()
+    inline char* getCommandValues(const char* pCommand)
     {
-        return mpDoc->pClass->getStyles(mpDoc);
+        return mpDoc->pClass->getCommandValues(mpDoc, pCommand);
     }
 #endif // LOK_USE_UNSTABLE_API
 };
diff --git a/libreofficekit/qa/unit/tiledrendering.cxx b/libreofficekit/qa/unit/tiledrendering.cxx
index a4e5525..a2cbe6e 100644
--- a/libreofficekit/qa/unit/tiledrendering.cxx
+++ b/libreofficekit/qa/unit/tiledrendering.cxx
@@ -195,12 +195,16 @@ void TiledRenderingTest::testGetStyles( Office* pOffice )
     scoped_ptr< Document> pDocument( pOffice->documentLoad( sDocPath.c_str() ) );
 
     boost::property_tree::ptree aTree;
-    char* pJSON = pDocument->getStyles();
+    char* pJSON = pDocument->getCommandValues(".uno:StyleApply");
     std::stringstream aStream(pJSON);
     boost::property_tree::read_json(aStream, aTree);
     CPPUNIT_ASSERT( aTree.size() > 0 );
+    CPPUNIT_ASSERT( aTree.get_value<std::string>("commandName") == ".uno:StyleApply" );
 
-    for (const std::pair<std::string, boost::property_tree::ptree>& rPair : aTree)
+
+    boost::property_tree::ptree aValues = aTree.get_child("commandValues");
+    CPPUNIT_ASSERT( aValues.size() > 0 );
+    for (const std::pair<std::string, boost::property_tree::ptree>& rPair : aValues)
     {
         CPPUNIT_ASSERT( rPair.second.size() > 0);
         if (rPair.first != "CharacterStyles" &&


More information about the Libreoffice-commits mailing list