Branch data Line data Source code
1 : : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 : : /*************************************************************************
3 : : *
4 : : * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
5 : : *
6 : : * Copyright 2000, 2010 Oracle and/or its affiliates.
7 : : *
8 : : * OpenOffice.org - a multi-platform office productivity suite
9 : : *
10 : : * This file is part of OpenOffice.org.
11 : : *
12 : : * OpenOffice.org is free software: you can redistribute it and/or modify
13 : : * it under the terms of the GNU Lesser General Public License version 3
14 : : * only, as published by the Free Software Foundation.
15 : : *
16 : : * OpenOffice.org is distributed in the hope that it will be useful,
17 : : * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 : : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 : : * GNU Lesser General Public License version 3 for more details
20 : : * (a copy is included in the LICENSE file that accompanied this code).
21 : : *
22 : : * You should have received a copy of the GNU Lesser General Public License
23 : : * version 3 along with OpenOffice.org. If not, see
24 : : * <http://www.openoffice.org/license.html>
25 : : * for a copy of the LGPLv3 License.
26 : : *
27 : : ************************************************************************/
28 : :
29 : : #ifndef SC_DOCFUNC_HXX
30 : : #define SC_DOCFUNC_HXX
31 : :
32 : : #include <tools/link.hxx>
33 : : #include "global.hxx"
34 : : #include "formula/grammar.hxx"
35 : : #include "tabbgcolor.hxx"
36 : : #include "token.hxx"
37 : : #include "rangenam.hxx"
38 : :
39 : : #include <vector>
40 : : #include <map>
41 : :
42 : : class ScEditEngineDefaulter;
43 : : class SdrUndoAction;
44 : : class ScAddress;
45 : : class ScDocShell;
46 : : class ScMarkData;
47 : : class ScPatternAttr;
48 : : class ScRange;
49 : : class ScRangeList;
50 : : class ScBaseCell;
51 : : class ScTokenArray;
52 : : struct ScTabOpParam;
53 : : class ScTableProtection;
54 : : struct ScCellMergeOption;
55 : : class ScConditionalFormat;
56 : :
57 : : // ---------------------------------------------------------------------------
58 : :
59 : : class ScDocFunc
60 : : {
61 : : protected:
62 : : ScDocShell& rDocShell;
63 : :
64 : : sal_Bool AdjustRowHeight( const ScRange& rRange, sal_Bool bPaint = true );
65 : : void CreateOneName( ScRangeName& rList,
66 : : SCCOL nPosX, SCROW nPosY, SCTAB nTab,
67 : : SCCOL nX1, SCROW nY1, SCCOL nX2, SCROW nY2,
68 : : sal_Bool& rCancel, sal_Bool bApi );
69 : : void NotifyInputHandler( const ScAddress& rPos );
70 : :
71 : 846 : ScDocFunc( ScDocShell& rDocSh ): rDocShell(rDocSh) {}
72 : : public:
73 [ - + ]: 695 : virtual ~ScDocFunc() {}
74 : :
75 : : DECL_LINK( NotifyDrawUndo, SdrUndoAction* );
76 : :
77 : : // for grouping multiple operations into one with a new name
78 : : virtual void EnterListAction( sal_uInt16 nNameResId );
79 : : virtual void EndListAction();
80 : :
81 : : virtual sal_Bool DetectiveAddPred(const ScAddress& rPos);
82 : : virtual sal_Bool DetectiveDelPred(const ScAddress& rPos);
83 : : virtual sal_Bool DetectiveAddSucc(const ScAddress& rPos);
84 : : virtual sal_Bool DetectiveDelSucc(const ScAddress& rPos);
85 : : virtual sal_Bool DetectiveAddError(const ScAddress& rPos);
86 : : virtual sal_Bool DetectiveMarkInvalid(SCTAB nTab);
87 : : virtual sal_Bool DetectiveDelAll(SCTAB nTab);
88 : : virtual sal_Bool DetectiveRefresh(sal_Bool bAutomatic = false);
89 : : virtual void DetectiveCollectAllPreds(const ScRangeList& rSrcRanges, ::std::vector<ScTokenRef>& rRefTokens);
90 : : virtual void DetectiveCollectAllSuccs(const ScRangeList& rSrcRanges, ::std::vector<ScTokenRef>& rRefTokens);
91 : :
92 : : virtual sal_Bool DeleteContents( const ScMarkData& rMark, sal_uInt16 nFlags,
93 : : sal_Bool bRecord, sal_Bool bApi );
94 : :
95 : : virtual sal_Bool TransliterateText( const ScMarkData& rMark, sal_Int32 nType,
96 : : sal_Bool bRecord, sal_Bool bApi );
97 : :
98 : : virtual sal_Bool SetNormalString( bool& o_rbNumFmtSet, const ScAddress& rPos, const String& rText, sal_Bool bApi );
99 : : virtual sal_Bool PutCell( const ScAddress& rPos, ScBaseCell* pNewCell, sal_Bool bApi );
100 : : virtual sal_Bool PutData( const ScAddress& rPos, ScEditEngineDefaulter& rEngine,
101 : : sal_Bool bInterpret, sal_Bool bApi );
102 : : virtual sal_Bool SetCellText( const ScAddress& rPos, const String& rText,
103 : : sal_Bool bInterpret, sal_Bool bEnglish, sal_Bool bApi,
104 : : const String& rFormulaNmsp,
105 : : const formula::FormulaGrammar::Grammar eGrammar );
106 : :
107 : : // creates a new cell for use with PutCell
108 : : virtual ScBaseCell* InterpretEnglishString( const ScAddress& rPos, const String& rText,
109 : : const String& rFormulaNmsp, const formula::FormulaGrammar::Grammar eGrammar,
110 : : short* pRetFormatType = NULL );
111 : :
112 : : virtual bool ShowNote( const ScAddress& rPos, bool bShow = true );
113 : : inline bool HideNote( const ScAddress& rPos ) { return ShowNote( rPos, false ); }
114 : :
115 : : virtual bool SetNoteText( const ScAddress& rPos, const String& rNoteText, sal_Bool bApi );
116 : : virtual bool ReplaceNote( const ScAddress& rPos, const String& rNoteText, const String* pAuthor, const String* pDate, sal_Bool bApi );
117 : :
118 : : virtual sal_Bool ApplyAttributes( const ScMarkData& rMark, const ScPatternAttr& rPattern,
119 : : sal_Bool bRecord, sal_Bool bApi );
120 : : virtual sal_Bool ApplyStyle( const ScMarkData& rMark, const String& rStyleName,
121 : : sal_Bool bRecord, sal_Bool bApi );
122 : :
123 : : virtual sal_Bool InsertCells( const ScRange& rRange,const ScMarkData* pTabMark,
124 : : InsCellCmd eCmd, sal_Bool bRecord, sal_Bool bApi,
125 : : sal_Bool bPartOfPaste = false );
126 : : virtual sal_Bool DeleteCells( const ScRange& rRange, const ScMarkData* pTabMark,
127 : : DelCellCmd eCmd, sal_Bool bRecord, sal_Bool bApi );
128 : :
129 : : virtual sal_Bool MoveBlock( const ScRange& rSource, const ScAddress& rDestPos,
130 : : sal_Bool bCut, sal_Bool bRecord, sal_Bool bPaint, sal_Bool bApi );
131 : :
132 : : virtual sal_Bool InsertTable( SCTAB nTab, const String& rName, sal_Bool bRecord, sal_Bool bApi );
133 : : virtual sal_Bool RenameTable( SCTAB nTab, const String& rName, sal_Bool bRecord, sal_Bool bApi );
134 : : virtual sal_Bool DeleteTable( SCTAB nTab, sal_Bool bRecord, sal_Bool bApi );
135 : :
136 : : virtual bool SetTabBgColor( SCTAB nTab, const Color& rColor, bool bRecord, bool bApi );
137 : : virtual bool SetTabBgColor( ScUndoTabColorInfo::List& rUndoTabColorList, bool bRecord, bool bApi );
138 : :
139 : : virtual sal_Bool SetTableVisible( SCTAB nTab, bool bVisible, sal_Bool bApi );
140 : :
141 : : virtual sal_Bool SetLayoutRTL( SCTAB nTab, bool bRTL, sal_Bool bApi );
142 : :
143 : : virtual SC_DLLPUBLIC sal_Bool
144 : : SetWidthOrHeight( sal_Bool bWidth, SCCOLROW nRangeCnt, SCCOLROW* pRanges,
145 : : SCTAB nTab, ScSizeMode eMode, sal_uInt16 nSizeTwips,
146 : : sal_Bool bRecord, sal_Bool bApi );
147 : :
148 : : virtual sal_Bool InsertPageBreak( sal_Bool bColumn, const ScAddress& rPos,
149 : : sal_Bool bRecord, sal_Bool bSetModified, sal_Bool bApi );
150 : : virtual sal_Bool RemovePageBreak( sal_Bool bColumn, const ScAddress& rPos,
151 : : sal_Bool bRecord, sal_Bool bSetModified, sal_Bool bApi );
152 : :
153 : : virtual void ProtectSheet( SCTAB nTab, const ScTableProtection& rProtect );
154 : :
155 : : virtual sal_Bool Protect( SCTAB nTab, const String& rPassword, sal_Bool bApi );
156 : : virtual sal_Bool Unprotect( SCTAB nTab, const String& rPassword, sal_Bool bApi );
157 : :
158 : : virtual sal_Bool ClearItems( const ScMarkData& rMark, const sal_uInt16* pWhich, sal_Bool bApi );
159 : : virtual sal_Bool ChangeIndent( const ScMarkData& rMark, sal_Bool bIncrement, sal_Bool bApi );
160 : : virtual bool AutoFormat( const ScRange& rRange, const ScMarkData* pTabMark,
161 : : sal_uInt16 nFormatNo, bool bRecord, bool bApi );
162 : :
163 : : virtual sal_Bool EnterMatrix( const ScRange& rRange, const ScMarkData* pTabMark,
164 : : const ScTokenArray* pTokenArray,
165 : : const String& rString, sal_Bool bApi, sal_Bool bEnglish,
166 : : const String& rFormulaNmsp,
167 : : const formula::FormulaGrammar::Grammar );
168 : :
169 : : virtual sal_Bool TabOp( const ScRange& rRange, const ScMarkData* pTabMark,
170 : : const ScTabOpParam& rParam, sal_Bool bRecord, sal_Bool bApi );
171 : :
172 : : virtual bool FillSimple( const ScRange& rRange, const ScMarkData* pTabMark,
173 : : FillDir eDir, bool bRecord, bool bApi );
174 : : virtual sal_Bool FillSeries( const ScRange& rRange, const ScMarkData* pTabMark,
175 : : FillDir eDir, FillCmd eCmd, FillDateCmd eDateCmd,
176 : : double fStart, double fStep, double fMax,
177 : : sal_Bool bRecord, sal_Bool bApi );
178 : :
179 : : // FillAuto: rRange wird von Source-Range auf Dest-Range angepasst
180 : : 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 );
181 : :
182 : : virtual sal_Bool FillAuto( ScRange& rRange, const ScMarkData* pTabMark,
183 : : FillDir eDir, sal_uLong nCount, sal_Bool bRecord, sal_Bool bApi );
184 : :
185 : : virtual sal_Bool ResizeMatrix( const ScRange& rOldRange, const ScAddress& rNewEnd, sal_Bool bApi );
186 : :
187 : : virtual sal_Bool MergeCells( const ScCellMergeOption& rOption, sal_Bool bContents,
188 : : sal_Bool bRecord, sal_Bool bApi );
189 : : sal_Bool UnmergeCells( const ScRange& rRange, sal_Bool bRecord );
190 : : bool UnmergeCells( const ScCellMergeOption& rOption, sal_Bool bRecord );
191 : :
192 : : virtual bool SetNewRangeNames( ScRangeName* pNewRanges, bool bModifyDoc = true, SCTAB nTab = -1 ); // takes ownership of pNewRanges //nTab = -1 for local range names
193 : : virtual bool ModifyRangeNames( const ScRangeName& rNewRanges, SCTAB nTab = -1 );
194 : : /**
195 : : * Modify all range names, global scope names as well as sheet local ones,
196 : : * in one go. Note that this method will <b>not</b> destroy the instances
197 : : * passed as arguments (it creates copies); the caller is responsible for
198 : : * destroying them.
199 : : */
200 : : virtual void ModifyAllRangeNames( const boost::ptr_map<rtl::OUString, ScRangeName>& rRangeMap );
201 : :
202 : : virtual sal_Bool CreateNames( const ScRange& rRange, sal_uInt16 nFlags, sal_Bool bApi, SCTAB nTab = -1 ); // -1 for global range names
203 : : virtual sal_Bool InsertNameList( const ScAddress& rStartPos, sal_Bool bApi );
204 : :
205 : : virtual sal_Bool InsertAreaLink( const String& rFile, const String& rFilter,
206 : : const String& rOptions, const String& rSource,
207 : : const ScRange& rDestRange, sal_uLong nRefresh,
208 : : sal_Bool bFitBlock, sal_Bool bApi );
209 : :
210 : : /**
211 : : * @param nOldIndex If 0 don't delete an old format
212 : : * @param pFormat if NULL only delete an old format
213 : : */
214 : : virtual void ReplaceConditionalFormat( sal_uLong nOldIndex, ScConditionalFormat* pFormat, SCTAB nTab, const ScRangeList& rRanges );
215 : : };
216 : :
217 : : class ScDocFuncDirect : public ScDocFunc
218 : : {
219 : : public:
220 : 846 : ScDocFuncDirect( ScDocShell& rDocSh ) : ScDocFunc( rDocSh ) {}
221 [ - + ]: 1390 : virtual ~ScDocFuncDirect() {}
222 : : };
223 : :
224 : :
225 : : #endif
226 : :
227 : : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|