Kaydet (Commit) 741f61d0 authored tarafından Eike Rathke's avatar Eike Rathke

Introduce IFormulaEditorHelper::getCompiler()

Implemented at rptui::FormulaDialog as nullptr and at ScFormulaDlg as ScCompiler*

Change-Id: I0edaca56f5d9e3505ed766d43bc9ee4af80f03ff
üst f6574be0
...@@ -42,6 +42,7 @@ namespace formula ...@@ -42,6 +42,7 @@ namespace formula
class IFunctionDescription; class IFunctionDescription;
class FormEditData; class FormEditData;
class FormulaTokenArray; class FormulaTokenArray;
class FormulaCompiler;
class SAL_NO_VTABLE IFunctionManager class SAL_NO_VTABLE IFunctionManager
{ {
...@@ -133,6 +134,8 @@ namespace formula ...@@ -133,6 +134,8 @@ namespace formula
virtual FormEditData* getFormEditData() const = 0; virtual FormEditData* getFormEditData() const = 0;
virtual bool calculateValue(const OUString& _sExpression, OUString& _rResult, bool bMatrixFormula) = 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 switchBack() = 0;
virtual void clear() = 0; virtual void clear() = 0;
......
...@@ -112,6 +112,12 @@ bool FormulaDialog::calculateValue( const OUString& rStrExp, OUString& rStrResul ...@@ -112,6 +112,12 @@ bool FormulaDialog::calculateValue( const OUString& rStrExp, OUString& rStrResul
rStrResult = rStrExp; rStrResult = rStrExp;
return false; return false;
} }
std::shared_ptr<formula::FormulaCompiler> FormulaDialog::getCompiler() const
{
return nullptr;
}
void FormulaDialog::doClose(bool _bOk) void FormulaDialog::doClose(bool _bOk)
{ {
EndDialog(_bOk ? RET_OK : RET_CANCEL); EndDialog(_bOk ? RET_OK : RET_CANCEL);
......
...@@ -74,6 +74,7 @@ public: ...@@ -74,6 +74,7 @@ public:
virtual void notifyChange() override; virtual void notifyChange() override;
virtual void fill() override; virtual void fill() override;
virtual bool calculateValue(const OUString& _sExpression, OUString& _rResult, bool bMatrixFormula) 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 doClose(bool _bOk) override;
virtual void insertEntryToLRUList(const formula::IFunctionDescription* pDesc) override; virtual void insertEntryToLRUList(const formula::IFunctionDescription* pDesc) override;
virtual void showReference(const OUString& _sFormula) override; virtual void showReference(const OUString& _sFormula) override;
......
...@@ -373,6 +373,13 @@ bool ScFormulaDlg::calculateValue( const OUString& rStrExp, OUString& rStrResult ...@@ -373,6 +373,13 @@ bool ScFormulaDlg::calculateValue( const OUString& rStrExp, OUString& rStrResult
return true; 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: // virtual methods of ScAnyRefDlg:
void ScFormulaDlg::RefInputStart( formula::RefEdit* pEdit, formula::RefButton* pButton ) void ScFormulaDlg::RefInputStart( formula::RefEdit* pEdit, formula::RefButton* pButton )
{ {
......
...@@ -47,8 +47,9 @@ class ScFormulaDlg : public formula::FormulaDlg, ...@@ -47,8 +47,9 @@ class ScFormulaDlg : public formula::FormulaDlg,
css::uno::Reference< css::sheet::XFormulaParser> m_xParser; css::uno::Reference< css::sheet::XFormulaParser> m_xParser;
css::uno::Reference< css::sheet::XFormulaOpCodeMapper> m_xOpCodeMapper; css::uno::Reference< css::sheet::XFormulaOpCodeMapper> m_xOpCodeMapper;
ScDocument* m_pDoc; ScDocument* m_pDoc;
ScAddress m_CursorPos; ScAddress m_CursorPos;
mutable std::shared_ptr<ScCompiler> m_xCompiler;
public: public:
ScFormulaDlg( SfxBindings* pB, SfxChildWindow* pCW, ScFormulaDlg( SfxBindings* pB, SfxChildWindow* pCW,
...@@ -60,6 +61,7 @@ public: ...@@ -60,6 +61,7 @@ public:
virtual void notifyChange() override; virtual void notifyChange() override;
virtual void fill() override; virtual void fill() override;
virtual bool calculateValue(const OUString& _sExpression, OUString& _rResult, bool bMatrixFormula) 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 doClose(bool _bOk) override;
virtual void insertEntryToLRUList(const formula::IFunctionDescription* pDesc) override; virtual void insertEntryToLRUList(const formula::IFunctionDescription* pDesc) override;
virtual void showReference(const OUString& _sFormula) override; virtual void showReference(const OUString& _sFormula) override;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment