| /************************************************************** |
| * |
| * 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 _WRTSH_HXX |
| #define _WRTSH_HXX |
| |
| #include <com/sun/star/embed/XEmbeddedObject.hpp> |
| #include "swdllapi.h" |
| #include <fesh.hxx> |
| #include <sortopt.hxx> |
| #include <swurl.hxx> |
| #include <IMark.hxx> |
| |
| class Window; |
| class OutputDevice; |
| class SbxArray; |
| class SwDoc; |
| class SpellCheck; |
| class SwViewOption; |
| class SwFlyFrmAttrMgr; |
| class SwField; |
| class SwTOXBase; |
| class SdrView; |
| class SwView; |
| class SvGlobalName; |
| class SwInputFieldList; |
| class SwSectionData; |
| class Timer; |
| class SvxMacro; |
| class SwFmtINetFmt; |
| class SvxINetBookmark; |
| class SvxAutoCorrect; |
| class NaviContentBookmark; |
| struct SwCallMouseEvent; |
| class DropEvent; |
| struct ChartSelectionInfo; |
| class SfxStringListItem; |
| class SfxRequest; |
| |
| namespace com { namespace sun { namespace star { namespace util { |
| struct SearchOptions; |
| } } } } |
| |
| |
| typedef sal_Int32 SelectionType; |
| namespace nsSelectionType |
| { |
| const SelectionType SEL_TXT = CNT_TXT; // Text, niemals auch Rahmen 0x0001 |
| const SelectionType SEL_GRF = CNT_GRF; // Grafik 0x0002 |
| const SelectionType SEL_OLE = CNT_OLE; // OLE 0x0010 |
| const SelectionType SEL_FRM = 0x000020; // Rahmen, keine Inhaltsform |
| const SelectionType SEL_NUM = 0x000040; // NumListe |
| const SelectionType SEL_TBL = 0x000080; // Cursor steht in Tabelle |
| const SelectionType SEL_TBL_CELLS = 0x000100; // Tabellenzellen sind selektiert |
| const SelectionType SEL_DRW = 0x000200; // Zeichenobjekte (Rechteck, Kreis...) |
| const SelectionType SEL_DRW_TXT = 0x000400; // Draw-Textobjekte im Editmode |
| const SelectionType SEL_BEZ = 0x000800; // Bezierobjekte editieren |
| const SelectionType SEL_DRW_FORM = 0x001000; // Zeichenobjekte: DB-Forms |
| const SelectionType SEL_FOC_FRM_CTRL = 0x002000; // a form control is focused. Neither set nor evaluated by the SwWrtShell itself, only by it's clients. |
| const SelectionType SEL_MEDIA = 0x004000; // Media object |
| const SelectionType SEL_EXTRUDED_CUSTOMSHAPE = 0x008000; // extruded custom shape |
| const SelectionType SEL_FONTWORK = 0x010000; // fontwork |
| const SelectionType SEL_POSTIT = 0x020000; //annotation |
| } |
| |
| |
| class SW_DLLPUBLIC SwWrtShell: public SwFEShell |
| { |
| private: |
| using SwCrsrShell::Left; |
| using SwCrsrShell::Right; |
| using SwCrsrShell::Up; |
| using SwCrsrShell::Down; |
| using SwCrsrShell::LeftMargin; |
| using SwCrsrShell::RightMargin; |
| using SwCrsrShell::SelectTxtAttr; |
| using SwCrsrShell::GotoPage; |
| using SwFEShell::InsertObject; |
| using SwEditShell::AutoCorrect; |
| using SwCrsrShell::GotoMark; |
| |
| public: |
| |
| using SwEditShell::Insert; |
| |
| typedef long (SwWrtShell::*SELECTFUNC)(const Point *, sal_Bool bProp ); |
| |
| SELECTFUNC fnDrag; |
| SELECTFUNC fnSetCrsr; |
| SELECTFUNC fnEndDrag; |
| SELECTFUNC fnKillSel; |
| |
| // Alle Selektionen aufheben |
| long ResetSelect( const Point *, sal_Bool ); |
| |
| //setzt den Cursorstack nach dem Bewegen mit PageUp/-Down |
| //zurueck, falls ein Stack aufgebaut ist |
| inline void ResetCursorStack(); |
| SelectionType GetSelectionType() const; |
| |
| sal_Bool IsModePushed() const { return 0 != pModeStack; } |
| void PushMode(); |
| void PopMode(); |
| |
| void SttSelect(); |
| void EndSelect(); |
| sal_Bool IsInSelect() const { return bInSelect; } |
| void SetInSelect(sal_Bool bSel = sal_True) { bInSelect = bSel; } |
| // Liegt eine Text- oder Rahmenselektion vor? |
| sal_Bool HasSelection() const { return SwCrsrShell::HasSelection() || |
| IsMultiSelection() || IsSelFrmMode() || IsObjSelected(); } |
| sal_Bool Pop( sal_Bool bOldCrsr = sal_True ); |
| |
| void EnterStdMode(); |
| sal_Bool IsStdMode() const { return !bExtMode && !bAddMode && !bBlockMode; } |
| |
| void EnterExtMode(); |
| void LeaveExtMode(); |
| long ToggleExtMode(); |
| sal_Bool IsExtMode() const { return bExtMode; } |
| |
| void EnterAddMode(); |
| void LeaveAddMode(); |
| long ToggleAddMode(); |
| sal_Bool IsAddMode() const { return bAddMode; } |
| |
| void EnterBlockMode(); |
| void LeaveBlockMode(); |
| long ToggleBlockMode(); |
| sal_Bool IsBlockMode() const { return bBlockMode; } |
| |
| void SetInsMode( sal_Bool bOn = sal_True ); |
| void ToggleInsMode() { SetInsMode( !bIns ); } |
| sal_Bool IsInsMode() const { return bIns; } |
| void SetRedlineModeAndCheckInsMode( sal_uInt16 eMode ); |
| |
| void EnterSelFrmMode(const Point *pStartDrag = 0); |
| void LeaveSelFrmMode(); |
| sal_Bool IsSelFrmMode() const { return bLayoutMode; } |
| // Selektion von Rahmen aufheben |
| void UnSelectFrm(); |
| |
| void Invalidate(); |
| |
| // Tabellenzellen selektieren fuer Bearbeiten von Formeln in der Ribbonbar |
| inline void SelTblCells( const Link &rLink, sal_Bool bMark = sal_True ); |
| inline void EndSelTblCells(); |
| |
| //Wortweisen oder zeilenweisen Selektionsmodus verlassen. Wird |
| //in der Regel in MB-Up gerufen. |
| sal_Bool IsExtSel() const { return bSelWrd || bSelLn; } |
| |
| // erfrage, ob der akt. fnDrag - Pointer auf BeginDrag gesetzt ist |
| // Wird fuer MouseMove gebraucht, um die Bugs 55592/55931 zu umgehen. |
| inline sal_Bool Is_FnDragEQBeginDrag() const; |
| |
| //Basisabfragen |
| sal_Bool IsInWrd() { return IsInWord(); } |
| sal_Bool IsSttWrd() { return IsStartWord(); } |
| sal_Bool IsEndWrd(); |
| sal_Bool IsSttOfPara() const { return IsSttPara(); } |
| sal_Bool IsEndOfPara() const { return IsEndPara(); } |
| |
| //Word bzw. Satz selektieren. |
| sal_Bool SelNearestWrd(); |
| sal_Bool SelWrd (const Point * = 0, sal_Bool bProp=sal_False ); |
| // --> FME 2004-07-30 #i32329# Enhanced selection |
| void SelSentence (const Point * = 0, sal_Bool bProp=sal_False ); |
| void SelPara (const Point * = 0, sal_Bool bProp=sal_False ); |
| // <-- |
| long SelAll(); |
| |
| //Basiscursortravelling |
| typedef sal_Bool (SwWrtShell:: *FNSimpleMove)(); |
| sal_Bool SimpleMove( FNSimpleMove, sal_Bool bSelect ); |
| |
| sal_Bool Left ( sal_uInt16 nMode, sal_Bool bSelect, |
| sal_uInt16 nCount, sal_Bool bBasicCall, sal_Bool bVisual = sal_False ); |
| sal_Bool Right ( sal_uInt16 nMode, sal_Bool bSelect, |
| sal_uInt16 nCount, sal_Bool bBasicCall, sal_Bool bVisual = sal_False ); |
| sal_Bool Up ( sal_Bool bSelect = sal_False, sal_uInt16 nCount = 1, |
| sal_Bool bBasicCall = sal_False ); |
| sal_Bool Down ( sal_Bool bSelect = sal_False, sal_uInt16 nCount = 1, |
| sal_Bool bBasicCall = sal_False ); |
| sal_Bool NxtWrd ( sal_Bool bSelect = sal_False ) { return SimpleMove( &SwWrtShell::_NxtWrd, bSelect ); } |
| sal_Bool PrvWrd ( sal_Bool bSelect = sal_False ) { return SimpleMove( &SwWrtShell::_PrvWrd, bSelect ); } |
| |
| sal_Bool LeftMargin ( sal_Bool bSelect, sal_Bool bBasicCall ); |
| sal_Bool RightMargin( sal_Bool bSelect, sal_Bool bBasicCall ); |
| |
| sal_Bool SttDoc ( sal_Bool bSelect = sal_False ); |
| sal_Bool EndDoc ( sal_Bool bSelect = sal_False ); |
| |
| sal_Bool SttNxtPg ( sal_Bool bSelect = sal_False ); |
| sal_Bool SttPrvPg ( sal_Bool bSelect = sal_False ); |
| sal_Bool EndNxtPg ( sal_Bool bSelect = sal_False ); |
| sal_Bool EndPrvPg ( sal_Bool bSelect = sal_False ); |
| sal_Bool SttPg ( sal_Bool bSelect = sal_False ); |
| sal_Bool EndPg ( sal_Bool bSelect = sal_False ); |
| sal_Bool SttPara ( sal_Bool bSelect = sal_False ); |
| sal_Bool EndPara ( sal_Bool bSelect = sal_False ); |
| sal_Bool FwdPara ( sal_Bool bSelect = sal_False ) |
| { return SimpleMove( &SwWrtShell::_FwdPara, bSelect ); } |
| sal_Bool BwdPara ( sal_Bool bSelect = sal_False ) |
| { return SimpleMove( &SwWrtShell::_BwdPara, bSelect ); } |
| sal_Bool FwdSentence( sal_Bool bSelect = sal_False ) |
| { return SimpleMove( &SwWrtShell::_FwdSentence, bSelect ); } |
| sal_Bool BwdSentence( sal_Bool bSelect = sal_False ) |
| { return SimpleMove( &SwWrtShell::_BwdSentence, bSelect ); } |
| |
| // --> FME 2004-07-30 #i20126# Enhanced table selection |
| sal_Bool SelectTableRowCol( const Point& rPt, const Point* pEnd = 0, bool bRowDrag = false ); |
| // <-- |
| sal_Bool SelectTableRow(); |
| sal_Bool SelectTableCol(); |
| sal_Bool SelectTableCell(); |
| |
| sal_Bool SelectTxtAttr( sal_uInt16 nWhich, const SwTxtAttr* pAttr = 0 ); |
| |
| // Spaltenweise Spruenge |
| sal_Bool StartOfColumn ( sal_Bool bSelect = sal_False ); |
| sal_Bool EndOfColumn ( sal_Bool bSelect = sal_False ); |
| sal_Bool StartOfNextColumn ( sal_Bool bSelect = sal_False ); |
| sal_Bool EndOfNextColumn ( sal_Bool bSelect = sal_False ); |
| sal_Bool StartOfPrevColumn ( sal_Bool bSelect = sal_False ); |
| sal_Bool EndOfPrevColumn ( sal_Bool bSelect = sal_False ); |
| |
| // setze den Cursor auf die Seite "nPage" an den Anfang |
| // zusaetzlich zu der gleichnamigen Implementierung in crsrsh.hxx |
| // werden hier alle bestehenden Selektionen vor dem Setzen des |
| // Cursors aufgehoben |
| sal_Bool GotoPage( sal_uInt16 nPage, sal_Bool bRecord ); |
| |
| //setzen des Cursors; merken der alten Position fuer Zurueckblaettern. |
| DECL_LINK( ExecFlyMac, void * ); |
| |
| sal_Bool PageCrsr(SwTwips lOffset, sal_Bool bSelect); |
| |
| // Felder Update |
| void UpdateInputFlds( SwInputFieldList* pLst = 0 ); |
| |
| void NoEdit(sal_Bool bHideCrsr = sal_True); |
| void Edit(); |
| sal_Bool IsNoEdit() const { return bNoEdit; } |
| |
| sal_Bool IsRetainSelection() const { return mbRetainSelection; } |
| void SetRetainSelection( sal_Bool bRet ) { mbRetainSelection = bRet; } |
| |
| // change current data base and notify |
| void ChgDBData(const SwDBData& SwDBData); |
| |
| // Loeschen |
| long DelToEndOfLine(); |
| long DelToStartOfLine(); |
| long DelLine(); |
| long DelLeft(); |
| |
| // loescht auch Rahmen bzw. setzt den Cursor in den Rahmen, |
| // wenn bDelFrm == sal_False ist |
| long DelRight(); |
| long DelToEndOfPara(); |
| long DelToStartOfPara(); |
| long DelToEndOfSentence(); |
| long DelToStartOfSentence(); |
| long DelNxtWord(); |
| long DelPrvWord(); |
| |
| // Prueft, ob eine Wortselektion vorliegt. |
| // Gemaess den Regeln fuer intelligentes Cut / Paste |
| // werden umgebende Spaces rausgeschnitten. |
| // Liefert Art der Wortselektion zurueck (siehe enum) |
| enum word { |
| NO_WORD = 0, |
| WORD_SPACE_BEFORE = 1, |
| WORD_SPACE_AFTER = 2, |
| WORD_NO_SPACE = 3 |
| }; |
| int IntelligentCut(int nSelectionType, sal_Bool bCut = sal_True); |
| |
| // Editieren |
| void Insert( SwField& rFld ); |
| |
| void Insert(const String &); |
| |
| // Graphic |
| void Insert( const String &rPath, const String &rFilter, |
| const Graphic &, SwFlyFrmAttrMgr * = 0, |
| sal_Bool bRule = sal_False ); |
| |
| void InsertByWord( const String & ); |
| void InsertPageBreak(const String *pPageDesc = 0, sal_uInt16 nPgNum = 0 ); |
| void InsertLineBreak(); |
| void InsertColumnBreak(); |
| void InsertFootnote(const String &, sal_Bool bEndNote = sal_False, sal_Bool bEdit = sal_True ); |
| void SplitNode( sal_Bool bAutoFormat = sal_False, sal_Bool bCheckTableStart = sal_True ); |
| bool CanInsert(); |
| |
| // Verzeichnisse |
| void InsertTableOf(const SwTOXBase& rTOX, const SfxItemSet* pSet = 0); |
| sal_Bool UpdateTableOf(const SwTOXBase& rTOX, const SfxItemSet* pSet = 0); |
| |
| // Numerierung und Bullets |
| /** |
| Turns on numbering or bullets. |
| |
| @param bNum sal_True: turn on numbering |
| sal_False: turn on bullets |
| */ |
| void NumOrBulletOn(sal_Bool bNum); // #i29560# |
| void NumOrBulletOff(); // #i29560# |
| void NumOn(); |
| void BulletOn(); |
| |
| //OLE |
| void InsertObject( /*SvInPlaceObjectRef *pObj, */ // != 0 fuer Clipboard |
| const svt::EmbeddedObjectRef&, |
| SvGlobalName *pName = 0, // != 0 entspr. Object erzeugen. |
| sal_Bool bActivate = sal_True, |
| sal_uInt16 nSlotId = 0); // SlotId fuer Dialog |
| |
| sal_Bool InsertOleObject( const svt::EmbeddedObjectRef& xObj, SwFlyFrmFmt **pFlyFrmFmt = 0 ); |
| void LaunchOLEObj( long nVerb = 0 ); // Server starten |
| sal_Bool IsOLEObj() const { return GetCntType() == CNT_OLE;} |
| virtual void MoveObjectIfActive( svt::EmbeddedObjectRef& xObj, const Point& rOffset ); |
| virtual void CalcAndSetScale( svt::EmbeddedObjectRef& xObj, |
| const SwRect *pFlyPrtRect = 0, |
| const SwRect *pFlyFrmRect = 0, |
| const bool bNoTxtFrmPrtAreaChanged = false ); |
| virtual void ConnectObj( svt::EmbeddedObjectRef& xIPObj, const SwRect &rPrt, |
| const SwRect &rFrm ); |
| |
| // Vorlagen und Formate |
| |
| // enum gibt an, was geschehen soll, wenn das Style nicht gefunden wurde |
| enum GetStyle { GETSTYLE_NOCREATE, // keins anlegen |
| GETSTYLE_CREATESOME, // falls auf PoolId mapt anlegen |
| GETSTYLE_CREATEANY }; // ggfs Standard returnen |
| |
| SwTxtFmtColl* GetParaStyle(const String &rCollName, |
| GetStyle eCreate = GETSTYLE_NOCREATE); |
| SwCharFmt* GetCharStyle(const String &rFmtName, |
| GetStyle eCreate = GETSTYLE_NOCREATE); |
| SwFrmFmt* GetTblStyle(const String &rFmtName); |
| |
| void SetPageStyle(const String &rCollName); |
| |
| String GetCurPageStyle( const sal_Bool bCalcFrm = sal_True ) const; |
| |
| // Aktuelle Vorlage anhand der geltenden Attribute aendern |
| void QuickUpdateStyle(); |
| |
| enum DoType { UNDO, REDO, REPEAT }; |
| |
| void Do( DoType eDoType, sal_uInt16 nCnt = 1 ); |
| String GetDoString( DoType eDoType ) const; |
| String GetRepeatString() const; |
| sal_uInt16 GetDoStrings( DoType eDoType, SfxStringListItem& rStrLstItem ) const; |
| |
| //Suchen oder Ersetzen |
| sal_uLong SearchPattern(const com::sun::star::util::SearchOptions& rSearchOpt, |
| sal_Bool bSearchInNotes, |
| SwDocPositions eStart, SwDocPositions eEnde, |
| FindRanges eFlags = FND_IN_BODY, |
| int bReplace = sal_False ); |
| |
| sal_uLong SearchTempl (const String &rTempl, |
| SwDocPositions eStart, SwDocPositions eEnde, |
| FindRanges eFlags = FND_IN_BODY, |
| const String* pReplTempl = 0 ); |
| |
| sal_uLong SearchAttr (const SfxItemSet& rFindSet, |
| sal_Bool bNoColls, |
| SwDocPositions eStart,SwDocPositions eEnde, |
| FindRanges eFlags = FND_IN_BODY, |
| const com::sun::star::util::SearchOptions* pSearchOpt = 0, |
| const SfxItemSet* pReplaceSet = 0); |
| |
| void AutoCorrect( SvxAutoCorrect& rACorr, sal_Unicode cChar = ' ' ); |
| |
| // Aktion vor Cursorbewegung |
| // Hebt gfs. Selektionen auf, triggert Timer und GCAttr() |
| void MoveCrsr( sal_Bool bWithSelect = sal_False ); |
| |
| // Eingabefelder updaten |
| sal_Bool StartInputFldDlg(SwField*, sal_Bool bNextButton, Window* pParentWin = 0, ByteString* pWindowState = 0); |
| // update DropDown fields |
| sal_Bool StartDropDownFldDlg(SwField*, sal_Bool bNextButton, ByteString* pWindowState = 0); |
| |
| //"Handler" fuer Anederungen an der DrawView - fuer Controls. |
| virtual void DrawSelChanged( ); |
| |
| // springe zum Bookmark und setze die "Selections-Flags" wieder richtig |
| sal_Bool GotoMark( const ::sw::mark::IMark* const pMark ); |
| sal_Bool GotoMark( const ::sw::mark::IMark* const pMark, sal_Bool bSelect, sal_Bool bStart ); |
| sal_Bool GotoMark( const ::rtl::OUString& rName ); |
| sal_Bool GoNextBookmark(); // sal_True, wenn's noch eine gab |
| sal_Bool GoPrevBookmark(); |
| |
| bool GotoFieldmark(::sw::mark::IFieldmark const * const pMark); |
| |
| sal_Bool GotoField( const SwFmtFld& rFld ); |
| |
| // jump to the next / previous hyperlink - inside text and also |
| // on graphics |
| sal_Bool SelectNextPrevHyperlink( sal_Bool bNext = sal_True ); |
| |
| // Zugehoerige SwView ermitteln |
| const SwView& GetView() const { return rView; } |
| SwView& GetView() { return rView; } |
| |
| //Weil es sonst keiner macht, gibt es hier eine ExecMacro() |
| void ExecMacro( const SvxMacro& rMacro, String* pRet = 0, SbxArray* pArgs = 0 ); |
| // rufe ins dunkle Basic/JavaScript |
| sal_uInt16 CallEvent( sal_uInt16 nEvent, const SwCallMouseEvent& rCallEvent, |
| sal_Bool bCheckPtr = sal_False, SbxArray* pArgs = 0, |
| const Link* pCallBack = 0 ); |
| |
| // ein Klick aus das angegebene Feld. Der Cursor steht auf diesem. |
| // Fuehre die vor definierten Aktionen aus. |
| void ClickToField( const SwField& rFld ); |
| void ClickToINetAttr( const SwFmtINetFmt& rItem, sal_uInt16 nFilter = URLLOAD_NOFILTER ); |
| sal_Bool ClickToINetGrf( const Point& rDocPt, sal_uInt16 nFilter = URLLOAD_NOFILTER ); |
| inline sal_Bool IsInClickToEdit() const ; |
| |
| // fall ein URL-Button selektiert ist, dessen URL returnen, ansonsten |
| // einen LeerString |
| sal_Bool GetURLFromButton( String& rURL, String& rDescr ) const; |
| |
| void NavigatorPaste( const NaviContentBookmark& rBkmk, |
| const sal_uInt16 nAction ); |
| |
| virtual void ApplyViewOptions( const SwViewOption &rOpt ); |
| |
| // autom. Update von Vorlagen |
| void AutoUpdateFrame(SwFrmFmt* pFmt, const SfxItemSet& rStyleSet); |
| void AutoUpdatePara(SwTxtFmtColl* pColl, const SfxItemSet& rStyleSet); |
| |
| // Link fuers einfuegen von Bereichen uebers Drag&Drop/Clipboard |
| DECL_STATIC_LINK( SwWrtShell, InsertRegionDialog, SwSectionData* ); |
| |
| |
| //ctoren, der erstere ist eine Art kontrollierter copy ctor fuer weitere |
| //Sichten auf ein Dokument |
| SwWrtShell( SwWrtShell&, Window *pWin, SwView &rShell); |
| SwWrtShell( SwDoc& rDoc, Window *pWin, SwView &rShell, |
| const SwViewOption *pViewOpt = 0); |
| virtual ~SwWrtShell(); |
| |
| sal_Bool TryRemoveIndent(); // #i23725# |
| |
| String GetSelDescr() const; |
| |
| private: |
| |
| SW_DLLPRIVATE void OpenMark(); |
| SW_DLLPRIVATE void CloseMark( sal_Bool bOkFlag ); |
| |
| SW_DLLPRIVATE String GetWrdDelim(); |
| SW_DLLPRIVATE String GetSDelim(); |
| SW_DLLPRIVATE String GetBothDelim(); |
| |
| struct ModeStack |
| { |
| ModeStack *pNext; |
| sal_Bool bAdd, |
| bBlock, |
| bExt, |
| bIns; |
| ModeStack(ModeStack *pNextMode, sal_Bool _bIns, sal_Bool _bExt, sal_Bool _bAdd, sal_Bool _bBlock): |
| pNext(pNextMode), |
| bAdd(_bAdd), |
| bBlock(_bBlock), |
| bExt(_bExt), |
| bIns(_bIns) |
| {} |
| } *pModeStack; |
| |
| // Cursor bei PageUp / -Down mitnehmen |
| enum PageMove |
| { |
| MV_NO, |
| MV_PAGE_UP, |
| MV_PAGE_DOWN |
| } ePageMove; |
| |
| struct CrsrStack |
| { |
| Point aDocPos; |
| CrsrStack *pNext; |
| sal_Bool bValidCurPos : 1; |
| sal_Bool bIsFrmSel : 1; |
| SwTwips lOffset; |
| |
| CrsrStack( sal_Bool bValid, sal_Bool bFrmSel, const Point &rDocPos, |
| SwTwips lOff, CrsrStack *pN ) |
| : aDocPos(rDocPos), |
| pNext(pN), |
| bValidCurPos( bValid ), |
| bIsFrmSel( bFrmSel ), |
| lOffset(lOff) |
| { |
| |
| |
| } |
| |
| } *pCrsrStack; |
| |
| SwView &rView; |
| |
| Point aDest; |
| sal_Bool bDestOnStack; |
| sal_Bool HasCrsrStack() const { return 0 != pCrsrStack; } |
| SW_DLLPRIVATE sal_Bool PushCrsr(SwTwips lOffset, sal_Bool bSelect); |
| SW_DLLPRIVATE sal_Bool PopCrsr(sal_Bool bUpdate, sal_Bool bSelect = sal_False); |
| |
| // ENDE Cursor bei PageUp / -Down mitnehmen |
| SW_DLLPRIVATE sal_Bool _SttWrd(); |
| SW_DLLPRIVATE sal_Bool _EndWrd(); |
| SW_DLLPRIVATE sal_Bool _NxtWrd(); |
| SW_DLLPRIVATE sal_Bool _PrvWrd(); |
| // --> OD 2008-08-06 #i92468# |
| SW_DLLPRIVATE sal_Bool _NxtWrdForDelete(); |
| SW_DLLPRIVATE sal_Bool _PrvWrdForDelete(); |
| // <-- |
| SW_DLLPRIVATE sal_Bool _FwdSentence(); |
| SW_DLLPRIVATE sal_Bool _BwdSentence(); |
| sal_Bool _FwdPara(); |
| SW_DLLPRIVATE sal_Bool _BwdPara(); |
| |
| // Selektionen |
| sal_Bool bIns :1; |
| sal_Bool bInSelect :1; |
| sal_Bool bExtMode :1; |
| sal_Bool bAddMode :1; |
| sal_Bool bBlockMode :1; |
| sal_Bool bLayoutMode :1; |
| sal_Bool bNoEdit :1; |
| sal_Bool bCopy :1; |
| sal_Bool bSelWrd :1; |
| sal_Bool bSelLn :1; |
| sal_Bool bIsInClickToEdit:1; |
| sal_Bool bClearMark :1; // Selektion fuer ChartAutoPilot nicht loeschen |
| sal_Bool mbRetainSelection :1; // Do not remove selections |
| |
| Point aStart; |
| Link aSelTblLink; |
| |
| SELECTFUNC fnLeaveSelect; |
| |
| //setzt den Cursorstack nach dem Bewegen mit PageUp/-Down zurueck. |
| SW_DLLPRIVATE void _ResetCursorStack(); |
| |
| SW_DLLPRIVATE void SttDragDrop(Timer *); |
| |
| using SwCrsrShell::SetCrsr; |
| SW_DLLPRIVATE long SetCrsr(const Point *, sal_Bool bProp=sal_False ); |
| |
| SW_DLLPRIVATE long SetCrsrKillSel(const Point *, sal_Bool bProp=sal_False ); |
| |
| SW_DLLPRIVATE long StdSelect(const Point *, sal_Bool bProp=sal_False ); |
| SW_DLLPRIVATE long BeginDrag(const Point *, sal_Bool bProp=sal_False ); |
| SW_DLLPRIVATE long Drag(const Point *, sal_Bool bProp=sal_False ); |
| SW_DLLPRIVATE long EndDrag(const Point *, sal_Bool bProp=sal_False ); |
| |
| SW_DLLPRIVATE long ExtSelWrd(const Point *, sal_Bool bProp=sal_False ); |
| SW_DLLPRIVATE long ExtSelLn(const Point *, sal_Bool bProp=sal_False ); |
| |
| //Verschieben von Text aus Drag and Drop; Point ist |
| //Destination fuer alle Selektionen. |
| SW_DLLPRIVATE long MoveText(const Point *, sal_Bool bProp=sal_False ); |
| |
| SW_DLLPRIVATE long BeginFrmDrag(const Point *, sal_Bool bProp=sal_False ); |
| |
| //nach SSize/Move eines Frames Update; Point ist Destination. |
| SW_DLLPRIVATE long UpdateLayoutFrm(const Point *, sal_Bool bProp=sal_False ); |
| |
| SW_DLLPRIVATE long SttLeaveSelect(const Point *, sal_Bool bProp=sal_False ); |
| SW_DLLPRIVATE long AddLeaveSelect(const Point *, sal_Bool bProp=sal_False ); |
| SW_DLLPRIVATE long Ignore(const Point *, sal_Bool bProp=sal_False ); |
| |
| SW_DLLPRIVATE void LeaveExtSel() { bSelWrd = bSelLn = sal_False;} |
| SW_DLLPRIVATE bool _CanInsert(); |
| |
| SW_DLLPRIVATE sal_Bool GoStart(sal_Bool KeepArea = sal_False, sal_Bool * = 0, |
| sal_Bool bSelect = sal_False, sal_Bool bDontMoveRegion = sal_False); |
| SW_DLLPRIVATE sal_Bool GoEnd(sal_Bool KeepArea = sal_False, sal_Bool * = 0); |
| |
| enum BookMarkMove |
| { |
| BOOKMARK_INDEX, |
| BOOKMARK_NEXT, |
| BOOKMARK_PREV, |
| BOOKMARK_LAST_LAST_ENTRY |
| }; |
| |
| SW_DLLPRIVATE sal_Bool MoveBookMark(BookMarkMove eFuncId, const ::sw::mark::IMark* const pMark=NULL); |
| }; |
| |
| inline void SwWrtShell::ResetCursorStack() |
| { |
| if ( HasCrsrStack() ) |
| _ResetCursorStack(); |
| } |
| |
| inline void SwWrtShell::SelTblCells(const Link &rLink, sal_Bool bMark ) |
| { |
| SetSelTblCells( sal_True ); |
| bClearMark = bMark; |
| aSelTblLink = rLink; |
| } |
| inline void SwWrtShell::EndSelTblCells() |
| { |
| SetSelTblCells( sal_False ); |
| bClearMark = sal_True; |
| } |
| |
| inline sal_Bool SwWrtShell::IsInClickToEdit() const { return bIsInClickToEdit; } |
| |
| inline sal_Bool SwWrtShell::Is_FnDragEQBeginDrag() const |
| { |
| #ifdef GCC |
| SELECTFUNC fnTmp = &SwWrtShell::BeginDrag; |
| return fnDrag == fnTmp; |
| #else |
| return sal::static_int_cast< sal_Bool >(fnDrag == &SwWrtShell::BeginDrag); |
| #endif |
| } |
| |
| #endif |