summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEike Rathke <erack@redhat.com>2017-07-10 18:33:22 +0200
committerEike Rathke <erack@redhat.com>2017-07-10 21:15:28 +0200
commit741f61d0ca70069e875f6f57bf08d9aa282c0676 (patch)
treed28b7f48ede251aa9f422fc6acaf52403f947850
parentf6574be0e375e215e6f21830b9e09d77d01b5097 (diff)
Introduce IFormulaEditorHelper::getCompiler()
Implemented at rptui::FormulaDialog as nullptr and at ScFormulaDlg as ScCompiler* Change-Id: I0edaca56f5d9e3505ed766d43bc9ee4af80f03ff
-rw-r--r--include/formula/IFunctionDescription.hxx3
-rw-r--r--reportdesign/source/ui/dlg/Formula.cxx6
-rw-r--r--reportdesign/source/ui/inc/Formula.hxx1
-rw-r--r--sc/source/ui/formdlg/formula.cxx7
-rw-r--r--sc/source/ui/inc/formula.hxx6
5 files changed, 21 insertions, 2 deletions
diff --git a/include/formula/IFunctionDescription.hxx b/include/formula/IFunctionDescription.hxx
index 40820ebbe040..3a310d704563 100644
--- a/include/formula/IFunctionDescription.hxx
+++ b/include/formula/IFunctionDescription.hxx
@@ -42,6 +42,7 @@ namespace formula
class IFunctionDescription;
class FormEditData;
class FormulaTokenArray;
+ class FormulaCompiler;
class SAL_NO_VTABLE IFunctionManager
{
@@ -133,6 +134,8 @@ namespace formula
virtual FormEditData* getFormEditData() const = 0;
virtual bool calculateValue(const OUString& _sExpression, OUString& _rResult, bool bMatrixFormula) = 0;
+ virtual std::shared_ptr<FormulaCompiler> getCompiler() const = 0;
+
virtual void switchBack() = 0;
virtual void clear() = 0;
diff --git a/reportdesign/source/ui/dlg/Formula.cxx b/reportdesign/source/ui/dlg/Formula.cxx
index 480f017e7ac1..826ad3253ca6 100644
--- a/reportdesign/source/ui/dlg/Formula.cxx
+++ b/reportdesign/source/ui/dlg/Formula.cxx
@@ -112,6 +112,12 @@ bool FormulaDialog::calculateValue( const OUString& rStrExp, OUString& rStrResul
rStrResult = rStrExp;
return false;
}
+
+std::shared_ptr<formula::FormulaCompiler> FormulaDialog::getCompiler() const
+{
+ return nullptr;
+}
+
void FormulaDialog::doClose(bool _bOk)
{
EndDialog(_bOk ? RET_OK : RET_CANCEL);
diff --git a/reportdesign/source/ui/inc/Formula.hxx b/reportdesign/source/ui/inc/Formula.hxx
index 77153a0db40d..ceba75141964 100644
--- a/reportdesign/source/ui/inc/Formula.hxx
+++ b/reportdesign/source/ui/inc/Formula.hxx
@@ -74,6 +74,7 @@ public:
virtual void notifyChange() override;
virtual void fill() override;
virtual bool calculateValue(const OUString& _sExpression, OUString& _rResult, bool bMatrixFormula) override;
+ virtual std::shared_ptr<formula::FormulaCompiler> getCompiler() const;
virtual void doClose(bool _bOk) override;
virtual void insertEntryToLRUList(const formula::IFunctionDescription* pDesc) override;
virtual void showReference(const OUString& _sFormula) override;
diff --git a/sc/source/ui/formdlg/formula.cxx b/sc/source/ui/formdlg/formula.cxx
index ac8b3369fe4a..547ee391919c 100644
--- a/sc/source/ui/formdlg/formula.cxx
+++ b/sc/source/ui/formdlg/formula.cxx
@@ -373,6 +373,13 @@ bool ScFormulaDlg::calculateValue( const OUString& rStrExp, OUString& rStrResult
return true;
}
+std::shared_ptr<formula::FormulaCompiler> ScFormulaDlg::getCompiler() const
+{
+ if (!m_xCompiler)
+ m_xCompiler.reset( new ScCompiler( m_pDoc, m_CursorPos, m_pDoc->GetGrammar()));
+ return m_xCompiler;
+}
+
// virtual methods of ScAnyRefDlg:
void ScFormulaDlg::RefInputStart( formula::RefEdit* pEdit, formula::RefButton* pButton )
{
diff --git a/sc/source/ui/inc/formula.hxx b/sc/source/ui/inc/formula.hxx
index 05a0bf99c422..71cdd4246c19 100644
--- a/sc/source/ui/inc/formula.hxx
+++ b/sc/source/ui/inc/formula.hxx
@@ -47,8 +47,9 @@ class ScFormulaDlg : public formula::FormulaDlg,
css::uno::Reference< css::sheet::XFormulaParser> m_xParser;
css::uno::Reference< css::sheet::XFormulaOpCodeMapper> m_xOpCodeMapper;
- ScDocument* m_pDoc;
- ScAddress m_CursorPos;
+ ScDocument* m_pDoc;
+ ScAddress m_CursorPos;
+ mutable std::shared_ptr<ScCompiler> m_xCompiler;
public:
ScFormulaDlg( SfxBindings* pB, SfxChildWindow* pCW,
@@ -60,6 +61,7 @@ public:
virtual void notifyChange() override;
virtual void fill() override;
virtual bool calculateValue(const OUString& _sExpression, OUString& _rResult, bool bMatrixFormula) override;
+ virtual std::shared_ptr<formula::FormulaCompiler> getCompiler() const;
virtual void doClose(bool _bOk) override;
virtual void insertEntryToLRUList(const formula::IFunctionDescription* pDesc) override;
virtual void showReference(const OUString& _sFormula) override;