sc/source/ui/docshell/docsh.cxx | 66 ++++++++++++++++++++++++++++++++++++++-- 1 file changed, 64 insertions(+), 2 deletions(-)
New commits: commit 5608a20ce5d526634641112fed77a9a805e9e27c Author: Michael Meeks <michael.me...@suse.com> Date: Tue Mar 20 14:26:37 2012 +0000 dummy interception of ScFunc methods with INTERCEPT env var set. diff --git a/sc/source/ui/docshell/docsh.cxx b/sc/source/ui/docshell/docsh.cxx index ab5dcd9..0bf22e3 100644 --- a/sc/source/ui/docshell/docsh.cxx +++ b/sc/source/ui/docshell/docsh.cxx @@ -2507,6 +2507,68 @@ sal_Bool ScDocShell::HasAutomaticTableName( const String& rFilter ) || rFilter.EqualsAscii( pFilterRtf ); } +namespace { + +class ScDocFuncIntercept : public ScDocFunc +{ +public: + ScDocFuncIntercept( ScDocShell& rDocSh ) : ScDocFunc( rDocSh ) + { + fprintf( stderr, "Interceptor created !\n" ); + } + virtual ~ScDocFuncIntercept() {} + virtual ScBaseCell* InterpretEnglishString( const ScAddress& rPos, const String& rText, + const String& rFormulaNmsp, + const formula::FormulaGrammar::Grammar eGrammar, + short* pRetFormatType ) + { + fprintf( stderr, "interp. english string '%s'\n", + rtl::OUStringToOString( rText, RTL_TEXTENCODING_UTF8 ).getStr() ); + return ScDocFunc::InterpretEnglishString( rPos, rText, rFormulaNmsp, + eGrammar, pRetFormatType ); + } + virtual sal_Bool SetNormalString( const ScAddress& rPos, const String& rText, sal_Bool bApi ) + { + fprintf( stderr, "set normal string '%s'\n", + rtl::OUStringToOString( rText, RTL_TEXTENCODING_UTF8 ).getStr() ); + return ScDocFunc::SetNormalString( rPos, rText, bApi ); + } + + virtual sal_Bool PutCell( const ScAddress& rPos, ScBaseCell* pNewCell, sal_Bool bApi ) + { + fprintf( stderr, "put cell string '%p' %d\n", pNewCell, bApi ); +// rtl::OUStringToOString( rText, RTL_TEXTENCODING_UTF8 ).getStr() ); + return ScDocFunc::PutCell( rPos, pNewCell, bApi ); + } + + virtual sal_Bool SetCellText( const ScAddress& rPos, const String& rText, + sal_Bool bInterpret, sal_Bool bEnglish, sal_Bool bApi, + const String& rFormulaNmsp, + const formula::FormulaGrammar::Grammar eGrammar ) + { + fprintf( stderr, "set cell text '%s'\n", + rtl::OUStringToOString( rText, RTL_TEXTENCODING_UTF8 ).getStr() ); + return ScDocFunc::SetCellText( rPos, rText, bInterpret, bEnglish, bApi, rFormulaNmsp, eGrammar ); + } + + virtual bool ShowNote( const ScAddress& rPos, bool bShow = true ) + { + fprintf( stderr, "%s note\n", bShow ? "show" : "hide" ); + return ScDocFunc::ShowNote( rPos, bShow ); + } +}; + +static ScDocFunc * +createDocFunc( ScDocShell *pThis ) +{ + if (getenv ("INTERCEPT")) + return new ScDocFuncIntercept( *pThis ); + else + return new ScDocFuncDirect( *pThis ); +} + +} // anonymous namespace + ScDocShell::ScDocShell( const ScDocShell& rShell ) : SvRefBase(), SotObject(), @@ -2538,7 +2600,7 @@ ScDocShell::ScDocShell( const ScDocShell& rShell ) : bIsInplace = rShell.bIsInplace; - pDocFunc = new ScDocFuncDirect(*this); + pDocFunc = createDocFunc( this ); // SetBaseModel needs exception handling ScModelObj::CreateAndSet( this ); @@ -2585,7 +2647,7 @@ ScDocShell::ScDocShell( const sal_uInt64 i_nSfxCreationFlags ) : bIsInplace = (GetCreateMode() == SFX_CREATE_MODE_EMBEDDED); // wird zurueckgesetzt, wenn nicht inplace - pDocFunc = new ScDocFuncDirect(*this); + pDocFunc = createDocFunc( this ); // SetBaseModel needs exception handling ScModelObj::CreateAndSet( this ); _______________________________________________ Libreoffice-commits mailing list Libreoffice-commits@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits