/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This file is part of the LibreOffice project. * * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. * * This file incorporates work covered by the following license notice: * * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed * with this work for additional information regarding copyright * ownership. The ASF licenses this file to you under the Apache * License, Version 2.0 (the "License"); you may not use this file * except in compliance with the License. You may obtain a copy of * the License at http://www.apache.org/licenses/LICENSE-2.0 . */ #ifndef INCLUDED_SC_SOURCE_UI_INC_DOCFUNC_HXX #define INCLUDED_SC_SOURCE_UI_INC_DOCFUNC_HXX #include #include "global.hxx" #include #include "tabbgcolor.hxx" #include "token.hxx" #include "rangenam.hxx" #include #include class ScEditEngineDefaulter; class SdrUndoAction; class ScAddress; class ScDocShell; class ScMarkData; class ScPatternAttr; class ScRange; class ScRangeList; class ScFormulaCell; class ScTokenArray; struct ScTabOpParam; class ScTableProtection; struct ScCellMergeOption; class ScConditionalFormat; class ScConditionalFormatList; namespace sc { struct ColRowSpan; } class ScDocFunc { protected: ScDocShell& rDocShell; bool AdjustRowHeight( const ScRange& rRange, bool bPaint = true ); void CreateOneName( ScRangeName& rList, SCCOL nPosX, SCROW nPosY, SCTAB nTab, SCCOL nX1, SCROW nY1, SCCOL nX2, SCROW nY2, bool& rCancel, bool bApi ); void NotifyInputHandler( const ScAddress& rPos ); ScDocFunc( ScDocShell& rDocSh ): rDocShell(rDocSh) {} public: virtual ~ScDocFunc() {} DECL_LINK_TYPED( NotifyDrawUndo, SdrUndoAction*, void ); // for grouping multiple operations into one with a new name void EnterListAction( sal_uInt16 nNameResId ); void EndListAction(); bool DetectiveAddPred(const ScAddress& rPos); bool DetectiveDelPred(const ScAddress& rPos); bool DetectiveAddSucc(const ScAddress& rPos); bool DetectiveDelSucc(const ScAddress& rPos); bool DetectiveAddError(const ScAddress& rPos); bool DetectiveMarkInvalid(SCTAB nTab); bool DetectiveDelAll(SCTAB nTab); bool DetectiveRefresh(bool bAutomatic = false); void DetectiveCollectAllPreds(const ScRangeList& rSrcRanges, ::std::vector& rRefTokens); void DetectiveCollectAllSuccs(const ScRangeList& rSrcRanges, ::std::vector& rRefTokens); SC_DLLPUBLIC bool DeleteContents( const ScMarkData& rMark, InsertDeleteFlags nFlags, bool bRecord, bool bApi ); bool DeleteCell( const ScAddress& rPos, const ScMarkData& rMark, InsertDeleteFlags nFlags, bool bRecord, bool bApi ); bool TransliterateText( const ScMarkData& rMark, sal_Int32 nType, bool bRecord, bool bApi ); bool SetNormalString( bool& o_rbNumFmtSet, const ScAddress& rPos, const OUString& rText, bool bApi ); bool SetValueCell( const ScAddress& rPos, double fVal, bool bInteraction ); bool SetValueCells( const ScAddress& rPos, const std::vector& aVals, bool bInteraction ); bool SetStringCell( const ScAddress& rPos, const OUString& rStr, bool bInteraction ); bool SetEditCell( const ScAddress& rPos, const EditTextObject& rStr, bool bInteraction ); bool SetStringOrEditCell( const ScAddress& rPos, const OUString& rStr, bool bInteraction ); /** * This method takes ownership of the formula cell instance. The caller * must not delete it after passing it to this call. */ bool SetFormulaCell( const ScAddress& rPos, ScFormulaCell* pCell, bool bInteraction ); bool PutData( const ScAddress& rPos, ScEditEngineDefaulter& rEngine, bool bApi ); bool SetCellText( const ScAddress& rPos, const OUString& rText, bool bInterpret, bool bEnglish, bool bApi, const formula::FormulaGrammar::Grammar eGrammar ); bool ShowNote( const ScAddress& rPos, bool bShow = true ); bool SetNoteText( const ScAddress& rPos, const OUString& rNoteText, bool bApi ); bool ReplaceNote( const ScAddress& rPos, const OUString& rNoteText, const OUString* pAuthor, const OUString* pDate, bool bApi ); bool ApplyAttributes( const ScMarkData& rMark, const ScPatternAttr& rPattern, bool bRecord, bool bApi ); bool ApplyStyle( const ScMarkData& rMark, const OUString& rStyleName, bool bRecord, bool bApi ); bool InsertCells( const ScRange& rRange,const ScMarkData* pTabMark, InsCellCmd eCmd, bool bRecord, bool bApi, bool bPartOfPaste = false ); bool DeleteCells( const ScRange& rRange, const ScMarkData* pTabMark, DelCellCmd eCmd, bool bRecord, bool bApi ); bool MoveBlock( const ScRange& rSource, const ScAddress& rDestPos, bool bCut, bool bRecord, bool bPaint, bool bApi ); SC_DLLPUBLIC bool InsertTable( SCTAB nTab, const OUString& rName, bool bRecord, bool bApi ); bool RenameTable( SCTAB nTab, const OUString& rName, bool bRecord, bool bApi ); bool DeleteTable( SCTAB nTab, bool bRecord, bool bApi ); bool SetTabBgColor( SCTAB nTab, const Color& rColor, bool bRecord, bool bApi ); bool SetTabBgColor( ScUndoTabColorInfo::List& rUndoTabColorList, bool bRecord, bool bApi ); bool SetTableVisible( SCTAB nTab, bool bVisible, bool bApi ); bool SetLayoutRTL( SCTAB nTab, bool bRTL, bool bApi ); SC_DLLPUBLIC bool SetWidthOrHeight( bool bWidth, const std::vector& rRanges, SCTAB nTab, ScSizeMode eMode, sal_uInt16 nSizeTwips, bool bRecord, bool bApi ); bool InsertPageBreak( bool bColumn, const ScAddress& rPos, bool bRecord, bool bSetModified, bool bApi ); bool RemovePageBreak( bool bColumn, const ScAddress& rPos, bool bRecord, bool bSetModified, bool bApi ); void ProtectSheet( SCTAB nTab, const ScTableProtection& rProtect ); bool Protect( SCTAB nTab, const OUString& rPassword, bool bApi ); bool Unprotect( SCTAB nTab, const OUString& rPassword, bool bApi ); bool ClearItems( const ScMarkData& rMark, const sal_uInt16* pWhich, bool bApi ); bool ChangeIndent( const ScMarkData& rMark, bool bIncrement, bool bApi ); bool AutoFormat( const ScRange& rRange, const ScMarkData* pTabMark, sal_uInt16 nFormatNo, bool bRecord, bool bApi ); SC_DLLPUBLIC bool EnterMatrix( const ScRange& rRange, const ScMarkData* pTabMark, const ScTokenArray* pTokenArray, const OUString& rString, bool bApi, bool bEnglish, const OUString& rFormulaNmsp, const formula::FormulaGrammar::Grammar ); bool TabOp( const ScRange& rRange, const ScMarkData* pTabMark, const ScTabOpParam& rParam, bool bRecord, bool bApi ); bool FillSimple( const ScRange& rRange, const ScMarkData* pTabMark, FillDir eDir, bool bRecord, bool bApi ); bool FillSeries( const ScRange& rRange, const ScMarkData* pTabMark, FillDir eDir, FillCmd eCmd, FillDateCmd eDateCmd, double fStart, double fStep, double fMax, bool bRecord, bool bApi ); // FillAuto: rRange wird von Source-Range auf Dest-Range angepasst SC_DLLPUBLIC bool FillAuto( ScRange& rRange, const ScMarkData* pTabMark, FillDir eDir, FillCmd eCmd, FillDateCmd eDateCmd, sal_uLong nCount, double fStep, double fMax, bool bRecord, bool bApi ); bool FillAuto( ScRange& rRange, const ScMarkData* pTabMark, FillDir eDir, sal_uLong nCount, bool bRecord, bool bApi ); bool ResizeMatrix( const ScRange& rOldRange, const ScAddress& rNewEnd, bool bApi ); bool MergeCells( const ScCellMergeOption& rOption, bool bContents, bool bRecord, bool bApi ); bool UnmergeCells( const ScRange& rRange, bool bRecord ); bool UnmergeCells( const ScCellMergeOption& rOption, bool bRecord ); void SetNewRangeNames( ScRangeName* pNewRanges, bool bModifyDoc = true, SCTAB nTab = -1 ); // takes ownership of pNewRanges //nTab = -1 for local range names void 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 not destroy the instances * passed as arguments (it creates copies); the caller is responsible for * destroying them. */ void ModifyAllRangeNames( const boost::ptr_map& rRangeMap ); bool CreateNames( const ScRange& rRange, sal_uInt16 nFlags, bool bApi, SCTAB nTab = -1 ); // -1 for global range names bool InsertNameList( const ScAddress& rStartPos, bool bApi ); bool InsertAreaLink( const OUString& rFile, const OUString& rFilter, const OUString& rOptions, const OUString& rSource, const ScRange& rDestRange, sal_uLong nRefresh, bool bFitBlock, bool bApi ); /** * @param nOldIndex If 0 don't delete an old format * @param pFormat if NULL only delete an old format */ void ReplaceConditionalFormat( sal_uLong nOldIndex, ScConditionalFormat* pFormat, SCTAB nTab, const ScRangeList& rRanges ); /** * Sets or replaces the conditional format list of a table * * @param pList the new ScConditionalFormatList, method takes ownership * @param nTab the tab to which the conditional format list belongs */ void SetConditionalFormatList( ScConditionalFormatList* pList, SCTAB nTab ); void ConvertFormulaToValue( const ScRange& rRange, bool bRecord, bool bInteraction ); }; class ScDocFuncDirect : public ScDocFunc { public: ScDocFuncDirect( ScDocShell& rDocSh ) : ScDocFunc( rDocSh ) {} virtual ~ScDocFuncDirect() {} }; void VBA_DeleteModule( ScDocShell& rDocSh, const OUString& sModuleName ); #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */