officecfg/registry/data/org/openoffice/Office/UI/CalcCommands.xcu | 2 sc/source/ui/view/drawvie4.cxx | 90 ++++++++-- sc/uiconfig/scalc/menubar/menubar.xml | 2 xmloff/source/chart/SchXMLPlotAreaContext.cxx | 20 +- xmloff/source/chart/SchXMLPlotAreaContext.hxx | 4 xmloff/source/chart/SchXMLSeries2Context.cxx | 6 6 files changed, 94 insertions(+), 30 deletions(-)
New commits: commit 094bab7f9097fba62800d3dd578bd42640d8c6e2 Author: Markus Mohrhard <[email protected]> Date: Mon Mar 18 01:57:03 2013 +0100 we need to register data sequences during import, fdo#52159 Change-Id: I203be719a6ee19c87ed232218f7700d875c2871f diff --git a/xmloff/source/chart/SchXMLPlotAreaContext.cxx b/xmloff/source/chart/SchXMLPlotAreaContext.cxx index 9d3c474..a6ca2b5 100644 --- a/xmloff/source/chart/SchXMLPlotAreaContext.cxx +++ b/xmloff/source/chart/SchXMLPlotAreaContext.cxx @@ -958,7 +958,8 @@ void SchXMLStockContext::StartElement( const uno::Reference< xml::sax::XAttribut static void lcl_setErrorBarSequence ( const uno::Reference< chart2::XChartDocument > &xDoc, const uno::Reference< beans::XPropertySet > &xBarProp, const rtl::OUString &aXMLRange, - bool bPositiveValue, bool bYError ) + bool bPositiveValue, bool bYError, + tSchXMLLSequencesPerIndex& rSequences) { uno::Reference< com::sun::star::chart2::data::XDataProvider > xDataProvider(xDoc->getDataProvider()); uno::Reference< com::sun::star::chart2::data::XDataSource > xDataSource( xBarProp, uno::UNO_QUERY ); @@ -999,6 +1000,9 @@ static void lcl_setErrorBarSequence ( const uno::Reference< chart2::XChartDocume Reference< chart2::data::XLabeledDataSequence > xLabelSeq( chart2::data::LabeledDataSequence::create(xContext), uno::UNO_QUERY_THROW ); + rSequences.insert( tSchXMLLSequencesPerIndex::value_type( + tSchXMLIndexWithPart( -2, SCH_XML_PART_ERROR_BARS ), xLabelSeq ) ); + xLabelSeq->setValues( xNewSequence ); uno::Sequence< Reference< chart2::data::XLabeledDataSequence > > aSequences( @@ -1021,7 +1025,8 @@ SchXMLStatisticsObjectContext::SchXMLStatisticsObjectContext( const ::com::sun::star::uno::Reference< ::com::sun::star::chart2::XDataSeries >& xSeries, ContextType eContextType, - const awt::Size & rChartSize ) : + const awt::Size & rChartSize, + tSchXMLLSequencesPerIndex & rLSequencesPerIndex) : SvXMLImportContext( rImport, nPrefix, rLocalName ), mrImportHelper( rImpHelper ), @@ -1029,7 +1034,8 @@ SchXMLStatisticsObjectContext::SchXMLStatisticsObjectContext( m_xSeries( xSeries ), meContextType( eContextType ), maChartSize( rChartSize ), - maSeriesStyleName( rSeriesStyleName) + maSeriesStyleName( rSeriesStyleName), + mrLSequencesPerIndex(rLSequencesPerIndex) {} SchXMLStatisticsObjectContext::~SchXMLStatisticsObjectContext() @@ -1217,10 +1223,10 @@ void SchXMLStatisticsObjectContext::StartElement( const uno::Reference< xml::sax uno::Reference< chart2::XChartDocument > xDoc(GetImport().GetModel(),uno::UNO_QUERY); if (!aPosRange.isEmpty()) - lcl_setErrorBarSequence(xDoc,xBarProp,aPosRange,true,bYError); + lcl_setErrorBarSequence(xDoc,xBarProp,aPosRange,true,bYError, mrLSequencesPerIndex); if (!aNegRange.isEmpty()) - lcl_setErrorBarSequence(xDoc,xBarProp,aNegRange,false,bYError); + lcl_setErrorBarSequence(xDoc,xBarProp,aNegRange,false,bYError, mrLSequencesPerIndex); if ( !bYError ) { diff --git a/xmloff/source/chart/SchXMLPlotAreaContext.hxx b/xmloff/source/chart/SchXMLPlotAreaContext.hxx index 8ed329a..3f4d133 100644 --- a/xmloff/source/chart/SchXMLPlotAreaContext.hxx +++ b/xmloff/source/chart/SchXMLPlotAreaContext.hxx @@ -265,7 +265,8 @@ public: const ::com::sun::star::uno::Reference< ::com::sun::star::chart2::XDataSeries >& xSeries, ContextType eContextType, - const ::com::sun::star::awt::Size & rChartSize ); + const ::com::sun::star::awt::Size & rChartSize, + tSchXMLLSequencesPerIndex & rLSequencesPerIndex ); virtual ~SchXMLStatisticsObjectContext(); @@ -283,6 +284,7 @@ private: ContextType meContextType; ::com::sun::star::awt::Size maChartSize; rtl::OUString maSeriesStyleName; + tSchXMLLSequencesPerIndex& mrLSequencesPerIndex; }; // ---------------------------------------- diff --git a/xmloff/source/chart/SchXMLSeries2Context.cxx b/xmloff/source/chart/SchXMLSeries2Context.cxx index 07dd9e2..222a365 100644 --- a/xmloff/source/chart/SchXMLSeries2Context.cxx +++ b/xmloff/source/chart/SchXMLSeries2Context.cxx @@ -648,7 +648,7 @@ SvXMLImportContext* SchXMLSeries2Context::CreateChildContext( nPrefix, rLocalName, msAutoStyleName, mrStyleList, m_xSeries, SchXMLStatisticsObjectContext::CONTEXT_TYPE_MEAN_VALUE_LINE, - maChartSize ); + maChartSize, mrLSequencesPerIndex ); break; case XML_TOK_SERIES_REGRESSION_CURVE: pContext = new SchXMLStatisticsObjectContext( @@ -656,7 +656,7 @@ SvXMLImportContext* SchXMLSeries2Context::CreateChildContext( nPrefix, rLocalName, msAutoStyleName, mrStyleList, m_xSeries, SchXMLStatisticsObjectContext::CONTEXT_TYPE_REGRESSION_CURVE, - maChartSize ); + maChartSize, mrLSequencesPerIndex ); break; case XML_TOK_SERIES_ERROR_INDICATOR: pContext = new SchXMLStatisticsObjectContext( @@ -664,7 +664,7 @@ SvXMLImportContext* SchXMLSeries2Context::CreateChildContext( nPrefix, rLocalName, msAutoStyleName, mrStyleList, m_xSeries, SchXMLStatisticsObjectContext::CONTEXT_TYPE_ERROR_INDICATOR, - maChartSize ); + maChartSize, mrLSequencesPerIndex ); break; case XML_TOK_SERIES_DATA_POINT: commit e15d8ef44fbf9fc23da58648e4d288782a81c7c1 Author: Markus Mohrhard <[email protected]> Date: Sun Mar 17 02:53:02 2013 +0100 error bar range is also part of chart range, related fdo#52159 Change-Id: I344448db559de8435dcc26e2be4597c385724a7b diff --git a/sc/source/ui/view/drawvie4.cxx b/sc/source/ui/view/drawvie4.cxx index 82e70f7..b30d3d1 100644 --- a/sc/source/ui/view/drawvie4.cxx +++ b/sc/source/ui/view/drawvie4.cxx @@ -44,6 +44,9 @@ #include <com/sun/star/embed/Aspects.hpp> #include <com/sun/star/embed/XEmbeddedObject.hpp> #include <com/sun/star/embed/XComponentSupplier.hpp> +#include <com/sun/star/chart2/XChartTypeContainer.hpp> +#include <com/sun/star/chart2/XCoordinateSystemContainer.hpp> +#include <com/sun/star/chart2/XDataSeriesContainer.hpp> using namespace com::sun::star; @@ -141,6 +144,70 @@ sal_Bool ScDrawView::BeginDrag( Window* pWindow, const Point& rStartPos ) namespace { +void getRangeFromDataSource( uno::Reference< chart2::data::XDataSource > xDataSource, std::vector<OUString>& rRangeRep) +{ + uno::Sequence<uno::Reference<chart2::data::XLabeledDataSequence> > xSeqs = xDataSource->getDataSequences(); + for (sal_Int32 i = 0, n = xSeqs.getLength(); i < n; ++i) + { + uno::Reference<chart2::data::XLabeledDataSequence> xLS = xSeqs[i]; + uno::Reference<chart2::data::XDataSequence> xSeq = xLS->getValues(); + if (xSeq.is()) + { + OUString aRep = xSeq->getSourceRangeRepresentation(); + rRangeRep.push_back(aRep); + } + xSeq = xLS->getLabel(); + if (xSeq.is()) + { + OUString aRep = xSeq->getSourceRangeRepresentation(); + rRangeRep.push_back(aRep); + } + } +} + + +void getRangeFromErrorBar(const uno::Reference< chart2::XChartDocument > xChartDoc, std::vector<OUString>& rRangeRep) +{ + uno::Reference <chart2::XDiagram > xDiagram = xChartDoc->getFirstDiagram(); + if(!xDiagram.is()) + return; + + uno::Reference< chart2::XCoordinateSystemContainer > xCooSysContainer( xDiagram, uno::UNO_QUERY); + if(!xCooSysContainer.is()) + return; + + uno::Sequence< uno::Reference< chart2::XCoordinateSystem > > xCooSysSequence( xCooSysContainer->getCoordinateSystems()); + for(sal_Int32 i = 0; i < xCooSysSequence.getLength(); ++i) + { + uno::Reference< chart2::XChartTypeContainer > xChartTypeContainer( xCooSysSequence[i], uno::UNO_QUERY); + if(!xChartTypeContainer.is()) + continue; + + uno::Sequence< uno::Reference< chart2::XChartType > > xChartTypeSequence( xChartTypeContainer->getChartTypes() ); + for(sal_Int32 nChartType = 0; nChartType < xChartTypeSequence.getLength(); ++nChartType) + { + uno::Reference< chart2::XDataSeriesContainer > xDataSequenceContainer( xChartTypeSequence[nChartType], uno::UNO_QUERY); + if(!xDataSequenceContainer.is()) + continue; + + uno::Sequence< uno::Reference< chart2::XDataSeries > > xSeriesSequence( xDataSequenceContainer->getDataSeries() ); + for(sal_Int32 nDataSeries = 0; nDataSeries < xSeriesSequence.getLength(); ++nDataSeries) + { + uno::Reference< chart2::XDataSeries > xSeries = xSeriesSequence[nDataSeries]; + uno::Reference< beans::XPropertySet > xPropSet( xSeries, uno::UNO_QUERY); + uno::Reference< chart2::data::XDataSource > xErrorBarY; + xPropSet->getPropertyValue("ErrorBarY") >>= xErrorBarY; + if(xErrorBarY.is()) + getRangeFromDataSource(xErrorBarY, rRangeRep); + uno::Reference< chart2::data::XDataSource > xErrorBarX; + xPropSet->getPropertyValue("ErrorBarX") >>= xErrorBarX; + if(xErrorBarX.is()) + getRangeFromDataSource(xErrorBarX, rRangeRep); + } + } + } +} + void getRangeFromOle2Object(const SdrOle2Obj& rObj, std::vector<OUString>& rRangeRep) { if (!rObj.IsChart()) @@ -162,28 +229,14 @@ void getRangeFromOle2Object(const SdrOle2Obj& rObj, std::vector<OUString>& rRang if(xChartDoc->hasInternalDataProvider()) return; + getRangeFromErrorBar(xChartDoc, rRangeRep); + uno::Reference<chart2::data::XDataSource> xDataSource(xChartDoc, uno::UNO_QUERY); if (!xDataSource.is()) return; // Get all data sources used in this chart. - uno::Sequence<uno::Reference<chart2::data::XLabeledDataSequence> > xSeqs = xDataSource->getDataSequences(); - for (sal_Int32 i = 0, n = xSeqs.getLength(); i < n; ++i) - { - uno::Reference<chart2::data::XLabeledDataSequence> xLS = xSeqs[i]; - uno::Reference<chart2::data::XDataSequence> xSeq = xLS->getValues(); - if (xSeq.is()) - { - OUString aRep = xSeq->getSourceRangeRepresentation(); - rRangeRep.push_back(aRep); - } - xSeq = xLS->getLabel(); - if (xSeq.is()) - { - OUString aRep = xSeq->getSourceRangeRepresentation(); - rRangeRep.push_back(aRep); - } - } + getRangeFromDataSource(xDataSource, rRangeRep); } /** commit 7b12b4677f658fd2dc9ff40371823da59533fa45 Author: Markus Mohrhard <[email protected]> Date: Sun Mar 17 01:46:05 2013 +0100 for internal data providers this makes no sense Change-Id: Ic2651defd0ec8846dc0b0a81faee5dd6743310fb diff --git a/sc/source/ui/view/drawvie4.cxx b/sc/source/ui/view/drawvie4.cxx index a6289d0..82e70f7 100644 --- a/sc/source/ui/view/drawvie4.cxx +++ b/sc/source/ui/view/drawvie4.cxx @@ -159,6 +159,9 @@ void getRangeFromOle2Object(const SdrOle2Obj& rObj, std::vector<OUString>& rRang if (!xChartDoc.is()) return; + if(xChartDoc->hasInternalDataProvider()) + return; + uno::Reference<chart2::data::XDataSource> xDataSource(xChartDoc, uno::UNO_QUERY); if (!xDataSource.is()) return; commit a6d12acda9bb24f2acca45e0bd1aea577e49fbbf Author: Markus Mohrhard <[email protected]> Date: Sat Mar 16 01:04:44 2013 +0100 use the right range representation, fdo#52159 Change-Id: I36ede89ccb8836708a4f87c4815bbe2fb6d6f3cf diff --git a/xmloff/source/chart/SchXMLPlotAreaContext.cxx b/xmloff/source/chart/SchXMLPlotAreaContext.cxx index 463308a..9d3c474 100644 --- a/xmloff/source/chart/SchXMLPlotAreaContext.cxx +++ b/xmloff/source/chart/SchXMLPlotAreaContext.cxx @@ -957,7 +957,7 @@ void SchXMLStockContext::StartElement( const uno::Reference< xml::sax::XAttribut static void lcl_setErrorBarSequence ( const uno::Reference< chart2::XChartDocument > &xDoc, const uno::Reference< beans::XPropertySet > &xBarProp, - const rtl::OUString &aRange, + const rtl::OUString &aXMLRange, bool bPositiveValue, bool bYError ) { uno::Reference< com::sun::star::chart2::data::XDataProvider > xDataProvider(xDoc->getDataProvider()); @@ -966,7 +966,7 @@ static void lcl_setErrorBarSequence ( const uno::Reference< chart2::XChartDocume assert( xDataSink.is() && xDataSource.is() && xDataProvider.is() ); - rtl::OUString aXMLRange(lcl_ConvertRange(aRange,xDoc)); + rtl::OUString aRange(lcl_ConvertRange(aXMLRange,xDoc)); uno::Reference< chart2::data::XDataSequence > xNewSequence( xDataProvider->createDataSequenceByRangeRepresentation( aRange )); commit 145ca863553e27e28f76e940071e713c539db0dd Author: Markus Mohrhard <[email protected]> Date: Fri Mar 15 05:29:39 2013 +0100 reorganize the menu a little bit Change-Id: I956abc2cfa680f18df5712a131a7930610f57931 diff --git a/sc/uiconfig/scalc/menubar/menubar.xml b/sc/uiconfig/scalc/menubar/menubar.xml index de494d5..e461fce 100644 --- a/sc/uiconfig/scalc/menubar/menubar.xml +++ b/sc/uiconfig/scalc/menubar/menubar.xml @@ -206,7 +206,6 @@ <menu:menuitem menu:id=".uno:InsertGraphic"/> </menu:menupopup> </menu:menu> - <menu:menuitem menu:id=".uno:InsertAVMedia"/> <menu:menu menu:id=".uno:ObjectMenu"> <menu:menupopup> <menu:menuitem menu:id=".uno:InsertObject"/> @@ -218,6 +217,7 @@ <menu:menuitem menu:id=".uno:InsertObjectChartFromFile"/> </menu:menupopup> </menu:menu> + <menu:menuitem menu:id=".uno:InsertAVMedia"/> <menu:menuitem menu:id=".uno:InsertObjectFloatingFrame"/> </menu:menupopup> </menu:menu> commit 9e7df9113496ee6e91d97999a1bc1c789c154467 Author: Markus Mohrhard <[email protected]> Date: Fri Mar 15 05:00:01 2013 +0100 better wording for the menu entry Change-Id: I7ddb4e3b4fc39b542e2ab54a188d0953a2b7ce8d diff --git a/officecfg/registry/data/org/openoffice/Office/UI/CalcCommands.xcu b/officecfg/registry/data/org/openoffice/Office/UI/CalcCommands.xcu index b03d7d4..0feec3b 100644 --- a/officecfg/registry/data/org/openoffice/Office/UI/CalcCommands.xcu +++ b/officecfg/registry/data/org/openoffice/Office/UI/CalcCommands.xcu @@ -382,7 +382,7 @@ </node> <node oor:name=".uno:InsertObjectChartFromFile" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">Load Chart From File</value> + <value xml:lang="en-US">Chart From File</value> </prop> </node> <node oor:name=".uno:StarChartDialog" oor:op="replace"> _______________________________________________ Libreoffice-commits mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
