/************************************************************** * * 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_VIEWFUNC_HXX #define SC_VIEWFUNC_HXX #include "tabview.hxx" #include "tabbgcolor.hxx" #ifndef _SVSTDARR_SHORTS #define _SVSTDARR_SHORTS #include #endif #ifndef _SVSTDARR_STRINGS #define _SVSTDARR_STRINGS #include #endif #include #include class ScPatternAttr; class ScAutoFormatData; class SvxSearchItem; class SfxItemSet; class SvxBorderLine; class SvxBoxItem; class SvxBoxInfoItem; class SfxStyleSheetBase; class SfxStyleSheet; class SfxPoolItem; class EditTextObject; struct ScSolveParam; struct ScTabOpParam; class ScPostIt; class ScConditionalFormat; class ScValidationData; class ScConversionParam; class SdrModel; class Graphic; class Exchange; class ScRangeList; class SvxHyperlinkItem; class ScTransferObj; class ScTableProtection; namespace com { namespace sun { namespace star { namespace datatransfer { class XTransferable; } } } } //================================================================== class ScViewFunc : public ScTabView { private: ScAddress aFormatSource; // fuer automatisches Erweitern von Formatierung ScRange aFormatArea; sal_Bool bFormatValid; public: ScViewFunc( Window* pParent, ScDocShell& rDocSh, ScTabViewShell* pViewShell ); //UNUSED2008-05 ScViewFunc( Window* pParent, const ScViewFunc& rViewFunc, ScTabViewShell* pViewShell ); ~ScViewFunc(); const ScPatternAttr* GetSelectionPattern (); void GetSelectionFrame ( SvxBoxItem& rLineOuter, SvxBoxInfoItem& rLineInner ); sal_uInt8 GetSelectionScriptType(); sal_Bool GetAutoSumArea(ScRangeList& rRangeList); void EnterAutoSum(const ScRangeList& rRangeList, sal_Bool bSubTotal); bool AutoSum( const ScRange& rRange, bool bSubTotal, bool bSetCursor, bool bContinue ); String GetAutoSumFormula( const ScRangeList& rRangeList, bool bSubTotal ); void EnterData( SCCOL nCol, SCROW nRow, SCTAB nTab, const String& rString, sal_Bool bRecord = sal_True, const EditTextObject* pData = NULL ); void EnterValue( SCCOL nCol, SCROW nRow, SCTAB nTab, const double& rValue ); void EnterData( SCCOL nCol, SCROW nRow, SCTAB nTab, const EditTextObject* pData, sal_Bool bRecord = sal_True, sal_Bool bTestSimple = sal_False ); void EnterMatrix( const String& rString ); void EnterBlock( const String& rString, const EditTextObject* pData ); void EnterDataAtCursor( const String& rString ); //! nicht benutzt ? SC_DLLPUBLIC void CutToClip( ScDocument* pClipDoc = NULL, sal_Bool bIncludeObjects = sal_False ); SC_DLLPUBLIC sal_Bool CopyToClip( ScDocument* pClipDoc = NULL, sal_Bool bCut = sal_False, sal_Bool bApi = sal_False, sal_Bool bIncludeObjects = sal_False, sal_Bool bStopEdit = sal_True ); ScTransferObj* CopyToTransferable(); SC_DLLPUBLIC sal_Bool PasteFromClip( sal_uInt16 nFlags, ScDocument* pClipDoc, sal_uInt16 nFunction = PASTE_NOFUNC, sal_Bool bSkipEmpty = sal_False, sal_Bool bTranspose = sal_False, sal_Bool bAsLink = sal_False, InsCellCmd eMoveMode = INS_NONE, sal_uInt16 nUndoExtraFlags = IDF_NONE, sal_Bool bAllowDialogs = sal_False ); void FillTab( sal_uInt16 nFlags, sal_uInt16 nFunction, sal_Bool bSkipEmpty, sal_Bool bAsLink ); SC_DLLPUBLIC void PasteFromSystem(); SC_DLLPUBLIC sal_Bool PasteFromSystem( sal_uLong nFormatId, sal_Bool bApi = sal_False ); void PasteFromTransferable( const ::com::sun::star::uno::Reference< ::com::sun::star::datatransfer::XTransferable >& rxTransferable ); void PasteDraw(); void PasteDraw( const Point& rLogicPos, SdrModel* pModel, sal_Bool bGroup = sal_False, sal_Bool bSameDocClipboard = sal_False ); sal_Bool PasteOnDrawObjectLinked( const ::com::sun::star::uno::Reference< ::com::sun::star::datatransfer::XTransferable >& rxTransferable, SdrObject& rHitObj); sal_Bool PasteDataFormat( sal_uLong nFormatId, const ::com::sun::star::uno::Reference< ::com::sun::star::datatransfer::XTransferable >& rxTransferable, SCCOL nPosX, SCROW nPosY, Point* pLogicPos = NULL, sal_Bool bLink = sal_False, sal_Bool bAllowDialogs = sal_False ); sal_Bool PasteFile( const Point&, const String&, sal_Bool bLink=sal_False ); 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 ); sal_Bool PasteBitmapEx( const Point&, const BitmapEx& ); sal_Bool PasteMetaFile( const Point&, const GDIMetaFile& ); sal_Bool PasteGraphic( const Point& rPos, const Graphic& rGraphic, const String& rFile, const String& rFilter ); sal_Bool PasteBookmark( sal_uLong nFormatId, const ::com::sun::star::uno::Reference< ::com::sun::star::datatransfer::XTransferable >& rxTransferable, SCCOL nPosX, SCROW nPosY ); sal_Bool PasteDDE( const ::com::sun::star::uno::Reference< ::com::sun::star::datatransfer::XTransferable >& rxTransferable ); void InsertBookmark( const String& rDescription, const String& rURL, SCCOL nPosX, SCROW nPosY, const String* pTarget = NULL, sal_Bool bTryReplace = sal_False ); sal_Bool HasBookmarkAtCursor( SvxHyperlinkItem* pContent ); long DropRequestHdl( Exchange* pExchange ); sal_Bool MoveBlockTo( const ScRange& rSource, const ScAddress& rDestPos, sal_Bool bCut, sal_Bool bRecord, sal_Bool bPaint, sal_Bool bApi ); sal_Bool LinkBlock( const ScRange& rSource, const ScAddress& rDestPos, sal_Bool bApi ); void CreateNames( sal_uInt16 nFlags ); sal_uInt16 GetCreateNameFlags(); void InsertNameList(); sal_Bool InsertName( const String& rName, const String& rSymbol, const String& rType ); void ApplyAttributes( const SfxItemSet* pDialogSet, const SfxItemSet* pOldSet, sal_Bool bRecord = sal_True ); void ApplyAttr( const SfxPoolItem& rAttrItem ); void ApplySelectionPattern( const ScPatternAttr& rAttr, sal_Bool bRecord = sal_True, sal_Bool bCursorOnly = sal_False ); void ApplyPatternLines( const ScPatternAttr& rAttr, const SvxBoxItem* pNewOuter, const SvxBoxInfoItem* pNewInner, sal_Bool bRecord = sal_True ); void ApplyUserItemSet( const SfxItemSet& rItemSet ); const SfxStyleSheet* GetStyleSheetFromMarked(); void SetStyleSheetToMarked( SfxStyleSheet* pStyleSheet, sal_Bool bRecord = sal_True ); void RemoveStyleSheetInUse( const SfxStyleSheetBase* pStyleSheet ); void UpdateStyleSheetInUse( const SfxStyleSheetBase* pStyleSheet ); void SetNumberFormat( short nFormatType, sal_uLong nAdd = 0 ); void SetNumFmtByStr( const String& rCode ); void ChangeNumFmtDecimals( sal_Bool bIncrement ); void SetConditionalFormat( const ScConditionalFormat& rNew ); void SetValidation( const ScValidationData& rNew ); void ChangeIndent( sal_Bool bIncrement ); void ProtectSheet( SCTAB nTab, const ScTableProtection& rProtect ); void Protect( SCTAB nTab, const String& rPassword ); sal_Bool Unprotect( SCTAB nTab, const String& rPassword ); void DeleteCells( DelCellCmd eCmd, sal_Bool bRecord = sal_True ); sal_Bool InsertCells( InsCellCmd eCmd, sal_Bool bRecord = sal_True, sal_Bool bPartOfPaste = sal_False ); void DeleteMulti( sal_Bool bRows, sal_Bool bRecord = sal_True ); void DeleteContents( sal_uInt16 nFlags, sal_Bool bRecord = sal_True ); void SetWidthOrHeight( sal_Bool bWidth, SCCOLROW nRangeCnt, SCCOLROW* pRanges, ScSizeMode eMode, sal_uInt16 nSizeTwips, sal_Bool bRecord = sal_True, sal_Bool bPaint = sal_True, ScMarkData* pMarkData = NULL ); void SetMarkedWidthOrHeight( sal_Bool bWidth, ScSizeMode eMode, sal_uInt16 nSizeTwips, sal_Bool bRecord = sal_True, sal_Bool bPaint = sal_True ); void ShowMarkedColumns( sal_Bool bShow, sal_Bool bRecord = sal_True ); void ShowMarkedRows( sal_Bool bShow, sal_Bool bRecord = sal_True ); sal_Bool AdjustBlockHeight( sal_Bool bPaint = sal_True, ScMarkData* pMarkData = NULL ); sal_Bool AdjustRowHeight( SCROW nStartRow, SCROW nEndRow, sal_Bool bPaint = sal_True ); void ModifyCellSize( ScDirection eDir, sal_Bool bOptimal ); SC_DLLPUBLIC void InsertPageBreak( sal_Bool bColumn, sal_Bool bRecord = sal_True, const ScAddress* pPos = NULL, sal_Bool bSetModified = sal_True ); SC_DLLPUBLIC void DeletePageBreak( sal_Bool bColumn, sal_Bool bRecord = sal_True, const ScAddress* pPos = NULL, sal_Bool bSetModified = sal_True ); void RemoveManualBreaks(); void SetPrintZoom(sal_uInt16 nScale, sal_uInt16 nPages); void AdjustPrintZoom(); sal_Bool TestMergeCells(); sal_Bool TestRemoveMerge(); sal_Bool MergeCells( sal_Bool bApi, sal_Bool& rDoContents, sal_Bool bRecord = sal_True ); sal_Bool RemoveMerge( sal_Bool bRecord = sal_True ); void FillSimple( FillDir eDir, sal_Bool bRecord = sal_True ); void FillSeries( FillDir eDir, FillCmd eCmd, FillDateCmd eDateCmd, double fStart, double fStep, double fMax, sal_Bool bRecord = sal_True ); void FillAuto( FillDir eDir, SCCOL nStartCol, SCROW nStartRow, SCCOL nEndCol, SCROW nEndRow, sal_uLong nCount, sal_Bool bRecord = sal_True ); void FillCrossDblClick(); void TransliterateText( sal_Int32 nType ); ScAutoFormatData* CreateAutoFormatData(); void AutoFormat( sal_uInt16 nFormatNo, sal_Bool bRecord = sal_True ); // void SearchAndReplace( const SvxSearchItem* pSearchItem, sal_Bool SearchAndReplace( const SvxSearchItem* pSearchItem, sal_Bool bAddUndo, sal_Bool bIsApi ); void Solve( const ScSolveParam& rParam ); void TabOp( const ScTabOpParam& rParam, sal_Bool bRecord = sal_True ); sal_Bool InsertTable( const String& rName, SCTAB nTabNr, sal_Bool bRecord = sal_True ); sal_Bool InsertTables(SvStrings *pNames, SCTAB nTab, SCTAB nCount, sal_Bool bRecord = sal_True); sal_Bool AppendTable( const String& rName, sal_Bool bRecord = sal_True ); sal_Bool DeleteTable( SCTAB nTabNr, sal_Bool bRecord = sal_True ); sal_Bool DeleteTables(const SvShorts &TheTabs, sal_Bool bRecord = sal_True ); sal_Bool RenameTable( const String& rName, SCTAB nTabNr ); void MoveTable( sal_uInt16 nDestDocNo, SCTAB nDestTab, sal_Bool bCopy ); void ImportTables( ScDocShell* pSrcShell, SCTAB nCount, const SCTAB* pSrcTabs, sal_Bool bLink,SCTAB nTab); bool SetTabBgColor( const Color& rColor, SCTAB nTabNr ); bool SetTabBgColor( ScUndoTabColorInfo::List& rUndoSetTabBgColorInfoList ); void InsertTableLink( const String& rFile, const String& rFilter, const String& rOptions, const String& rTabName ); void InsertAreaLink( const String& rFile, const String& rFilter, const String& rOptions, const String& rSource, sal_uLong nRefresh ); void ShowTable( const String& rName ); void HideTable( SCTAB nTabNr ); void MakeScenario( const String& rName, const String& rComment, const Color& rColor, sal_uInt16 nFlags ); void ExtendScenario(); void UseScenario( const String& rName ); void InsertSpecialChar( const String& rStr, const Font& rFont ); void InsertDummyObject(); void InsertOleObject(); void InsertDraw(); void SetSelectionFrameLines( const SvxBorderLine* pLine, sal_Bool bColorOnly ); void SetNoteText( const ScAddress& rPos, const String& rNoteText ); void ReplaceNote( const ScAddress& rPos, const String& rNoteText, const String* pAuthor, const String* pDate ); void DoRefConversion( sal_Bool bRecord = sal_True ); //UNUSED2008-05 void DoSpellingChecker( sal_Bool bRecord = sal_True ); void DoHangulHanjaConversion( sal_Bool bRecord = sal_True ); void DoThesaurus( sal_Bool bRecord = sal_True ); //UNUSED2008-05 DECL_LINK( SpellError, void * ); /** Generic implementation of sheet conversion functions. */ void DoSheetConversion( const ScConversionParam& rParam, sal_Bool bRecord = sal_True ); void SetPrintRanges( sal_Bool bEntireSheet, const String* pPrint, const String* pRepCol, const String* pRepRow, sal_Bool bAddPrint ); void DetectiveAddPred(); void DetectiveDelPred(); void DetectiveAddSucc(); void DetectiveDelSucc(); void DetectiveAddError(); void DetectiveMarkInvalid(); void DetectiveDelAll(); void DetectiveRefresh(); void ShowNote( bool bShow = true ); inline void HideNote() { ShowNote( false ); } void EditNote(); void ForgetFormatArea() { bFormatValid = sal_False; } sal_Bool SelectionEditable( sal_Bool* pOnlyNotBecauseOfMatrix = NULL ); // interne Hilfsfunktionen protected: void UpdateLineAttrs( SvxBorderLine& rLine, const SvxBorderLine* pDestLine, const SvxBorderLine* pSrcLine, sal_Bool bColor ); //UNUSED2008-05 void PaintWidthHeight( sal_Bool bColumns, SCCOLROW nStart, SCCOLROW nEnd ); private: void PasteRTF( SCCOL nCol, SCROW nStartRow, const ::com::sun::star::uno::Reference< ::com::sun::star::datatransfer::XTransferable >& rxTransferable ); bool PasteMultiRangesFromClip( sal_uInt16 nFlags, ScDocument* pClipDoc, sal_uInt16 nFunction, bool bSkipEmpty, bool bTranspos, bool bAsLink, bool bAllowDialogs, InsCellCmd eMoveMode, sal_uInt16 nCondFlags, sal_uInt16 nUndoFlags ); void PostPasteFromClip(const ScRange& rPasteRange, const ScMarkData& rMark); sal_uInt16 GetOptimalColWidth( SCCOL nCol, SCTAB nTab, sal_Bool bFormula ); void StartFormatArea(); sal_Bool TestFormatArea( SCCOL nCol, SCROW nRow, SCTAB nTab, sal_Bool bAttrChanged ); void DoAutoAttributes( SCCOL nCol, SCROW nRow, SCTAB nTab, sal_Bool bAttrChanged, sal_Bool bAddUndo ); }; #endif