From 0e2fea43480b5314d99afd6f2a560e93b759faf9 Mon Sep 17 00:00:00 2001 From: Rashesh Date: Tue, 20 Aug 2024 15:42:31 +0530 Subject: [PATCH] calc: feat: expose name-range functionality from core using unocommands - https://help.libreoffice.org/6.2/en-US/text/scalc/01/04070000.html - added new button in Data->Define Range Signed-off-by: Rashesh Change-Id: I986141e344aa4ff08f7c1092fa61630ac268eddf --- browser/images/dark/lc_definedbname.svg | 1 + browser/images/lc_definedbname.svg | 1 + .../src/control/Control.FormulaAutoCompletePopup.ts | 4 +++- browser/src/control/Control.NotebookbarCalc.js | 7 +++++++ browser/src/layer/tile/CanvasTileLayer.js | 13 ++++++++++--- browser/src/unocommands.js | 1 + 6 files changed, 23 insertions(+), 4 deletions(-) create mode 100644 browser/images/dark/lc_definedbname.svg create mode 100644 browser/images/lc_definedbname.svg diff --git a/browser/images/dark/lc_definedbname.svg b/browser/images/dark/lc_definedbname.svg new file mode 100644 index 000000000000..ad316e838b8a --- /dev/null +++ b/browser/images/dark/lc_definedbname.svg @@ -0,0 +1 @@ + diff --git a/browser/images/lc_definedbname.svg b/browser/images/lc_definedbname.svg new file mode 100644 index 000000000000..bfe04ea00d11 --- /dev/null +++ b/browser/images/lc_definedbname.svg @@ -0,0 +1 @@ + diff --git a/browser/src/control/Control.FormulaAutoCompletePopup.ts b/browser/src/control/Control.FormulaAutoCompletePopup.ts index e779bd566967..fe1263f45d91 100644 --- a/browser/src/control/Control.FormulaAutoCompletePopup.ts +++ b/browser/src/control/Control.FormulaAutoCompletePopup.ts @@ -67,8 +67,10 @@ class FormulaAutoCompletePopup extends L.Control.AutoCompletePopup { var currentText = this.map._docLayer._lastFormula; var chIndex = currentText.length - 1; var functionName = this.functionList[index].name; + var namedRange = this.functionList[index].namedRange; functionName = functionName.substring(chIndex); - this.map._textInput._sendText(functionName + '('); + if (namedRange) this.map._textInput._sendText(functionName); + else this.map._textInput._sendText(functionName + '('); this.closePopup(); } else if (eventType === 'keydown') { if (object.key !== 'Tab' && object.key !== 'Shift') { diff --git a/browser/src/control/Control.NotebookbarCalc.js b/browser/src/control/Control.NotebookbarCalc.js index a89bf281a592..a6ad2d95fde4 100644 --- a/browser/src/control/Control.NotebookbarCalc.js +++ b/browser/src/control/Control.NotebookbarCalc.js @@ -1802,6 +1802,13 @@ L.Control.NotebookbarCalc = L.Control.NotebookbarWriter.extend({ 'enabled': 'true', 'accessibility': { focusBack: true, combination: 'DS', de: null } }, + { + 'id': 'data-define-range', + 'type': 'bigtoolitem', + 'text': _UNO('.uno:DefineDBName', 'spreadsheet'), + 'command': '.uno:DefineDBName', + 'accessibility': { focusBack: true, combination: 'DR', de: null } + }, ]; return this.getTabPage('Data', content); diff --git a/browser/src/layer/tile/CanvasTileLayer.js b/browser/src/layer/tile/CanvasTileLayer.js index e2d2444661d7..709c3066613b 100644 --- a/browser/src/layer/tile/CanvasTileLayer.js +++ b/browser/src/layer/tile/CanvasTileLayer.js @@ -2067,9 +2067,16 @@ L.CanvasTileLayer = L.Layer.extend({ var suggestionArray = JSON.parse(textMsg); for (var i = 0; i < suggestionArray.length; i++) { var signature = suggestionArray[i].signature; - var name = signature.substring(0,signature.indexOf('(')); - var description = suggestionArray[i].description; - resultList.push({'name': name, 'description': description}); + var namedRange = suggestionArray[i].namedRange; + var name, description; + if (namedRange) { + name = signature; + description = _('Named Range'); + } else { + name = signature.substring(0,signature.indexOf('(')); + description = suggestionArray[i].description; + } + resultList.push({'name': name, 'description': description, 'namedRange': namedRange}); } return resultList; }, diff --git a/browser/src/unocommands.js b/browser/src/unocommands.js index 3b41ed2d8add..fd6b25537757 100644 --- a/browser/src/unocommands.js +++ b/browser/src/unocommands.js @@ -90,6 +90,7 @@ var unoCommandsArray = { 'DecrementSubLevels':{text:{menu:_('Demote Outline Level with Subpoints'),},}, 'DefaultBullet':{global:{context:_('Toggle Unordered List'),menu:_('~Unordered List'),},}, 'DefaultNumbering':{global:{context:_('Toggle Ordered List'),menu:_('~Ordered List'),},}, + 'DefineDBName':{spreadsheet:{menu:_('~Define Range...'),},}, 'DefineName':{spreadsheet:{menu:_('~Manage...'),},}, 'DefinePrintArea':{spreadsheet:{menu:_('~Define'),},}, 'Delete':{global:{menu:_('Delete C~ontents...'),},spreadsheet:{context:_('Cl~ear Contents...'),menu:_('Cle~ar Cells...'),},},