blob: 60a7aeeeec8a787a1ad3ce4b46d47e1b305deb5e [file] [log] [blame]
/**************************************************************
*
* 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
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
*************************************************************/
#ifndef SC_DOCFUNC_HXX
#define SC_DOCFUNC_HXX
#include <tools/link.hxx>
#include "global.hxx"
#include "formula/grammar.hxx"
#include "tabbgcolor.hxx"
class ScEditEngineDefaulter;
class SdrUndoAction;
class ScAddress;
class ScDocShell;
class ScMarkData;
class ScPatternAttr;
class ScRange;
class ScRangeName;
class ScBaseCell;
class ScTokenArray;
struct ScTabOpParam;
class ScTableProtection;
// ---------------------------------------------------------------------------
class ScDocFunc
{
private:
ScDocShell& rDocShell;
sal_Bool AdjustRowHeight( const ScRange& rRange, sal_Bool bPaint = sal_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 );
public:
ScDocFunc( ScDocShell& rDocSh ): rDocShell(rDocSh) {}
~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 = sal_False);
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 = sal_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 );
//UNUSED2009-05 sal_Bool SetGrammar( formula::FormulaGrammar::Grammar eGrammar );
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 );
sal_Bool AutoFormat( const ScRange& rRange, const ScMarkData* pTabMark,
sal_uInt16 nFormatNo, sal_Bool bRecord, sal_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 );
sal_Bool FillSimple( const ScRange& rRange, const ScMarkData* pTabMark,
FillDir eDir, sal_Bool bRecord, sal_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
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 ScRange& rRange, sal_Bool bContents,
sal_Bool bRecord, sal_Bool bApi );
sal_Bool UnmergeCells( const ScRange& rRange, sal_Bool bRecord, sal_Bool bApi );
sal_Bool SetNewRangeNames( ScRangeName* pNewRanges, sal_Bool bApi ); // takes ownership of pNewRanges
sal_Bool ModifyRangeNames( const ScRangeName& rNewRanges, sal_Bool bApi );
sal_Bool CreateNames( const ScRange& rRange, sal_uInt16 nFlags, sal_Bool bApi );
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 );
};
#endif