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.va...@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.va...@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" && _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits