[Libreoffice-commits] core.git: Branch 'feature/gsoc-impresslayout' - officecfg/registry sd/source sd/xml test/user-template
Vishv Brahmbhatt
vishvbrahmbhatt19 at gmail.com
Fri Jul 5 08:28:48 PDT 2013
officecfg/registry/schema/org/openoffice/Office/Impress.xcs | 11 +--
sd/source/core/sdpage.cxx | 31 +++++-----
sd/xml/layoutlist.xml | 4 -
test/user-template/user/config/soffice.cfg/simpress/layoutlist.xml | 8 ++
4 files changed, 31 insertions(+), 23 deletions(-)
New commits:
commit d5a552ee01d491e85b76dbb9c373a019ce18a06a
Author: Vishv Brahmbhatt <vishvbrahmbhatt19 at gmail.com>
Date: Fri Jul 5 19:25:28 2013 +0530
Working version of XML parser from configuration file path
Added some changes in the "getRootElement" and new "layoutlist.xml" is added for "unit-test" module.
XML parser works perfectly in the installation,only the failure of "unit-test" is left to be solved.
Some refactoring related to "layoutlist.xml" will be updated soon.
Change-Id: If7ed3af40e9b6df26e20881728181eb6c82936d8
diff --git a/officecfg/registry/schema/org/openoffice/Office/Impress.xcs b/officecfg/registry/schema/org/openoffice/Office/Impress.xcs
index fcb0e74..61c7cab1 100644
--- a/officecfg/registry/schema/org/openoffice/Office/Impress.xcs
+++ b/officecfg/registry/schema/org/openoffice/Office/Impress.xcs
@@ -468,20 +468,19 @@
<label>List of files containing object effects</label>
</info>
<value oor:separator=";">vnd.sun.star.expand:$BRAND_BASE_DIR/share/config/soffice.cfg/simpress/effects.xml</value>
+ </prop>
<prop oor:name="LayoutListFiles" oor:type="oor:string-list" oor:nillable="false">
- <!-- OldPath: -->
- <!-- OldLocation: -->
- <!-- UIHints: List of files containing object effects -->
<info>
<desc>
- Contains a list of layout type.It contains
+ Contains a list of layout type.It contains
properties of presobj like their Position,
- Height and Width
+ Height and Width.Values are put through
+ macro expansion, so, vnd.sun.star.expand prefix
+ is allowed.
</desc>
<label>List of files containing list of layouts</label>
</info>
<value oor:separator=";">vnd.sun.star.expand:$BRAND_BASE_DIR/share/config/soffice.cfg/simpress/layoutlist.xml</value>
- </prop>
</prop>
<prop oor:name="PreviewNewEffects" oor:type="xs:boolean" oor:nillable="false">
<!-- OldPath: -->
diff --git a/sd/source/core/sdpage.cxx b/sd/source/core/sdpage.cxx
index 1bcda69..96961a0 100644
--- a/sd/source/core/sdpage.cxx
+++ b/sd/source/core/sdpage.cxx
@@ -66,6 +66,7 @@
#include <unotools/streamwrap.hxx>
#include <rtl/uri.hxx>
#include <unotools/ucbstreamhelper.hxx>
+#include <osl/file.h>
#include "../ui/inc/DrawDocShell.hxx"
#include "Outliner.hxx"
@@ -1192,12 +1193,11 @@ static const LayoutDescriptor& GetLayoutDescriptor( AutoLayout eLayout )
//to get the root element of the xml file
Reference<XElement> getRootElement()
{
- rtl::OUString filepath="/home/vishv/layoutlist.xml";
const Reference<css::uno::XComponentContext> xContext(comphelper_getProcessComponentContext());
Reference< XMultiServiceFactory > xServiceFactory(xContext->getServiceManager(), UNO_QUERY_THROW );
Reference< util::XMacroExpander > xMacroExpander =util::theMacroExpander::get(xContext);
Reference< XMultiServiceFactory > xConfigProvider =configuration::theDefaultProvider::get( xContext );
- // read path to transition effects files from config
+
Any propValue = uno::makeAny(
beans::PropertyValue(
"nodepath", -1,
@@ -1208,31 +1208,32 @@ Reference<XElement> getRootElement()
xConfigProvider->createInstanceWithArguments(
"com.sun.star.configuration.ConfigurationAccess",
Sequence<Any>( &propValue, 1 ) ), UNO_QUERY_THROW );
- uno::Sequence< OUString > aFiles;
+ Sequence< rtl::OUString > aFiles;
xNameAccess->getByName( "LayoutListFiles" ) >>= aFiles;
-
+ rtl::OUString aURL;
for( sal_Int32 i=0; i<aFiles.getLength(); ++i )
{
- OUString aURL = aFiles[i];
+ aURL = aFiles[i];
if( aURL.startsWith( EXPAND_PROTOCOL ) )
{
// cut protocol
- OUString aMacro( aURL.copy( sizeof ( EXPAND_PROTOCOL ) -1 ) );
+ rtl::OUString aMacro( aURL.copy( sizeof ( EXPAND_PROTOCOL ) -1 ) );
// decode uric class chars
aMacro = rtl::Uri::decode( aMacro, rtl_UriDecodeWithCharset, RTL_TEXTENCODING_UTF8 );
// expand macro string
aURL = xMacroExpander->expandMacros( aMacro );
}
- SvStream* pIStm = ::utl::UcbStreamHelper::CreateStream( aURL, STREAM_READ );
- ::utl::OInputStreamWrapper* isw=new ::utl::OInputStreamWrapper( pIStm);
- Reference<XInputStream> xIs(isw);
-
- rtl::OUString sServName = rtl::OUString::createFromAscii("com.sun.star.xml.dom.DocumentBuilder");
- Reference<XDocumentBuilder> xDb( xServiceFactory->createInstance(sServName), UNO_QUERY);
- const Reference<XDocument> xDom(xDb->parse(xIs), UNO_QUERY_THROW );
- const Reference<XElement> xRoot( xDom->getDocumentElement(),UNO_QUERY_THROW );
- return xRoot;//this loops seems to work only once,so temporary returning the root element
}
+ if( aURL.startsWith( "file://" ) )
+ {
+ rtl::OUString aSysPath;
+ if( osl_getSystemPathFromFileURL( aURL.pData, &aSysPath.pData ) == osl_File_E_None )
+ aURL = aSysPath;
+ }
+ const Reference<XDocumentBuilder> xDocBuilder(css::xml::dom::DocumentBuilder::create(comphelper::getComponentContext(xServiceFactory)));
+ const Reference<XDocument> xDoc = xDocBuilder->parseURI(aURL);
+ const Reference<XElement> xRoot = xDoc->getDocumentElement();
+ return xRoot;//this loops seems to work only once,so temporary returning the root element
}
//read the information from XML file(traversing from layout node)
diff --git a/sd/xml/layoutlist.xml b/sd/xml/layoutlist.xml
index 0b1e9d9..61b863d 100644
--- a/sd/xml/layoutlist.xml
+++ b/sd/xml/layoutlist.xml
@@ -1,8 +1,8 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version="1.0"?>
<!-- At present I am not sure about corect XML namespace,so once I am aware of it.I am ready to add it.
-->
<layout-list>
<layout type="AUTOLAYOUT_TITLE_CONTENT"><presobj kind="PRESOBJ_TITLE" layout-pos-x="1400" layout-pos-y="837" layout-size-height="4400" layout-size-width="25600"/><presobj kind="PRESOBJ_OUTLINE1" layout-pos-x="1400" layout-pos-y="4914" layout-size-height="25200" layout-size-width="12180"/></layout>
<layout type="AUTOLAYOUT_TITLE_2VTEXT"><presobj kind="PRESOBJ_TITLE" layout-pos-x="1400" layout-pos-y="837" layout-size-height="4400" layout-size-width="25600"/><presobj kind="PRESOBJ_OUTLINE1" layout-pos-x="1400" layout-pos-y="4914" layout-size-height="12297" layout-size-width="12180"/><presobj kind="PRESOBJ_OUTLINE2" layout-pos-x="14311" layout-pos-y="4914" layout-size-height="12297" layout-size-width="12180"/></layout>
<layout type="AUTOLAYOUT_TITLE_CONTENT_OVER_CONTENT"><presobj kind="PRESOBJ_TITLE" layout-pos-x="1400" layout-pos-y="837" layout-size-height="4400" layout-size-width="25600"/><presobj kind="PRESOBJ_OUTLINE1" layout-pos-x="1400" layout-pos-y="4914" layout-size-height="25200" layout-size-width="5809"/><presobj kind="PRESOBJ_OUTLINE2" layout-pos-x="1400" layout-pos-y="11274" layout-size-height="25200" layout-size-width="5809"/></layout>
-</layout-list>
+</layout-list>
\ No newline at end of file
diff --git a/test/user-template/user/config/soffice.cfg/simpress/layoutlist.xml b/test/user-template/user/config/soffice.cfg/simpress/layoutlist.xml
new file mode 100644
index 0000000..61b863d
--- /dev/null
+++ b/test/user-template/user/config/soffice.cfg/simpress/layoutlist.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<!-- At present I am not sure about corect XML namespace,so once I am aware of it.I am ready to add it.
+-->
+<layout-list>
+<layout type="AUTOLAYOUT_TITLE_CONTENT"><presobj kind="PRESOBJ_TITLE" layout-pos-x="1400" layout-pos-y="837" layout-size-height="4400" layout-size-width="25600"/><presobj kind="PRESOBJ_OUTLINE1" layout-pos-x="1400" layout-pos-y="4914" layout-size-height="25200" layout-size-width="12180"/></layout>
+<layout type="AUTOLAYOUT_TITLE_2VTEXT"><presobj kind="PRESOBJ_TITLE" layout-pos-x="1400" layout-pos-y="837" layout-size-height="4400" layout-size-width="25600"/><presobj kind="PRESOBJ_OUTLINE1" layout-pos-x="1400" layout-pos-y="4914" layout-size-height="12297" layout-size-width="12180"/><presobj kind="PRESOBJ_OUTLINE2" layout-pos-x="14311" layout-pos-y="4914" layout-size-height="12297" layout-size-width="12180"/></layout>
+<layout type="AUTOLAYOUT_TITLE_CONTENT_OVER_CONTENT"><presobj kind="PRESOBJ_TITLE" layout-pos-x="1400" layout-pos-y="837" layout-size-height="4400" layout-size-width="25600"/><presobj kind="PRESOBJ_OUTLINE1" layout-pos-x="1400" layout-pos-y="4914" layout-size-height="25200" layout-size-width="5809"/><presobj kind="PRESOBJ_OUTLINE2" layout-pos-x="1400" layout-pos-y="11274" layout-size-height="25200" layout-size-width="5809"/></layout>
+</layout-list>
\ No newline at end of file
More information about the Libreoffice-commits
mailing list