diff options
author | Michael Meeks <michael.meeks@suse.com> | 2012-03-20 12:22:05 +0000 |
---|---|---|
committer | Michael Meeks <michael.meeks@suse.com> | 2012-04-02 20:22:40 +0100 |
commit | 8c2f73a67bd1801357202fb4a7b6a921373cd271 (patch) | |
tree | 5fff0bdc44f2f81fd9efb459d7607f0fd238a9d4 /sc | |
parent | 0e0e3caf382f793481b638417540d05c1d1ed24a (diff) |
virtualise the ScDocFunc to allow interposing some magic
Diffstat (limited to 'sc')
-rw-r--r-- | sc/source/ui/docshell/docsh.cxx | 4 | ||||
-rw-r--r-- | sc/source/ui/inc/docfunc.hxx | 249 |
2 files changed, 131 insertions, 122 deletions
diff --git a/sc/source/ui/docshell/docsh.cxx b/sc/source/ui/docshell/docsh.cxx index 4f104c3920d8..3e931c457d63 100644 --- a/sc/source/ui/docshell/docsh.cxx +++ b/sc/source/ui/docshell/docsh.cxx @@ -2537,7 +2537,7 @@ ScDocShell::ScDocShell( const ScDocShell& rShell ) : bIsInplace = rShell.bIsInplace; - pDocFunc = new ScDocFunc(*this); + pDocFunc = new ScDocFuncDirect(*this); // SetBaseModel needs exception handling ScModelObj::CreateAndSet( this ); @@ -2584,7 +2584,7 @@ ScDocShell::ScDocShell( const sal_uInt64 i_nSfxCreationFlags ) : bIsInplace = (GetCreateMode() == SFX_CREATE_MODE_EMBEDDED); // wird zurueckgesetzt, wenn nicht inplace - pDocFunc = new ScDocFunc(*this); + pDocFunc = new ScDocFuncDirect(*this); // SetBaseModel needs exception handling ScModelObj::CreateAndSet( this ); diff --git a/sc/source/ui/inc/docfunc.hxx b/sc/source/ui/inc/docfunc.hxx index a2e6fd2093c8..e7f6b4dd2980 100644 --- a/sc/source/ui/inc/docfunc.hxx +++ b/sc/source/ui/inc/docfunc.hxx @@ -60,147 +60,156 @@ class ScDocFunc private: ScDocShell& rDocShell; - sal_Bool AdjustRowHeight( const ScRange& rRange, sal_Bool bPaint = true ); + sal_Bool AdjustRowHeight( const ScRange& rRange, sal_Bool bPaint = true ); void CreateOneName( ScRangeName& rList, SCCOL nPosX, SCROW nPosY, SCTAB nTab, SCCOL nX1, SCROW nY1, SCCOL nX2, SCROW nY2, sal_Bool& rCancel, sal_Bool bApi ); void NotifyInputHandler( const ScAddress& rPos ); +protected: + ScDocFunc( ScDocShell& rDocSh ): rDocShell(rDocSh) {} public: - ScDocFunc( ScDocShell& rDocSh ): rDocShell(rDocSh) {} - ~ScDocFunc() {} + virtual ~ScDocFunc() {} DECL_LINK( NotifyDrawUndo, SdrUndoAction* ); - sal_Bool DetectiveAddPred(const ScAddress& rPos); - sal_Bool DetectiveDelPred(const ScAddress& rPos); - sal_Bool DetectiveAddSucc(const ScAddress& rPos); - sal_Bool DetectiveDelSucc(const ScAddress& rPos); - sal_Bool DetectiveAddError(const ScAddress& rPos); - sal_Bool DetectiveMarkInvalid(SCTAB nTab); - sal_Bool DetectiveDelAll(SCTAB nTab); - sal_Bool DetectiveRefresh(sal_Bool bAutomatic = false); - void DetectiveCollectAllPreds(const ScRangeList& rSrcRanges, ::std::vector<ScTokenRef>& rRefTokens); - void DetectiveCollectAllSuccs(const ScRangeList& rSrcRanges, ::std::vector<ScTokenRef>& rRefTokens); - - sal_Bool DeleteContents( const ScMarkData& rMark, sal_uInt16 nFlags, - sal_Bool bRecord, sal_Bool bApi ); - - sal_Bool TransliterateText( const ScMarkData& rMark, sal_Int32 nType, - sal_Bool bRecord, sal_Bool bApi ); - - sal_Bool SetNormalString( const ScAddress& rPos, const String& rText, sal_Bool bApi ); - sal_Bool PutCell( const ScAddress& rPos, ScBaseCell* pNewCell, sal_Bool bApi ); - sal_Bool PutData( const ScAddress& rPos, ScEditEngineDefaulter& rEngine, - sal_Bool bInterpret, sal_Bool bApi ); - 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 ); - - // creates a new cell for use with PutCell - ScBaseCell* InterpretEnglishString( const ScAddress& rPos, const String& rText, - const String& rFormulaNmsp, const formula::FormulaGrammar::Grammar eGrammar, - short* pRetFormatType = NULL ); - - bool ShowNote( const ScAddress& rPos, bool bShow = true ); - inline bool HideNote( const ScAddress& rPos ) { return ShowNote( rPos, false ); } - - bool SetNoteText( const ScAddress& rPos, const String& rNoteText, sal_Bool bApi ); - bool ReplaceNote( const ScAddress& rPos, const String& rNoteText, const String* pAuthor, const String* pDate, sal_Bool bApi ); - - sal_Bool ApplyAttributes( const ScMarkData& rMark, const ScPatternAttr& rPattern, - sal_Bool bRecord, sal_Bool bApi ); - sal_Bool ApplyStyle( const ScMarkData& rMark, const String& rStyleName, - sal_Bool bRecord, sal_Bool bApi ); - - sal_Bool InsertCells( const ScRange& rRange,const ScMarkData* pTabMark, - InsCellCmd eCmd, sal_Bool bRecord, sal_Bool bApi, - sal_Bool bPartOfPaste = false ); - sal_Bool DeleteCells( const ScRange& rRange, const ScMarkData* pTabMark, - DelCellCmd eCmd, sal_Bool bRecord, sal_Bool bApi ); - - sal_Bool MoveBlock( const ScRange& rSource, const ScAddress& rDestPos, - sal_Bool bCut, sal_Bool bRecord, sal_Bool bPaint, sal_Bool bApi ); - - sal_Bool InsertTable( SCTAB nTab, const String& rName, sal_Bool bRecord, sal_Bool bApi ); - sal_Bool RenameTable( SCTAB nTab, const String& rName, sal_Bool bRecord, sal_Bool bApi ); - sal_Bool DeleteTable( SCTAB nTab, sal_Bool bRecord, sal_Bool bApi ); - - bool SetTabBgColor( SCTAB nTab, const Color& rColor, bool bRecord, bool bApi ); - bool SetTabBgColor( ScUndoTabColorInfo::List& rUndoTabColorList, bool bRecord, bool bApi ); - - sal_Bool SetTableVisible( SCTAB nTab, sal_Bool bVisible, sal_Bool bApi ); - - sal_Bool SetLayoutRTL( SCTAB nTab, sal_Bool bRTL, sal_Bool bApi ); - - SC_DLLPUBLIC sal_Bool SetWidthOrHeight( sal_Bool bWidth, SCCOLROW nRangeCnt, SCCOLROW* pRanges, - SCTAB nTab, ScSizeMode eMode, sal_uInt16 nSizeTwips, - sal_Bool bRecord, sal_Bool bApi ); - - sal_Bool InsertPageBreak( sal_Bool bColumn, const ScAddress& rPos, - sal_Bool bRecord, sal_Bool bSetModified, sal_Bool bApi ); - sal_Bool RemovePageBreak( sal_Bool bColumn, const ScAddress& rPos, - sal_Bool bRecord, sal_Bool bSetModified, sal_Bool bApi ); - - void ProtectSheet( SCTAB nTab, const ScTableProtection& rProtect ); - - sal_Bool Protect( SCTAB nTab, const String& rPassword, sal_Bool bApi ); - sal_Bool Unprotect( SCTAB nTab, const String& rPassword, sal_Bool bApi ); - - sal_Bool ClearItems( const ScMarkData& rMark, const sal_uInt16* pWhich, sal_Bool bApi ); - sal_Bool ChangeIndent( const ScMarkData& rMark, sal_Bool bIncrement, sal_Bool bApi ); - bool AutoFormat( const ScRange& rRange, const ScMarkData* pTabMark, - sal_uInt16 nFormatNo, bool bRecord, bool bApi ); - - sal_Bool EnterMatrix( const ScRange& rRange, const ScMarkData* pTabMark, - const ScTokenArray* pTokenArray, - const String& rString, sal_Bool bApi, sal_Bool bEnglish, - const String& rFormulaNmsp, - const formula::FormulaGrammar::Grammar ); - - sal_Bool TabOp( const ScRange& rRange, const ScMarkData* pTabMark, - const ScTabOpParam& rParam, sal_Bool bRecord, sal_Bool bApi ); - - bool FillSimple( const ScRange& rRange, const ScMarkData* pTabMark, - FillDir eDir, bool bRecord, bool bApi ); - sal_Bool FillSeries( const ScRange& rRange, const ScMarkData* pTabMark, - FillDir eDir, FillCmd eCmd, FillDateCmd eDateCmd, - double fStart, double fStep, double fMax, - sal_Bool bRecord, sal_Bool bApi ); - // FillAuto: rRange wird von Source-Range auf Dest-Range angepasst - SC_DLLPUBLIC sal_Bool FillAuto( ScRange& rRange, const ScMarkData* pTabMark, FillDir eDir, FillCmd eCmd, FillDateCmd eDateCmd, sal_uLong nCount, double fStep, double fMax, sal_Bool bRecord, sal_Bool bApi ); - - sal_Bool FillAuto( ScRange& rRange, const ScMarkData* pTabMark, - FillDir eDir, sal_uLong nCount, sal_Bool bRecord, sal_Bool bApi ); - - sal_Bool ResizeMatrix( const ScRange& rOldRange, const ScAddress& rNewEnd, sal_Bool bApi ); - - sal_Bool MergeCells( const ScCellMergeOption& rOption, sal_Bool bContents, - sal_Bool bRecord, sal_Bool bApi ); - sal_Bool UnmergeCells( const ScRange& rRange, sal_Bool bRecord, sal_Bool bApi ); - bool UnmergeCells( const ScCellMergeOption& rOption, sal_Bool bRecord, sal_Bool bApi ); + virtual sal_Bool DetectiveAddPred(const ScAddress& rPos); + virtual sal_Bool DetectiveDelPred(const ScAddress& rPos); + virtual sal_Bool DetectiveAddSucc(const ScAddress& rPos); + virtual sal_Bool DetectiveDelSucc(const ScAddress& rPos); + virtual sal_Bool DetectiveAddError(const ScAddress& rPos); + virtual sal_Bool DetectiveMarkInvalid(SCTAB nTab); + virtual sal_Bool DetectiveDelAll(SCTAB nTab); + virtual sal_Bool DetectiveRefresh(sal_Bool bAutomatic = false); + virtual void DetectiveCollectAllPreds(const ScRangeList& rSrcRanges, ::std::vector<ScTokenRef>& rRefTokens); + virtual void DetectiveCollectAllSuccs(const ScRangeList& rSrcRanges, ::std::vector<ScTokenRef>& rRefTokens); + + virtual sal_Bool DeleteContents( const ScMarkData& rMark, sal_uInt16 nFlags, + sal_Bool bRecord, sal_Bool bApi ); + + virtual sal_Bool TransliterateText( const ScMarkData& rMark, sal_Int32 nType, + sal_Bool bRecord, sal_Bool bApi ); + + virtual sal_Bool SetNormalString( const ScAddress& rPos, const String& rText, sal_Bool bApi ); + virtual sal_Bool PutCell( const ScAddress& rPos, ScBaseCell* pNewCell, sal_Bool bApi ); + virtual sal_Bool PutData( const ScAddress& rPos, ScEditEngineDefaulter& rEngine, + sal_Bool bInterpret, sal_Bool 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 ); + + // creates a new cell for use with PutCell + virtual ScBaseCell* InterpretEnglishString( const ScAddress& rPos, const String& rText, + const String& rFormulaNmsp, const formula::FormulaGrammar::Grammar eGrammar, + short* pRetFormatType = NULL ); + + virtual bool ShowNote( const ScAddress& rPos, bool bShow = true ); + inline bool HideNote( const ScAddress& rPos ) { return ShowNote( rPos, false ); } + + virtual bool SetNoteText( const ScAddress& rPos, const String& rNoteText, sal_Bool bApi ); + virtual bool ReplaceNote( const ScAddress& rPos, const String& rNoteText, const String* pAuthor, const String* pDate, sal_Bool bApi ); + + virtual sal_Bool ApplyAttributes( const ScMarkData& rMark, const ScPatternAttr& rPattern, + sal_Bool bRecord, sal_Bool bApi ); + virtual sal_Bool ApplyStyle( const ScMarkData& rMark, const String& rStyleName, + sal_Bool bRecord, sal_Bool bApi ); + + virtual sal_Bool InsertCells( const ScRange& rRange,const ScMarkData* pTabMark, + InsCellCmd eCmd, sal_Bool bRecord, sal_Bool bApi, + sal_Bool bPartOfPaste = false ); + virtual sal_Bool DeleteCells( const ScRange& rRange, const ScMarkData* pTabMark, + DelCellCmd eCmd, sal_Bool bRecord, sal_Bool bApi ); + + virtual sal_Bool MoveBlock( const ScRange& rSource, const ScAddress& rDestPos, + sal_Bool bCut, sal_Bool bRecord, sal_Bool bPaint, sal_Bool bApi ); + + virtual sal_Bool InsertTable( SCTAB nTab, const String& rName, sal_Bool bRecord, sal_Bool bApi ); + virtual sal_Bool RenameTable( SCTAB nTab, const String& rName, sal_Bool bRecord, sal_Bool bApi ); + virtual sal_Bool DeleteTable( SCTAB nTab, sal_Bool bRecord, sal_Bool bApi ); + + virtual bool SetTabBgColor( SCTAB nTab, const Color& rColor, bool bRecord, bool bApi ); + virtual bool SetTabBgColor( ScUndoTabColorInfo::List& rUndoTabColorList, bool bRecord, bool bApi ); + + virtual sal_Bool SetTableVisible( SCTAB nTab, sal_Bool bVisible, sal_Bool bApi ); + + virtual sal_Bool SetLayoutRTL( SCTAB nTab, sal_Bool bRTL, sal_Bool bApi ); + + virtual SC_DLLPUBLIC sal_Bool + SetWidthOrHeight( sal_Bool bWidth, SCCOLROW nRangeCnt, SCCOLROW* pRanges, + SCTAB nTab, ScSizeMode eMode, sal_uInt16 nSizeTwips, + sal_Bool bRecord, sal_Bool bApi ); + + virtual sal_Bool InsertPageBreak( sal_Bool bColumn, const ScAddress& rPos, + sal_Bool bRecord, sal_Bool bSetModified, sal_Bool bApi ); + virtual sal_Bool RemovePageBreak( sal_Bool bColumn, const ScAddress& rPos, + sal_Bool bRecord, sal_Bool bSetModified, sal_Bool bApi ); + + virtual void ProtectSheet( SCTAB nTab, const ScTableProtection& rProtect ); + + virtual sal_Bool Protect( SCTAB nTab, const String& rPassword, sal_Bool bApi ); + virtual sal_Bool Unprotect( SCTAB nTab, const String& rPassword, sal_Bool bApi ); + + virtual sal_Bool ClearItems( const ScMarkData& rMark, const sal_uInt16* pWhich, sal_Bool bApi ); + virtual sal_Bool ChangeIndent( const ScMarkData& rMark, sal_Bool bIncrement, sal_Bool bApi ); + virtual bool AutoFormat( const ScRange& rRange, const ScMarkData* pTabMark, + sal_uInt16 nFormatNo, bool bRecord, bool bApi ); + + virtual sal_Bool EnterMatrix( const ScRange& rRange, const ScMarkData* pTabMark, + const ScTokenArray* pTokenArray, + const String& rString, sal_Bool bApi, sal_Bool bEnglish, + const String& rFormulaNmsp, + const formula::FormulaGrammar::Grammar ); + + virtual sal_Bool TabOp( const ScRange& rRange, const ScMarkData* pTabMark, + const ScTabOpParam& rParam, sal_Bool bRecord, sal_Bool bApi ); + + virtual bool FillSimple( const ScRange& rRange, const ScMarkData* pTabMark, + FillDir eDir, bool bRecord, bool bApi ); + virtual sal_Bool FillSeries( const ScRange& rRange, const ScMarkData* pTabMark, + FillDir eDir, FillCmd eCmd, FillDateCmd eDateCmd, + double fStart, double fStep, double fMax, + sal_Bool bRecord, sal_Bool bApi ); + + // FillAuto: rRange wird von Source-Range auf Dest-Range angepasst + SC_DLLPUBLIC virtual sal_Bool FillAuto( ScRange& rRange, const ScMarkData* pTabMark, FillDir eDir, FillCmd eCmd, FillDateCmd eDateCmd, sal_uLong nCount, double fStep, double fMax, sal_Bool bRecord, sal_Bool bApi ); + + virtual sal_Bool FillAuto( ScRange& rRange, const ScMarkData* pTabMark, + FillDir eDir, sal_uLong nCount, sal_Bool bRecord, sal_Bool bApi ); + + virtual sal_Bool ResizeMatrix( const ScRange& rOldRange, const ScAddress& rNewEnd, sal_Bool bApi ); + + virtual sal_Bool MergeCells( const ScCellMergeOption& rOption, sal_Bool bContents, + sal_Bool bRecord, sal_Bool bApi ); + virtual sal_Bool UnmergeCells( const ScRange& rRange, sal_Bool bRecord, sal_Bool bApi ); + virtual bool UnmergeCells( const ScCellMergeOption& rOption, sal_Bool bRecord, sal_Bool bApi ); - bool SetNewRangeNames( ScRangeName* pNewRanges, bool bModifyDoc = true, SCTAB nTab = -1 ); // takes ownership of pNewRanges //nTab = -1 for local range names - bool ModifyRangeNames( const ScRangeName& rNewRanges, SCTAB nTab = -1 ); + virtual bool SetNewRangeNames( ScRangeName* pNewRanges, bool bModifyDoc = true, SCTAB nTab = -1 ); // takes ownership of pNewRanges //nTab = -1 for local range names + virtual bool ModifyRangeNames( const ScRangeName& rNewRanges, SCTAB nTab = -1 ); /** * Modify all range names, global scope names as well as sheet local ones, * in one go. Note that this method will <b>not</b> destroy the instances * passed as arguments (it creates copies); the caller is responsible for * destroying them. */ - void ModifyAllRangeNames( const boost::ptr_map<rtl::OUString, ScRangeName>& rRangeMap ); + virtual void ModifyAllRangeNames( const boost::ptr_map<rtl::OUString, ScRangeName>& rRangeMap ); - sal_Bool CreateNames( const ScRange& rRange, sal_uInt16 nFlags, sal_Bool bApi, SCTAB nTab = -1 ); // -1 for global range names - sal_Bool InsertNameList( const ScAddress& rStartPos, sal_Bool bApi ); + virtual sal_Bool CreateNames( const ScRange& rRange, sal_uInt16 nFlags, sal_Bool bApi, SCTAB nTab = -1 ); // -1 for global range names + virtual sal_Bool InsertNameList( const ScAddress& rStartPos, sal_Bool bApi ); - sal_Bool InsertAreaLink( const String& rFile, const String& rFilter, - const String& rOptions, const String& rSource, - const ScRange& rDestRange, sal_uLong nRefresh, - sal_Bool bFitBlock, sal_Bool bApi ); + virtual sal_Bool InsertAreaLink( const String& rFile, const String& rFilter, + const String& rOptions, const String& rSource, + const ScRange& rDestRange, sal_uLong nRefresh, + sal_Bool bFitBlock, sal_Bool bApi ); }; +class ScDocFuncDirect : public ScDocFunc +{ +public: + ScDocFuncDirect( ScDocShell& rDocSh ) : ScDocFunc( rDocSh ) {} + virtual ~ScDocFuncDirect() {} +}; #endif |