diff options
author | Eike Rathke <erack@redhat.com> | 2017-07-10 18:33:22 +0200 |
---|---|---|
committer | Eike Rathke <erack@redhat.com> | 2017-07-10 21:15:28 +0200 |
commit | 741f61d0ca70069e875f6f57bf08d9aa282c0676 (patch) | |
tree | d28b7f48ede251aa9f422fc6acaf52403f947850 | |
parent | f6574be0e375e215e6f21830b9e09d77d01b5097 (diff) |
Introduce IFormulaEditorHelper::getCompiler()
Implemented at rptui::FormulaDialog as nullptr and at ScFormulaDlg as ScCompiler*
Change-Id: I0edaca56f5d9e3505ed766d43bc9ee4af80f03ff
-rw-r--r-- | include/formula/IFunctionDescription.hxx | 3 | ||||
-rw-r--r-- | reportdesign/source/ui/dlg/Formula.cxx | 6 | ||||
-rw-r--r-- | reportdesign/source/ui/inc/Formula.hxx | 1 | ||||
-rw-r--r-- | sc/source/ui/formdlg/formula.cxx | 7 | ||||
-rw-r--r-- | sc/source/ui/inc/formula.hxx | 6 |
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; |