xref: /AOO41X/main/sc/source/ui/inc/viewfunc.hxx (revision 5443dcac4da55ae8863c5c80e8907938642a7f1b)
1 /**************************************************************
2  *
3  * Licensed to the Apache Software Foundation (ASF) under one
4  * or more contributor license agreements.  See the NOTICE file
5  * distributed with this work for additional information
6  * regarding copyright ownership.  The ASF licenses this file
7  * to you under the Apache License, Version 2.0 (the
8  * "License"); you may not use this file except in compliance
9  * with the License.  You may obtain a copy of the License at
10  *
11  *   http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing,
14  * software distributed under the License is distributed on an
15  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16  * KIND, either express or implied.  See the License for the
17  * specific language governing permissions and limitations
18  * under the License.
19  *
20  *************************************************************/
21 
22 
23 #ifndef SC_VIEWFUNC_HXX
24 #define SC_VIEWFUNC_HXX
25 
26 #include "tabview.hxx"
27 
28 #include "tabbgcolor.hxx"
29 
30 #ifndef _SVSTDARR_SHORTS
31 #define _SVSTDARR_SHORTS
32 #include <svl/svstdarr.hxx>
33 
34 #endif
35 
36 #ifndef _SVSTDARR_STRINGS
37 
38 #define _SVSTDARR_STRINGS
39 #include <svl/svstdarr.hxx>
40 
41 #endif
42 #include <com/sun/star/embed/XEmbeddedObject.hpp>
43 #include <com/sun/star/embed/Aspects.hpp>
44 
45 class ScPatternAttr;
46 class ScAutoFormatData;
47 class SvxSearchItem;
48 class SfxItemSet;
49 class SvxBorderLine;
50 class SvxBoxItem;
51 class SvxBoxInfoItem;
52 class SfxStyleSheetBase;
53 class SfxStyleSheet;
54 class SfxPoolItem;
55 class EditTextObject;
56 struct ScSolveParam;
57 struct ScTabOpParam;
58 class ScPostIt;
59 class ScConditionalFormat;
60 class ScValidationData;
61 class ScConversionParam;
62 class SdrModel;
63 class Graphic;
64 class Exchange;
65 class ScRangeList;
66 class SvxHyperlinkItem;
67 class ScTransferObj;
68 class ScTableProtection;
69 
70 namespace com { namespace sun { namespace star { namespace datatransfer { class XTransferable; } } } }
71 
72 //==================================================================
73 
74 class ScViewFunc : public ScTabView
75 {
76 private:
77     ScAddress   aFormatSource;      // fuer automatisches Erweitern von Formatierung
78     ScRange     aFormatArea;
79     sal_Bool        bFormatValid;
80 
81 public:
82                     ScViewFunc( Window* pParent, ScDocShell& rDocSh, ScTabViewShell* pViewShell );
83 //UNUSED2008-05     ScViewFunc( Window* pParent, const ScViewFunc& rViewFunc, ScTabViewShell* pViewShell );
84                     ~ScViewFunc();
85 
86     const ScPatternAttr*    GetSelectionPattern ();
87     void                    GetSelectionFrame   ( SvxBoxItem&       rLineOuter,
88                                                   SvxBoxInfoItem&   rLineInner );
89 
90     sal_uInt8           GetSelectionScriptType();
91 
92     sal_Bool            GetAutoSumArea(ScRangeList& rRangeList);
93     void            EnterAutoSum(const ScRangeList& rRangeList, sal_Bool bSubTotal);
94     bool            AutoSum( const ScRange& rRange, bool bSubTotal, bool bSetCursor, bool bContinue );
95     String          GetAutoSumFormula( const ScRangeList& rRangeList, bool bSubTotal );
96 
97     void            EnterData( SCCOL nCol, SCROW nRow, SCTAB nTab, const String& rString,
98                                sal_Bool bRecord = sal_True, const EditTextObject* pData = NULL );
99     void            EnterValue( SCCOL nCol, SCROW nRow, SCTAB nTab, const double& rValue );
100     void            EnterData( SCCOL nCol, SCROW nRow, SCTAB nTab, const EditTextObject* pData,
101                                 sal_Bool bRecord = sal_True, sal_Bool bTestSimple = sal_False );
102 
103     void            EnterMatrix( const String& rString );
104     void            EnterBlock( const String& rString, const EditTextObject* pData );
105 
106     void            EnterDataAtCursor( const String& rString );         //! nicht benutzt ?
107 
108     SC_DLLPUBLIC void           CutToClip( ScDocument* pClipDoc = NULL, sal_Bool bIncludeObjects = sal_False );
109     SC_DLLPUBLIC sal_Bool           CopyToClip( ScDocument* pClipDoc = NULL, sal_Bool bCut = sal_False, sal_Bool bApi = sal_False,
110                                 sal_Bool bIncludeObjects = sal_False, sal_Bool bStopEdit = sal_True );
111     ScTransferObj*              CopyToTransferable();
112     SC_DLLPUBLIC sal_Bool           PasteFromClip( sal_uInt16 nFlags, ScDocument* pClipDoc,
113                                     sal_uInt16 nFunction = PASTE_NOFUNC, sal_Bool bSkipEmpty = sal_False,
114                                     sal_Bool bTranspose = sal_False, sal_Bool bAsLink = sal_False,
115                                     InsCellCmd eMoveMode = INS_NONE,
116                                     sal_uInt16 nUndoExtraFlags = IDF_NONE,
117                                     sal_Bool bAllowDialogs = sal_False );
118 
119     void            FillTab( sal_uInt16 nFlags, sal_uInt16 nFunction, sal_Bool bSkipEmpty, sal_Bool bAsLink );
120 
121     SC_DLLPUBLIC void           PasteFromSystem();
122     SC_DLLPUBLIC sal_Bool           PasteFromSystem( sal_uLong nFormatId, sal_Bool bApi = sal_False );
123     void                        PasteFromTransferable( const ::com::sun::star::uno::Reference<
124                                                        ::com::sun::star::datatransfer::XTransferable >& rxTransferable );
125 
126     void            PasteDraw();
127     void            PasteDraw( const Point& rLogicPos, SdrModel* pModel,
128                                 sal_Bool bGroup = sal_False, sal_Bool bSameDocClipboard = sal_False );
129 
130     sal_Bool            PasteOnDrawObject( const ::com::sun::star::uno::Reference<
131                                             ::com::sun::star::datatransfer::XTransferable >& rxTransferable,
132                                         SdrObject* pHitObj, sal_Bool bLink );
133 
134     sal_Bool            PasteDataFormat( sal_uLong nFormatId,
135                                         const ::com::sun::star::uno::Reference<
136                                             ::com::sun::star::datatransfer::XTransferable >& rxTransferable,
137                                         SCCOL nPosX, SCROW nPosY, Point* pLogicPos = NULL,
138                                         sal_Bool bLink = sal_False, sal_Bool bAllowDialogs = sal_False );
139 
140     sal_Bool            PasteFile( const Point&, const String&, sal_Bool bLink=sal_False );
141     sal_Bool            PasteObject( const Point&, const com::sun::star::uno::Reference < com::sun::star::embed::XEmbeddedObject >&, const Size* = NULL, const Graphic* = NULL, const ::rtl::OUString& = ::rtl::OUString(), sal_Int64 nAspect = ::com::sun::star::embed::Aspects::MSOLE_CONTENT );
142     sal_Bool            PasteBitmapEx( const Point&, const BitmapEx& );
143     sal_Bool            PasteMetaFile( const Point&, const GDIMetaFile& );
144     sal_Bool            PasteGraphic( const Point& rPos, const Graphic& rGraphic,
145                                     const String& rFile, const String& rFilter );
146     sal_Bool            PasteBookmark( sal_uLong nFormatId,
147                                 const ::com::sun::star::uno::Reference<
148                                     ::com::sun::star::datatransfer::XTransferable >& rxTransferable,
149                                 SCCOL nPosX, SCROW nPosY );
150     sal_Bool            PasteDDE( const ::com::sun::star::uno::Reference<
151                                 ::com::sun::star::datatransfer::XTransferable >& rxTransferable );
152 
153     sal_Bool            ApplyGraphicToObject( SdrObject* pObject, const Graphic& rGraphic );
154 
155     void            InsertBookmark( const String& rDescription, const String& rURL,
156                                     SCCOL nPosX, SCROW nPosY, const String* pTarget = NULL,
157                                     sal_Bool bTryReplace = sal_False );
158     sal_Bool            HasBookmarkAtCursor( SvxHyperlinkItem* pContent );
159 
160     long            DropRequestHdl( Exchange* pExchange );
161     sal_Bool            MoveBlockTo( const ScRange& rSource, const ScAddress& rDestPos,
162                                     sal_Bool bCut, sal_Bool bRecord, sal_Bool bPaint, sal_Bool bApi );
163 
164     sal_Bool            LinkBlock( const ScRange& rSource, const ScAddress& rDestPos, sal_Bool bApi );
165 
166     void            CreateNames( sal_uInt16 nFlags );
167     sal_uInt16          GetCreateNameFlags();
168     void            InsertNameList();
169     sal_Bool            InsertName( const String& rName, const String& rSymbol,
170                                 const String& rType );
171 
172     void            ApplyAttributes( const SfxItemSet* pDialogSet, const SfxItemSet* pOldSet,
173                                         sal_Bool bRecord = sal_True );
174     void            ApplyAttr( const SfxPoolItem& rAttrItem );
175     void            ApplySelectionPattern( const ScPatternAttr& rAttr,
176                                             sal_Bool bRecord = sal_True,
177                                             sal_Bool bCursorOnly = sal_False );
178     void            ApplyPatternLines( const ScPatternAttr& rAttr,
179                                         const SvxBoxItem* pNewOuter,
180                                         const SvxBoxInfoItem* pNewInner, sal_Bool bRecord = sal_True );
181 
182     void            ApplyUserItemSet( const SfxItemSet& rItemSet );
183 
184     const SfxStyleSheet*    GetStyleSheetFromMarked();
185     void                    SetStyleSheetToMarked( SfxStyleSheet* pStyleSheet,
186                                                         sal_Bool bRecord = sal_True );
187     void                    RemoveStyleSheetInUse( const SfxStyleSheetBase* pStyleSheet );
188     void                    UpdateStyleSheetInUse( const SfxStyleSheetBase* pStyleSheet );
189 
190     void            SetNumberFormat( short nFormatType, sal_uLong nAdd = 0 );
191     void            SetNumFmtByStr( const String& rCode );
192     void            ChangeNumFmtDecimals( sal_Bool bIncrement );
193 
194     void            SetConditionalFormat( const ScConditionalFormat& rNew );
195     void            SetValidation( const ScValidationData& rNew );
196 
197     void            ChangeIndent( sal_Bool bIncrement );
198 
199     void            ProtectSheet( SCTAB nTab, const ScTableProtection& rProtect );
200 
201     void            Protect( SCTAB nTab, const String& rPassword );
202     sal_Bool            Unprotect( SCTAB nTab, const String& rPassword );
203 
204     void            DeleteCells( DelCellCmd eCmd, sal_Bool bRecord = sal_True );
205     sal_Bool            InsertCells( InsCellCmd eCmd, sal_Bool bRecord = sal_True, sal_Bool bPartOfPaste = sal_False );
206     void            DeleteMulti( sal_Bool bRows, sal_Bool bRecord = sal_True );
207 
208     void            DeleteContents( sal_uInt16 nFlags, sal_Bool bRecord = sal_True );
209 
210     void            SetWidthOrHeight( sal_Bool bWidth, SCCOLROW nRangeCnt, SCCOLROW* pRanges,
211                                         ScSizeMode eMode, sal_uInt16 nSizeTwips,
212                                         sal_Bool bRecord = sal_True, sal_Bool bPaint = sal_True,
213                                         ScMarkData* pMarkData = NULL );
214     void            SetMarkedWidthOrHeight( sal_Bool bWidth, ScSizeMode eMode, sal_uInt16 nSizeTwips,
215                                         sal_Bool bRecord = sal_True, sal_Bool bPaint = sal_True );
216     void            ShowMarkedColumns( sal_Bool bShow, sal_Bool bRecord = sal_True );
217     void            ShowMarkedRows( sal_Bool bShow, sal_Bool bRecord = sal_True );
218 
219     sal_Bool            AdjustBlockHeight( sal_Bool bPaint = sal_True, ScMarkData* pMarkData = NULL );
220     sal_Bool            AdjustRowHeight( SCROW nStartRow, SCROW nEndRow, sal_Bool bPaint = sal_True );
221 
222     void            ModifyCellSize( ScDirection eDir, sal_Bool bOptimal );
223 
224     SC_DLLPUBLIC void           InsertPageBreak( sal_Bool bColumn, sal_Bool bRecord = sal_True,
225                                         const ScAddress* pPos = NULL,
226                                         sal_Bool bSetModified = sal_True );
227     SC_DLLPUBLIC void           DeletePageBreak( sal_Bool bColumn, sal_Bool bRecord = sal_True,
228                                         const ScAddress* pPos = NULL,
229                                         sal_Bool bSetModified = sal_True );
230 
231     void            RemoveManualBreaks();
232 
233     void            SetPrintZoom(sal_uInt16 nScale, sal_uInt16 nPages);
234     void            AdjustPrintZoom();
235 
236     sal_Bool            TestMergeCells();
237     sal_Bool            TestRemoveMerge();
238 
239     sal_Bool            MergeCells( sal_Bool bApi, sal_Bool& rDoContents, sal_Bool bRecord = sal_True );
240     sal_Bool            RemoveMerge( sal_Bool bRecord = sal_True );
241 
242     void            FillSimple( FillDir eDir, sal_Bool bRecord = sal_True );
243     void            FillSeries( FillDir eDir, FillCmd eCmd, FillDateCmd eDateCmd,
244                                 double fStart, double fStep, double fMax, sal_Bool bRecord = sal_True );
245     void            FillAuto( FillDir eDir, SCCOL nStartCol, SCROW nStartRow,
246                                 SCCOL nEndCol, SCROW nEndRow, sal_uLong nCount, sal_Bool bRecord = sal_True );
247     void            FillCrossDblClick();
248 
249     void            TransliterateText( sal_Int32 nType );
250 
251     ScAutoFormatData* CreateAutoFormatData();
252     void            AutoFormat( sal_uInt16 nFormatNo, sal_Bool bRecord = sal_True );
253 
254     void            SearchAndReplace( const SvxSearchItem* pSearchItem,
255                                         sal_Bool bAddUndo, sal_Bool bIsApi );
256 
257     void            Solve( const ScSolveParam& rParam );
258     void            TabOp( const ScTabOpParam& rParam,  sal_Bool bRecord = sal_True );
259 
260     sal_Bool            InsertTable( const String& rName, SCTAB nTabNr, sal_Bool bRecord = sal_True );
261     sal_Bool            InsertTables(SvStrings *pNames, SCTAB nTab, SCTAB nCount, sal_Bool bRecord = sal_True);
262 
263 
264     sal_Bool            AppendTable( const String& rName, sal_Bool bRecord = sal_True );
265 
266     sal_Bool            DeleteTable( SCTAB nTabNr, sal_Bool bRecord = sal_True );
267     sal_Bool            DeleteTables(const SvShorts &TheTabs, sal_Bool bRecord = sal_True );
268 
269     sal_Bool            RenameTable( const String& rName, SCTAB nTabNr );
270     void            MoveTable( sal_uInt16 nDestDocNo, SCTAB nDestTab, sal_Bool bCopy );
271     void            ImportTables( ScDocShell* pSrcShell,
272                                     SCTAB nCount, const SCTAB* pSrcTabs,
273                                     sal_Bool bLink,SCTAB nTab);
274 
275     bool            SetTabBgColor( const Color& rColor, SCTAB nTabNr );
276     bool            SetTabBgColor( ScUndoTabColorInfo::List& rUndoSetTabBgColorInfoList );
277 
278     void            InsertTableLink( const String& rFile,
279                                         const String& rFilter, const String& rOptions,
280                                         const String& rTabName );
281     void            InsertAreaLink( const String& rFile,
282                                         const String& rFilter, const String& rOptions,
283                                         const String& rSource, sal_uLong nRefresh );
284 
285     void            ShowTable( const String& rName );
286     void            HideTable( SCTAB nTabNr );
287 
288     void            MakeScenario( const String& rName, const String& rComment,
289                                     const Color& rColor, sal_uInt16 nFlags );
290     void            ExtendScenario();
291     void            UseScenario( const String& rName );
292 
293     void            InsertSpecialChar( const String& rStr, const Font& rFont );
294 
295     void            InsertDummyObject();
296     void            InsertOleObject();
297 
298     void            InsertDraw();
299 
300     void            SetSelectionFrameLines( const SvxBorderLine* pLine,
301                                             sal_Bool bColorOnly );
302 
303     void            SetNoteText( const ScAddress& rPos, const String& rNoteText );
304     void            ReplaceNote( const ScAddress& rPos, const String& rNoteText, const String* pAuthor, const String* pDate );
305     void            DoRefConversion( sal_Bool bRecord = sal_True );
306 
307 //UNUSED2008-05  void            DoSpellingChecker( sal_Bool bRecord = sal_True );
308     void            DoHangulHanjaConversion( sal_Bool bRecord = sal_True );
309     void            DoThesaurus( sal_Bool bRecord = sal_True );
310 //UNUSED2008-05  DECL_LINK( SpellError, void * );
311 
312     /** Generic implementation of sheet conversion functions. */
313     void            DoSheetConversion( const ScConversionParam& rParam, sal_Bool bRecord = sal_True );
314 
315     void            SetPrintRanges( sal_Bool bEntireSheet,
316                                     const String* pPrint,
317                                     const String* pRepCol, const String* pRepRow,
318                                     sal_Bool bAddPrint );
319 
320     void            DetectiveAddPred();
321     void            DetectiveDelPred();
322     void            DetectiveAddSucc();
323     void            DetectiveDelSucc();
324     void            DetectiveAddError();
325     void            DetectiveMarkInvalid();
326     void            DetectiveDelAll();
327     void            DetectiveRefresh();
328 
329     void            ShowNote( bool bShow = true );
330     inline void     HideNote() { ShowNote( false ); }
331     void            EditNote();
332 
333     void            ForgetFormatArea()      { bFormatValid = sal_False; }
334     sal_Bool            SelectionEditable( sal_Bool* pOnlyNotBecauseOfMatrix = NULL );
335 
336                                                 // interne Hilfsfunktionen
337 protected:
338     void            UpdateLineAttrs( SvxBorderLine&       rLine,
339                                      const SvxBorderLine* pDestLine,
340                                      const SvxBorderLine* pSrcLine,
341                                      sal_Bool                 bColor );
342 
343 //UNUSED2008-05  void            PaintWidthHeight( sal_Bool bColumns, SCCOLROW nStart, SCCOLROW nEnd );
344 
345 
346 private:
347     void            PasteRTF( SCCOL nCol, SCROW nStartRow,
348                                 const ::com::sun::star::uno::Reference<
349                                         ::com::sun::star::datatransfer::XTransferable >& rxTransferable );
350     bool            PasteMultiRangesFromClip( sal_uInt16 nFlags, ScDocument* pClipDoc, sal_uInt16 nFunction,
351                                               bool bSkipEmpty, bool bTranspos, bool bAsLink, bool bAllowDialogs,
352                                               InsCellCmd eMoveMode, sal_uInt16 nCondFlags, sal_uInt16 nUndoFlags );
353     void            PostPasteFromClip(const ScRange& rPasteRange, const ScMarkData& rMark);
354 
355     sal_uInt16          GetOptimalColWidth( SCCOL nCol, SCTAB nTab, sal_Bool bFormula );
356 
357     void            StartFormatArea();
358     sal_Bool            TestFormatArea( SCCOL nCol, SCROW nRow, SCTAB nTab, sal_Bool bAttrChanged );
359     void            DoAutoAttributes( SCCOL nCol, SCROW nRow, SCTAB nTab,
360                                         sal_Bool bAttrChanged, sal_Bool bAddUndo );
361 };
362 
363 
364 
365 #endif
366 
367