1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237
|
/* -*- 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 <tools/link.hxx>
#include "global.hxx"
#include <formula/grammar.hxx>
#include "tabbgcolor.hxx"
#include "token.hxx"
#include "rangenam.hxx"
#include <vector>
#include <map>
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( NotifyDrawUndo, SdrUndoAction* );
// 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<ScTokenRef>& rRefTokens);
void DetectiveCollectAllSuccs(const ScRangeList& rSrcRanges, ::std::vector<ScTokenRef>& rRefTokens);
SC_DLLPUBLIC bool
DeleteContents( const ScMarkData& rMark, sal_uInt16 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<double>& 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 );
inline bool HideNote( const ScAddress& rPos ) { return ShowNote( rPos, false ); }
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 );
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<sc::ColRowSpan>& 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 );
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 );
/**
* 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<OUString, ScRangeName>& 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 );
};
class ScDocFuncDirect : public ScDocFunc
{
public:
ScDocFuncDirect( ScDocShell& rDocSh ) : ScDocFunc( rDocSh ) {}
virtual ~ScDocFuncDirect() {}
};
#endif
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|