chart2/source/controller/inc/ChartController.hxx | 3 + chart2/source/controller/main/ChartController.cxx | 5 + chart2/source/controller/main/ChartController_Insert.cxx | 26 ++++++++++ chart2/source/controller/main/ChartController_Window.cxx | 19 +++++-- chart2/source/controller/main/ControllerCommandDispatch.cxx | 8 +++ chart2/source/model/main/DataTable.cxx | 6 +- officecfg/registry/data/org/openoffice/Office/UI/ChartCommands.xcu | 11 ++++ 7 files changed, 71 insertions(+), 7 deletions(-)
New commits: commit cdec7c46c8e231efe1022149cf2eb73cbb3bbede Author: Tomaž Vajngerl <tomaz.vajng...@collabora.co.uk> AuthorDate: Fri Jul 29 15:49:31 2022 +0200 Commit: Tomaž Vajngerl <qui...@gmail.com> CommitDate: Sat Aug 20 23:24:02 2022 +0200 chart2: DataTable set properties to default to false Change-Id: If8caf59629327b623b2630776b1e650cbe4fbed1 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/138259 Tested-by: Jenkins Reviewed-by: Tomaž Vajngerl <qui...@gmail.com> (cherry picked from commit 5861af0da5179689870d5b4f5ff56a5ea0a79901) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/138528 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoff...@gmail.com> diff --git a/chart2/source/model/main/DataTable.cxx b/chart2/source/model/main/DataTable.cxx index f9c8f36fac10..b592bb147f32 100644 --- a/chart2/source/model/main/DataTable.cxx +++ b/chart2/source/model/main/DataTable.cxx @@ -66,10 +66,10 @@ private: ::chart::CharacterProperties::AddDefaultsToMap(aMap); ::chart::PropertyHelper::setPropertyValueDefault(aMap, DataTableProperty_HorizontalBorder, - true); + false); ::chart::PropertyHelper::setPropertyValueDefault(aMap, DataTableProperty_VerticalBorder, - true); - ::chart::PropertyHelper::setPropertyValueDefault(aMap, DataTableProperty_Outilne, true); + false); + ::chart::PropertyHelper::setPropertyValueDefault(aMap, DataTableProperty_Outilne, false); ::chart::PropertyHelper::setPropertyValueDefault(aMap, DataTableProperty_Keys, false); ::chart::PropertyHelper::setPropertyValue( commit aed3b2e7ae5d055700d0d18ed3b9bc613a2fb74f Author: Tomaž Vajngerl <tomaz.vajng...@collabora.co.uk> AuthorDate: Fri Jul 1 23:03:53 2022 +0200 Commit: Tomaž Vajngerl <qui...@gmail.com> CommitDate: Sat Aug 20 23:23:54 2022 +0200 chart2: InsertDataTable and DeleteDataTable for context menu Change-Id: I8ef0698252209af01b0741a59dec70f845f0c965 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/138258 Tested-by: Tomaž Vajngerl <qui...@gmail.com> Reviewed-by: Tomaž Vajngerl <qui...@gmail.com> (cherry picked from commit 0c984c4dbe36a58859b09924e98fcf8ba8ed2d75) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/138527 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoff...@gmail.com> diff --git a/chart2/source/controller/inc/ChartController.hxx b/chart2/source/controller/inc/ChartController.hxx index 5e74cec917ce..d9691aa2e577 100644 --- a/chart2/source/controller/inc/ChartController.hxx +++ b/chart2/source/controller/inc/ChartController.hxx @@ -438,6 +438,9 @@ private: void executeDispatch_OpenLegendDialog(); void executeDispatch_InsertAxes(); void executeDispatch_InsertGrid(); + + void executeDispatch_InsertDataTable(); + void executeDispatch_DeleteDataTable(); void executeDispatch_OpenInsertDataTableDialog(); void executeDispatch_InsertMenu_DataLabels(); diff --git a/chart2/source/controller/main/ChartController.cxx b/chart2/source/controller/main/ChartController.cxx index a61d84af0e9f..2e7185fdbd68 100644 --- a/chart2/source/controller/main/ChartController.cxx +++ b/chart2/source/controller/main/ChartController.cxx @@ -1228,6 +1228,10 @@ void SAL_CALL ChartController::dispatch( this->executeDispatch_DeleteMajorGrid(); else if( aCommand == "DeleteMinorGrid" ) this->executeDispatch_DeleteMinorGrid(); + else if( aCommand == "InsertDataTable" ) + this->executeDispatch_InsertDataTable(); + else if( aCommand == "DeleteDataTable" ) + this->executeDispatch_DeleteDataTable(); //format objects else if( aCommand == "FormatSelection" ) this->executeDispatch_ObjectProperties(); @@ -1628,6 +1632,7 @@ const o3tl::sorted_vector< OUString >& ChartController::impl_getAvailableCommand "DeleteXErrorBars", "DeleteYErrorBars", "DeleteDataLabels", "DeleteDataLabel", "InsertMenuDataTable", + "InsertDataTable", "DeleteDataTable", //format objects "FormatSelection", "TransformDialog", "DiagramType", "View3D", diff --git a/chart2/source/controller/main/ChartController_Insert.cxx b/chart2/source/controller/main/ChartController_Insert.cxx index 6f3b4df600ea..40f0675d76af 100644 --- a/chart2/source/controller/main/ChartController_Insert.cxx +++ b/chart2/source/controller/main/ChartController_Insert.cxx @@ -225,6 +225,32 @@ void ChartController::executeDispatch_OpenInsertDataTableDialog() } } +void ChartController::executeDispatch_InsertDataTable() +{ + SolarMutexGuard aGuard; + uno::Reference<chart2::XDiagram> xDiagram = ChartModelHelper::findDiagram(getModel()); + auto xDataTable = xDiagram->getDataTable(); + if (!xDataTable.is()) + { + uno::Reference<chart2::XDataTable> xNewDataTable(new DataTable); + if (xNewDataTable.is()) + { + xDiagram->setDataTable(xNewDataTable); + } + } +} + +void ChartController::executeDispatch_DeleteDataTable() +{ + SolarMutexGuard aGuard; + uno::Reference<chart2::XDiagram> xDiagram = ChartModelHelper::findDiagram(getModel()); + auto xDataTable = xDiagram->getDataTable(); + if (xDataTable.is()) + { + xDiagram->setDataTable(uno::Reference<chart2::XDataTable>()); + } +} + void ChartController::executeDispatch_InsertTitles() { UndoGuard aUndoGuard( diff --git a/chart2/source/controller/main/ChartController_Window.cxx b/chart2/source/controller/main/ChartController_Window.cxx index 92a7f9f16851..cc8125057a09 100644 --- a/chart2/source/controller/main/ChartController_Window.cxx +++ b/chart2/source/controller/main/ChartController_Window.cxx @@ -1021,14 +1021,19 @@ void ChartController::execute_Command( const CommandEvent& rCEvt ) aMenuName = m_pDrawViewWrapper->IsTextEdit() ? std::u16string_view( u"drawtext" ) : std::u16string_view( u"draw" ); else { + ObjectType eObjectType = ObjectIdentifier::getObjectType( m_aSelection.getSelectedCID() ); + // todo: the context menu should be specified by an xml file in uiconfig if( xPopupMenu.is()) { sal_Int16 nUniqueId = 1; - lcl_insertMenuCommand( xPopupMenu, nUniqueId++, ".uno:Cut" ); - lcl_insertMenuCommand( xPopupMenu, nUniqueId++, ".uno:Copy" ); - lcl_insertMenuCommand( xPopupMenu, nUniqueId++, ".uno:Paste" ); - xPopupMenu->insertSeparator( -1 ); + if (eObjectType != OBJECTTYPE_DATA_TABLE) + { + lcl_insertMenuCommand( xPopupMenu, nUniqueId++, ".uno:Cut" ); + lcl_insertMenuCommand( xPopupMenu, nUniqueId++, ".uno:Copy" ); + lcl_insertMenuCommand( xPopupMenu, nUniqueId++, ".uno:Paste" ); + xPopupMenu->insertSeparator( -1 ); + } ObjectType eObjectType = ObjectIdentifier::getObjectType( m_aSelection.getSelectedCID() ); Reference< XDiagram > xDiagram = ChartModelHelper::findDiagram( getModel() ); @@ -1237,8 +1242,14 @@ void ChartController::execute_Command( const CommandEvent& rCEvt ) lcl_insertMenuCommand( xPopupMenu, nUniqueId++, ".uno:DeleteMajorGrid" ); if( bIsMinorGridVisible && !bIsSecondaryAxis ) lcl_insertMenuCommand( xPopupMenu, nUniqueId++, ".uno:DeleteMinorGrid" ); + if (bIsAxisVisible) + lcl_insertMenuCommand(xPopupMenu, nUniqueId++, ".uno:InsertDataTable"); } } + else if (eObjectType == OBJECTTYPE_DATA_TABLE) + { + lcl_insertMenuCommand(xPopupMenu, nUniqueId++, ".uno:DeleteDataTable"); + } if( eObjectType == OBJECTTYPE_DATA_STOCK_LOSS ) lcl_insertMenuCommand( xPopupMenu, nUniqueId++, ".uno:FormatStockGain" ); diff --git a/chart2/source/controller/main/ControllerCommandDispatch.cxx b/chart2/source/controller/main/ControllerCommandDispatch.cxx index 263f4551c82d..45a129c639ff 100644 --- a/chart2/source/controller/main/ControllerCommandDispatch.cxx +++ b/chart2/source/controller/main/ControllerCommandDispatch.cxx @@ -364,6 +364,8 @@ struct ModelState bool bSupportsStatistics; bool bSupportsAxes; + + bool bDataTable = false; }; ModelState::ModelState() : @@ -449,6 +451,8 @@ void ModelState::update( const Reference< frame::XModel > & xModel ) bHasLegend = LegendHelper::hasLegend( xDiagram ); bHasWall = DiagramHelper::isSupportingFloorAndWall( xDiagram ); bHasFloor = bHasWall && bIsThreeD; + + bDataTable = xDiagram.is() && xDiagram->getDataTable().is(); } bool ModelState::HasAnyAxis() const @@ -706,6 +710,10 @@ void ControllerCommandDispatch::updateCommandAvailability() m_aCommandAvailability[ ".uno:FormatMinorGrid" ] = bIsWritable; m_aCommandAvailability[ ".uno:InsertMinorGrid" ] = bIsWritable; m_aCommandAvailability[ ".uno:DeleteMinorGrid" ] = bIsWritable; + + // data table + m_aCommandAvailability[ ".uno:InsertDataTable" ] = bIsWritable && bModelStateIsValid && !m_apModelState->bDataTable; + m_aCommandAvailability[ ".uno:DeleteDataTable" ] = bIsWritable && bModelStateIsValid && m_apModelState->bDataTable; } bool ControllerCommandDispatch::commandAvailable( const OUString & rCommand ) diff --git a/officecfg/registry/data/org/openoffice/Office/UI/ChartCommands.xcu b/officecfg/registry/data/org/openoffice/Office/UI/ChartCommands.xcu index cb4a5dc728d0..453b96cf86c5 100644 --- a/officecfg/registry/data/org/openoffice/Office/UI/ChartCommands.xcu +++ b/officecfg/registry/data/org/openoffice/Office/UI/ChartCommands.xcu @@ -504,6 +504,17 @@ <value xml:lang="en-US">Format Single Data Label...</value> </prop> </node> + <!-- data table --> + <node oor:name=".uno:InsertDataTable" oor:op="replace"> + <prop oor:name="Label" oor:type="xs:string"> + <value xml:lang="en-US">Insert Data Table</value> + </prop> + </node> + <node oor:name=".uno:DeleteDataTable" oor:op="replace"> + <prop oor:name="Label" oor:type="xs:string"> + <value xml:lang="en-US">Delete Data Table</value> + </prop> + </node> <!-- data series and point --> <node oor:name=".uno:FormatDataSeries" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string">