xref: /aoo41x/main/sc/source/ui/inc/tabview.hxx (revision 38d50f7b)
1*38d50f7bSAndrew Rist /**************************************************************
2cdf0e10cSrcweir  *
3*38d50f7bSAndrew Rist  * Licensed to the Apache Software Foundation (ASF) under one
4*38d50f7bSAndrew Rist  * or more contributor license agreements.  See the NOTICE file
5*38d50f7bSAndrew Rist  * distributed with this work for additional information
6*38d50f7bSAndrew Rist  * regarding copyright ownership.  The ASF licenses this file
7*38d50f7bSAndrew Rist  * to you under the Apache License, Version 2.0 (the
8*38d50f7bSAndrew Rist  * "License"); you may not use this file except in compliance
9*38d50f7bSAndrew Rist  * with the License.  You may obtain a copy of the License at
10*38d50f7bSAndrew Rist  *
11*38d50f7bSAndrew Rist  *   http://www.apache.org/licenses/LICENSE-2.0
12*38d50f7bSAndrew Rist  *
13*38d50f7bSAndrew Rist  * Unless required by applicable law or agreed to in writing,
14*38d50f7bSAndrew Rist  * software distributed under the License is distributed on an
15*38d50f7bSAndrew Rist  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*38d50f7bSAndrew Rist  * KIND, either express or implied.  See the License for the
17*38d50f7bSAndrew Rist  * specific language governing permissions and limitations
18*38d50f7bSAndrew Rist  * under the License.
19*38d50f7bSAndrew Rist  *
20*38d50f7bSAndrew Rist  *************************************************************/
21*38d50f7bSAndrew Rist 
22*38d50f7bSAndrew Rist 
23cdf0e10cSrcweir #ifndef SC_TABVIEW_HXX
24cdf0e10cSrcweir #define SC_TABVIEW_HXX
25cdf0e10cSrcweir 
26cdf0e10cSrcweir #include <vcl/scrbar.hxx>
27cdf0e10cSrcweir 
28cdf0e10cSrcweir //REMOVE	#ifndef SO2_DECL_SVINPLACECLIENT_DEFINED
29cdf0e10cSrcweir //REMOVE	#define SO2_DECL_SVINPLACECLIENT_DEFINED
30cdf0e10cSrcweir //REMOVE	SO2_DECL_REF(SvInPlaceClient)
31cdf0e10cSrcweir //REMOVE	#endif
32cdf0e10cSrcweir 
33cdf0e10cSrcweir #include <sfx2/ipclient.hxx>
34cdf0e10cSrcweir 
35cdf0e10cSrcweir #include "viewutil.hxx"
36cdf0e10cSrcweir #include "select.hxx"
37cdf0e10cSrcweir 
38cdf0e10cSrcweir class ScEditEngineDefaulter;
39cdf0e10cSrcweir class ScGridWindow;
40cdf0e10cSrcweir class ScOutlineWindow;
41cdf0e10cSrcweir class ScRowBar;
42cdf0e10cSrcweir class ScColBar;
43cdf0e10cSrcweir class ScTabControl;
44cdf0e10cSrcweir class ScTabViewShell;
45cdf0e10cSrcweir class SfxPrinter;
46cdf0e10cSrcweir class ScDrawView;
47cdf0e10cSrcweir class SvBorder;
48cdf0e10cSrcweir class FuPoor;
49cdf0e10cSrcweir class Splitter;
50cdf0e10cSrcweir class ScTabSplitter;
51cdf0e10cSrcweir class SdrView;
52cdf0e10cSrcweir class SdrObject;
53cdf0e10cSrcweir class ScHintWindow;
54cdf0e10cSrcweir class ScPageBreakData;
55cdf0e10cSrcweir class ScHighlightRanges;
56cdf0e10cSrcweir struct ChartSelectionInfo;
57cdf0e10cSrcweir class SdrHdlList;
58cdf0e10cSrcweir 
59cdf0e10cSrcweir namespace com { namespace sun { namespace star {
60cdf0e10cSrcweir namespace chart2 { namespace data {
61cdf0e10cSrcweir     struct HighlightedRange;
62cdf0e10cSrcweir }}}}}
63cdf0e10cSrcweir 
64cdf0e10cSrcweir #define	SPLIT_HANDLE_SIZE	3
65cdf0e10cSrcweir #define SC_FORCEMODE_NONE	0xff
66cdf0e10cSrcweir 
67cdf0e10cSrcweir // ---------------------------------------------------------------------------
68cdf0e10cSrcweir //		Hilfs - Fenster
69cdf0e10cSrcweir 
70cdf0e10cSrcweir class ScCornerButton : public Window
71cdf0e10cSrcweir {
72cdf0e10cSrcweir private:
73cdf0e10cSrcweir 	ScViewData*		pViewData;
74cdf0e10cSrcweir 	sal_Bool			bAdd;
75cdf0e10cSrcweir 
76cdf0e10cSrcweir protected:
77cdf0e10cSrcweir 	virtual void	Paint( const Rectangle& rRect );
78cdf0e10cSrcweir 	virtual void	Resize();
79cdf0e10cSrcweir 	virtual void	MouseButtonDown( const MouseEvent& rMEvt );
80cdf0e10cSrcweir public:
81cdf0e10cSrcweir 					ScCornerButton( Window* pParent, ScViewData* pData, sal_Bool bAdditional );
82cdf0e10cSrcweir 					~ScCornerButton();
83cdf0e10cSrcweir 
84cdf0e10cSrcweir 	virtual	void	StateChanged( StateChangedType nType );
85cdf0e10cSrcweir 	virtual	void	DataChanged( const DataChangedEvent& rDCEvt );
86cdf0e10cSrcweir };
87cdf0e10cSrcweir 
88cdf0e10cSrcweir 
89cdf0e10cSrcweir // ---------------------------------------------------------------------------
90cdf0e10cSrcweir 
91cdf0e10cSrcweir class ScTabView
92cdf0e10cSrcweir {
93cdf0e10cSrcweir private:
94cdf0e10cSrcweir 	Window*				pFrameWin;				// als erstes !!!
95cdf0e10cSrcweir 	ScViewData			aViewData;				// muss ganz vorne stehen !
96cdf0e10cSrcweir 
97cdf0e10cSrcweir 	ScViewSelectionEngine*	pSelEngine;
98cdf0e10cSrcweir 	ScViewFunctionSet		aFunctionSet;
99cdf0e10cSrcweir 
100cdf0e10cSrcweir 	ScHeaderSelectionEngine* pHdrSelEng;
101cdf0e10cSrcweir 	ScHeaderFunctionSet		 aHdrFunc;
102cdf0e10cSrcweir 
103cdf0e10cSrcweir     SfxInPlaceClient*   pIPClient;
104cdf0e10cSrcweir 
105cdf0e10cSrcweir 	ScDrawView*			pDrawView;
106cdf0e10cSrcweir 
107cdf0e10cSrcweir 	Size				aFrameSize;				// wie bei DoResize uebergeben
108cdf0e10cSrcweir 	Point				aBorderPos;
109cdf0e10cSrcweir 
110cdf0e10cSrcweir 	sal_Bool				bDrawSelMode;			// nur Zeichenobjekte selektieren ?
111cdf0e10cSrcweir 
112cdf0e10cSrcweir 	FuPoor* 			pDrawActual;
113cdf0e10cSrcweir 	FuPoor*				pDrawOld;
114cdf0e10cSrcweir 
115cdf0e10cSrcweir 	ScGridWindow*		pGridWin[4];
116cdf0e10cSrcweir 	ScColBar*			pColBar[2];
117cdf0e10cSrcweir 	ScRowBar*			pRowBar[2];
118cdf0e10cSrcweir 	ScOutlineWindow*	pColOutline[2];
119cdf0e10cSrcweir 	ScOutlineWindow*	pRowOutline[2];
120cdf0e10cSrcweir 	ScTabSplitter*		pHSplitter;
121cdf0e10cSrcweir 	ScTabSplitter*		pVSplitter;
122cdf0e10cSrcweir 	ScTabControl*		pTabControl;
123cdf0e10cSrcweir 	ScrollBar			aVScrollTop;
124cdf0e10cSrcweir 	ScrollBar			aVScrollBottom;			// anfangs sichtbar
125cdf0e10cSrcweir 	ScrollBar			aHScrollLeft;			// anfangs sichtbar
126cdf0e10cSrcweir 	ScrollBar			aHScrollRight;
127cdf0e10cSrcweir 	ScCornerButton		aCornerButton;
128cdf0e10cSrcweir 	ScCornerButton		aTopButton;
129cdf0e10cSrcweir 	ScrollBarBox		aScrollBarBox;
130cdf0e10cSrcweir 
131cdf0e10cSrcweir 	ScHintWindow*		pInputHintWindow;		// Eingabemeldung bei Gueltigkeit
132cdf0e10cSrcweir 
133cdf0e10cSrcweir 	ScPageBreakData*	pPageBreakData;			// fuer Seitenumbruch-Modus
134cdf0e10cSrcweir 	ScHighlightRanges*	pHighlightRanges;
135cdf0e10cSrcweir 
136cdf0e10cSrcweir     ScDocument*         pBrushDocument;         // cell formats for format paint brush
137cdf0e10cSrcweir     SfxItemSet*         pDrawBrushSet;          // drawing object attributes for paint brush
138cdf0e10cSrcweir     sal_Bool                bLockPaintBrush;        // keep for more than one use?
139cdf0e10cSrcweir 
140cdf0e10cSrcweir 	Timer				aScrollTimer;
141cdf0e10cSrcweir 	ScGridWindow*		pTimerWindow;
142cdf0e10cSrcweir 	MouseEvent			aTimerMEvt;
143cdf0e10cSrcweir 
144cdf0e10cSrcweir 	sal_uLong				nTipVisible;
145cdf0e10cSrcweir 
146cdf0e10cSrcweir 	sal_Bool				bDragging;				// fuer Scrollbars
147cdf0e10cSrcweir 	long				nPrevDragPos;
148cdf0e10cSrcweir 
149cdf0e10cSrcweir 	sal_Bool				bIsBlockMode;           // Block markieren
150cdf0e10cSrcweir 	sal_Bool				bBlockNeg;				// wird Markierung aufgehoben?
151cdf0e10cSrcweir 	sal_Bool				bBlockCols;				// werden ganze Spalten markiert?
152cdf0e10cSrcweir 	sal_Bool				bBlockRows;				// werden ganze Zeilen markiert?
153cdf0e10cSrcweir 
154cdf0e10cSrcweir 	SCCOL				nBlockStartX;
155cdf0e10cSrcweir     SCCOL               nBlockStartXOrig;
156cdf0e10cSrcweir 	SCCOL				nBlockEndX;
157cdf0e10cSrcweir 
158cdf0e10cSrcweir 	SCROW				nBlockStartY;
159cdf0e10cSrcweir     SCROW               nBlockStartYOrig;
160cdf0e10cSrcweir 	SCROW				nBlockEndY;
161cdf0e10cSrcweir 
162cdf0e10cSrcweir 	SCTAB				nBlockStartZ;
163cdf0e10cSrcweir 	SCTAB				nBlockEndZ;
164cdf0e10cSrcweir 
165cdf0e10cSrcweir     SCCOL               nOldCurX;
166cdf0e10cSrcweir     SCROW               nOldCurY;
167cdf0e10cSrcweir 
168cdf0e10cSrcweir     double              mfPendingTabBarWidth;       // Tab bar width relative to frame window width.
169cdf0e10cSrcweir 
170cdf0e10cSrcweir 	sal_Bool				bMinimized;
171cdf0e10cSrcweir 	sal_Bool				bInUpdateHeader;
172cdf0e10cSrcweir 	sal_Bool				bInActivatePart;
173cdf0e10cSrcweir 	sal_Bool				bInZoomUpdate;
174cdf0e10cSrcweir 	sal_Bool				bMoveIsShift;
175cdf0e10cSrcweir 	sal_Bool				bNewStartIfMarking;
176cdf0e10cSrcweir 
177cdf0e10cSrcweir 	void			Init();
178cdf0e10cSrcweir 
179cdf0e10cSrcweir 	void			DoAddWin( ScGridWindow* pWin );
180cdf0e10cSrcweir 
181cdf0e10cSrcweir 	void			InitScrollBar( ScrollBar& rScrollBar, long nMaxVal );
182cdf0e10cSrcweir 	DECL_LINK(		ScrollHdl, ScrollBar* );
183cdf0e10cSrcweir 	DECL_LINK(		EndScrollHdl, ScrollBar* );
184cdf0e10cSrcweir 
185cdf0e10cSrcweir 	DECL_LINK(		SplitHdl, Splitter* );
186cdf0e10cSrcweir 	void			DoHSplit(long nSplitPos);
187cdf0e10cSrcweir 	void			DoVSplit(long nSplitPos);
188cdf0e10cSrcweir 
189cdf0e10cSrcweir 	DECL_LINK(		TimerHdl, Timer* );
190cdf0e10cSrcweir 
191cdf0e10cSrcweir 	void			UpdateVarZoom();
192cdf0e10cSrcweir 
193cdf0e10cSrcweir     void            UpdateVisibleRange();
194cdf0e10cSrcweir 
195cdf0e10cSrcweir 	static void		SetScrollBar( ScrollBar& rScroll, long nRangeMax, long nVisible, long nPos, sal_Bool bLayoutRTL );
196cdf0e10cSrcweir 	static long		GetScrollBarPos( ScrollBar& rScroll, sal_Bool bLayoutRTL );
197cdf0e10cSrcweir 
198cdf0e10cSrcweir protected:
199cdf0e10cSrcweir 	void			UpdateHeaderWidth( const ScVSplitPos* pWhich = NULL,
200cdf0e10cSrcweir 										const SCROW* pPosY = NULL );
201cdf0e10cSrcweir 
202cdf0e10cSrcweir 	void			HideTip();
203cdf0e10cSrcweir 	void			ShowRefTip();
204cdf0e10cSrcweir 
205cdf0e10cSrcweir 	void			ZoomChanged();
206cdf0e10cSrcweir 	void			UpdateShow();
207cdf0e10cSrcweir 	void			GetBorderSize( SvBorder& rBorder, const Size& rSize );
208cdf0e10cSrcweir 
209cdf0e10cSrcweir 	void			ResetDrawDragMode();
210cdf0e10cSrcweir 	sal_Bool			IsDrawTextEdit() const;
211cdf0e10cSrcweir 	void			DrawEnableAnim(sal_Bool bSet);
212cdf0e10cSrcweir 	//HMHvoid			DrawShowMarkHdl(sal_Bool bShow);
213cdf0e10cSrcweir 
214cdf0e10cSrcweir 	void			MakeDrawView( sal_uInt8 nForceDesignMode = SC_FORCEMODE_NONE );
215cdf0e10cSrcweir 
216cdf0e10cSrcweir 	void			HideNoteMarker();
217cdf0e10cSrcweir 
218cdf0e10cSrcweir 	void			UpdateIMap( SdrObject* pObj );
219cdf0e10cSrcweir 
220cdf0e10cSrcweir public:
221cdf0e10cSrcweir 					ScTabView( Window* pParent, ScDocShell& rDocSh, ScTabViewShell* pViewShell );
222cdf0e10cSrcweir //UNUSED2009-05 	ScTabView( Window* pParent, const ScTabView& rScTabView, ScTabViewShell* pViewShell );
223cdf0e10cSrcweir 					~ScTabView();
224cdf0e10cSrcweir 
225cdf0e10cSrcweir 	void			MakeDrawLayer();
226cdf0e10cSrcweir 
227cdf0e10cSrcweir 	void			HideListBox();
228cdf0e10cSrcweir 
229cdf0e10cSrcweir 	sal_Bool			HasHintWindow() const	{ return pInputHintWindow != NULL; }
230cdf0e10cSrcweir 	void			RemoveHintWindow();
231cdf0e10cSrcweir 	void			TestHintWindow();
232cdf0e10cSrcweir 
233cdf0e10cSrcweir 
234cdf0e10cSrcweir 	DECL_LINK(		TabBarResize, void* );
235cdf0e10cSrcweir     /** Sets an absolute tab bar width (in pixels). */
236cdf0e10cSrcweir 	void			SetTabBarWidth( long nNewWidth );
237cdf0e10cSrcweir     /** Sets a relative tab bar width.
238cdf0e10cSrcweir         @param fRelTabBarWidth  Tab bar width relative to frame window width (0.0 ... 1.0). */
239cdf0e10cSrcweir     void            SetRelTabBarWidth( double fRelTabBarWidth );
240cdf0e10cSrcweir     /** Sets a relative tab bar width. Tab bar is resized again in next DoResize().
241cdf0e10cSrcweir         @param fRelTabBarWidth  Tab bar width relative to frame window width (0.0 ... 1.0). */
242cdf0e10cSrcweir     void            SetPendingRelTabBarWidth( double fRelTabBarWidth );
243cdf0e10cSrcweir     /** Returns the current tab bar width in pixels. */
244cdf0e10cSrcweir     long            GetTabBarWidth() const;
245cdf0e10cSrcweir     /** Returns the current tab bar width relative to the frame window width (0.0 ... 1.0). */
246cdf0e10cSrcweir     double          GetRelTabBarWidth() const;
247cdf0e10cSrcweir     /** Returns the pending tab bar width relative to the frame window width (0.0 ... 1.0). */
248cdf0e10cSrcweir     double          GetPendingRelTabBarWidth() const;
249cdf0e10cSrcweir 
250cdf0e10cSrcweir 	void			DoResize( const Point& rOffset, const Size& rSize, sal_Bool bInner = sal_False );
251cdf0e10cSrcweir 	void			RepeatResize( sal_Bool bUpdateFix = sal_True );
252cdf0e10cSrcweir 	void			UpdateFixPos();
253cdf0e10cSrcweir 	Point			GetGridOffset() const;
254cdf0e10cSrcweir 
255cdf0e10cSrcweir 	sal_Bool			IsDrawSelMode() const 		{ return bDrawSelMode; }
256cdf0e10cSrcweir 	void			SetDrawSelMode(sal_Bool bNew)	{ bDrawSelMode = bNew; }
257cdf0e10cSrcweir 
258cdf0e10cSrcweir 	void			SetDrawFuncPtr(FuPoor* pFuncPtr)	{ pDrawActual = pFuncPtr; }
259cdf0e10cSrcweir 	void			SetDrawFuncOldPtr(FuPoor* pFuncPtr)	{ pDrawOld = pFuncPtr; }
260cdf0e10cSrcweir 	FuPoor*			GetDrawFuncPtr()					{ return pDrawActual; }
261cdf0e10cSrcweir 	FuPoor*			GetDrawFuncOldPtr()					{ return pDrawOld; }
262cdf0e10cSrcweir 
263cdf0e10cSrcweir 	void			DrawDeselectAll();
264cdf0e10cSrcweir 	void			DrawMarkListHasChanged();
265cdf0e10cSrcweir 	void			UpdateAnchorHandles();
266cdf0e10cSrcweir //UNUSED2008-05  String          GetSelectedChartName() const;
267cdf0e10cSrcweir 
268cdf0e10cSrcweir 	ScPageBreakData* GetPageBreakData()		{ return pPageBreakData; }
269cdf0e10cSrcweir 	ScHighlightRanges* GetHighlightRanges()	{ return pHighlightRanges; }
270cdf0e10cSrcweir 
271cdf0e10cSrcweir 	void			UpdatePageBreakData( sal_Bool bForcePaint = sal_False );
272cdf0e10cSrcweir 
273cdf0e10cSrcweir 	void			DrawMarkRect( const Rectangle& rRect );
274cdf0e10cSrcweir 
275cdf0e10cSrcweir 	ScViewData*			GetViewData() 		{ return &aViewData; }
276cdf0e10cSrcweir 	const ScViewData*	GetViewData() const	{ return &aViewData; }
277cdf0e10cSrcweir 
278cdf0e10cSrcweir 	ScViewFunctionSet*		GetFunctionSet()	{ return &aFunctionSet; }
279cdf0e10cSrcweir 	ScViewSelectionEngine*	GetSelEngine()		{ return pSelEngine; }
280cdf0e10cSrcweir 
281cdf0e10cSrcweir 	sal_Bool			SelMouseButtonDown( const MouseEvent& rMEvt );
282cdf0e10cSrcweir 
283cdf0e10cSrcweir 	ScDrawView*		GetScDrawView()			{ return pDrawView; }
284cdf0e10cSrcweir 	SdrView*		GetSdrView();			// gegen CLOKs
285cdf0e10cSrcweir 
286cdf0e10cSrcweir 	sal_Bool			IsMinimized() const		{ return bMinimized; }
287cdf0e10cSrcweir 
288cdf0e10cSrcweir     // bSameTabButMoved = true if the same sheet as before is activated, used after moving/copying/inserting/deleting a sheet
289cdf0e10cSrcweir 	void			TabChanged( bool bSameTabButMoved = false );
290cdf0e10cSrcweir 	void			SetZoom( const Fraction& rNewX, const Fraction& rNewY, sal_Bool bAll );
291cdf0e10cSrcweir 	SC_DLLPUBLIC void            RefreshZoom();
292cdf0e10cSrcweir 	void			SetPagebreakMode( sal_Bool bSet );
293cdf0e10cSrcweir 
294cdf0e10cSrcweir 	void			UpdateLayerLocks();
295cdf0e10cSrcweir 
296cdf0e10cSrcweir 	void			UpdateDrawTextOutliner();
297cdf0e10cSrcweir 	void			DigitLanguageChanged();
298cdf0e10cSrcweir 
299cdf0e10cSrcweir 	void			UpdateInputLine();
300cdf0e10cSrcweir 
301cdf0e10cSrcweir 	void			InitRefMode( SCCOL nCurX, SCROW nCurY, SCTAB nCurZ, ScRefType eType,
302cdf0e10cSrcweir 									sal_Bool bPaint = sal_True );
303cdf0e10cSrcweir 	void			DoneRefMode( sal_Bool bContinue = sal_False );
304cdf0e10cSrcweir 	void			UpdateRef( SCCOL nCurX, SCROW nCurY, SCTAB nCurZ );
305cdf0e10cSrcweir 	void			StopRefMode();
306cdf0e10cSrcweir 
307cdf0e10cSrcweir //UNUSED2008-05  void            EndSelection();
308cdf0e10cSrcweir 	void			StopMarking();
309cdf0e10cSrcweir 	void			FakeButtonUp( ScSplitPos eWhich );
310cdf0e10cSrcweir 
311cdf0e10cSrcweir 	Window*			GetActiveWin();
312cdf0e10cSrcweir 	Window*			GetWindowByPos( ScSplitPos ePos );
313cdf0e10cSrcweir 
314cdf0e10cSrcweir 	ScSplitPos		FindWindow( Window* pWindow ) const;
315cdf0e10cSrcweir 
316cdf0e10cSrcweir 	void			SetActivePointer( const Pointer& rPointer );
317cdf0e10cSrcweir //UNUSED2008-05  void            SetActivePointer( const ResId& rId );
318cdf0e10cSrcweir 
319cdf0e10cSrcweir 	void			ActiveGrabFocus();
320cdf0e10cSrcweir //UNUSED2008-05  void            ActiveCaptureMouse();
321cdf0e10cSrcweir //UNUSED2008-05  void			ActiveReleaseMouse();
322cdf0e10cSrcweir //UNUSED2008-05  Point           ActivePixelToLogic( const Point& rDevicePoint );
323cdf0e10cSrcweir 
324cdf0e10cSrcweir 	void			ClickCursor( SCCOL nPosX, SCROW nPosY, sal_Bool bControl );
325cdf0e10cSrcweir 
326cdf0e10cSrcweir 	SC_DLLPUBLIC void			SetCursor( SCCOL nPosX, SCROW nPosY, sal_Bool bNew = sal_False );
327cdf0e10cSrcweir 
328cdf0e10cSrcweir 	SC_DLLPUBLIC void			CellContentChanged();
329cdf0e10cSrcweir 	void			SelectionChanged();
330cdf0e10cSrcweir 	void			CursorPosChanged();
331cdf0e10cSrcweir 	void			UpdateInputContext();
332cdf0e10cSrcweir 
333cdf0e10cSrcweir 	void			CheckSelectionTransfer();
334cdf0e10cSrcweir 
335cdf0e10cSrcweir 	void			InvertHorizontal( ScVSplitPos eWhich, long nDragPos );
336cdf0e10cSrcweir 	void			InvertVertical( ScHSplitPos eWhich, long nDragPos );
337cdf0e10cSrcweir 
338cdf0e10cSrcweir 	Point			GetInsertPos();
339cdf0e10cSrcweir 
340cdf0e10cSrcweir     Point           GetChartInsertPos( const Size& rSize, const ScRange& rCellRange );
341cdf0e10cSrcweir     Point           GetChartDialogPos( const Size& rDialogSize, const Rectangle& rLogicChart );
342cdf0e10cSrcweir 
343cdf0e10cSrcweir 	void			UpdateAutoFillMark();
344cdf0e10cSrcweir 
345cdf0e10cSrcweir 	void			HideCursor();				// nur aktiver Teil
346cdf0e10cSrcweir 	void			ShowCursor();
347cdf0e10cSrcweir 	void			HideAllCursors();
348cdf0e10cSrcweir 	void			ShowAllCursors();
349cdf0e10cSrcweir 
350cdf0e10cSrcweir 	void			AlignToCursor( SCsCOL nCurX, SCsROW nCurY, ScFollowMode eMode,
351cdf0e10cSrcweir 									const ScSplitPos* pWhich = NULL );
352cdf0e10cSrcweir 
353cdf0e10cSrcweir     SvxZoomType     GetZoomType() const;
354cdf0e10cSrcweir     void            SetZoomType( SvxZoomType eNew, sal_Bool bAll );
355cdf0e10cSrcweir 	sal_uInt16			CalcZoom( SvxZoomType eType, sal_uInt16 nOldZoom );
356cdf0e10cSrcweir 
357cdf0e10cSrcweir //	void			CalcZoom( SvxZoomType eType, sal_uInt16& rZoom, SCCOL& rCol, SCROW& rRow );
358cdf0e10cSrcweir 
359cdf0e10cSrcweir     sal_Bool        HasPageFieldDataAtCursor() const;
360cdf0e10cSrcweir 	void			StartDataSelect();
361cdf0e10cSrcweir 
362cdf0e10cSrcweir 					//	MoveCursorAbs		- absolut
363cdf0e10cSrcweir 					//	MoveCursorRel		- einzelne Zellen
364cdf0e10cSrcweir 					//	MoveCursorPage		- Bildschirmseite
365cdf0e10cSrcweir 					//	MoveCursorArea		- Datenblock
366cdf0e10cSrcweir 					//	MoveCursorEnd		- links oben / benutzter Bereich
367cdf0e10cSrcweir 
368cdf0e10cSrcweir 	SC_DLLPUBLIC void			MoveCursorAbs( SCsCOL nCurX, SCsROW nCurY, ScFollowMode eMode,
369cdf0e10cSrcweir 									sal_Bool bShift, sal_Bool bControl,
370cdf0e10cSrcweir 									sal_Bool bKeepOld = sal_False, sal_Bool bKeepSel = sal_False );
371cdf0e10cSrcweir 	void			MoveCursorRel( SCsCOL nMovX, SCsROW nMovY, ScFollowMode eMode,
372cdf0e10cSrcweir 									sal_Bool bShift, sal_Bool bKeepSel = sal_False );
373cdf0e10cSrcweir 	void			MoveCursorPage( SCsCOL nMovX, SCsROW nMovY, ScFollowMode eMode,
374cdf0e10cSrcweir 									sal_Bool bShift, sal_Bool bKeepSel = sal_False );
375cdf0e10cSrcweir 	void			MoveCursorArea( SCsCOL nMovX, SCsROW nMovY, ScFollowMode eMode,
376cdf0e10cSrcweir 									sal_Bool bShift, sal_Bool bKeepSel = sal_False );
377cdf0e10cSrcweir 	void			MoveCursorEnd( SCsCOL nMovX, SCsROW nMovY, ScFollowMode eMode,
378cdf0e10cSrcweir 									sal_Bool bShift, sal_Bool bKeepSel = sal_False );
379cdf0e10cSrcweir 	void			MoveCursorScreen( SCsCOL nMovX, SCsROW nMovY, ScFollowMode eMode, sal_Bool bShift );
380cdf0e10cSrcweir 
381cdf0e10cSrcweir 	void			MoveCursorEnter( sal_Bool bShift );		// Shift fuer Richtung (kein Markieren)
382cdf0e10cSrcweir 
383cdf0e10cSrcweir     sal_Bool            MoveCursorKeyInput( const KeyEvent& rKeyEvent );
384cdf0e10cSrcweir 
385cdf0e10cSrcweir 	void			FindNextUnprot( sal_Bool bShift, sal_Bool bInSelection = sal_True );
386cdf0e10cSrcweir 
387cdf0e10cSrcweir 	void			SetNewStartIfMarking();
388cdf0e10cSrcweir 
389cdf0e10cSrcweir     // bSameTabButMoved = true if the same sheet as before is activated, used after moving/copying/inserting/deleting a sheet
390cdf0e10cSrcweir     SC_DLLPUBLIC void SetTabNo( SCTAB nTab, sal_Bool bNew = sal_False, sal_Bool bExtendSelection = sal_False, bool bSameTabButMoved = false );
391cdf0e10cSrcweir     void            SelectNextTab( short nDir, sal_Bool bExtendSelection = sal_False );
392cdf0e10cSrcweir 
393cdf0e10cSrcweir 	void			ActivateView( sal_Bool bActivate, sal_Bool bFirst );
394cdf0e10cSrcweir 	void			ActivatePart( ScSplitPos eWhich );
395cdf0e10cSrcweir 	sal_Bool			IsInActivatePart() const	{ return bInActivatePart; }
396cdf0e10cSrcweir 
397cdf0e10cSrcweir 	void			SetTimer( ScGridWindow* pWin, const MouseEvent& rMEvt );
398cdf0e10cSrcweir 	void			ResetTimer();
399cdf0e10cSrcweir 
400cdf0e10cSrcweir 	void 			ScrollX( long nDeltaX, ScHSplitPos eWhich, sal_Bool bUpdBars = sal_True );
401cdf0e10cSrcweir 	void 			ScrollY( long nDeltaY, ScVSplitPos eWhich, sal_Bool bUpdBars = sal_True );
402cdf0e10cSrcweir 	SC_DLLPUBLIC void			ScrollLines( long nDeltaX, long nDeltaY );				// aktives
403cdf0e10cSrcweir 
404cdf0e10cSrcweir 	sal_Bool			ScrollCommand( const CommandEvent& rCEvt, ScSplitPos ePos );
405cdf0e10cSrcweir 
406cdf0e10cSrcweir 	void			ScrollToObject( SdrObject* pDrawObj );
407cdf0e10cSrcweir 	void			MakeVisible( const Rectangle& rHMMRect );
408cdf0e10cSrcweir 
409cdf0e10cSrcweir 									// Zeichnen
410cdf0e10cSrcweir 
411cdf0e10cSrcweir 	void			InvertBlockMark(SCCOL nBlockStartX, SCROW nBlockStartY,
412cdf0e10cSrcweir 								SCCOL nBlockEndX, SCROW nBlockEndY);
413cdf0e10cSrcweir 
414cdf0e10cSrcweir //UNUSED2008-05  void            DrawDragRect( SCCOL nStartX, SCROW nStartY, SCCOL nEndX, SCROW nEndY,
415cdf0e10cSrcweir //UNUSED2008-05                                ScSplitPos ePos );
416cdf0e10cSrcweir //UNUSED2008-05  void			PaintCell( SCCOL nCol, SCROW nRow, SCTAB nTab );
417cdf0e10cSrcweir //UNUSED2008-05  void			PaintLeftRow( SCROW nRow );
418cdf0e10cSrcweir //UNUSED2008-05  void			PaintTopCol( SCCOL nCol );
419cdf0e10cSrcweir 
420cdf0e10cSrcweir 	void			PaintArea( SCCOL nStartCol, SCROW nStartRow, SCCOL nEndCol, SCROW nEndRow,
421cdf0e10cSrcweir 										ScUpdateMode eMode = SC_UPDATE_ALL );
422cdf0e10cSrcweir 
423cdf0e10cSrcweir 	void			PaintGrid();
424cdf0e10cSrcweir 
425cdf0e10cSrcweir 	void			PaintTopArea( SCCOL nStartCol, SCCOL nEndCol );
426cdf0e10cSrcweir 	void			PaintTop();
427cdf0e10cSrcweir 
428cdf0e10cSrcweir 	void			PaintLeftArea( SCROW nStartRow, SCROW nEndRow );
429cdf0e10cSrcweir 	void			PaintLeft();
430cdf0e10cSrcweir 
431cdf0e10cSrcweir 	sal_Bool			PaintExtras();
432cdf0e10cSrcweir 
433cdf0e10cSrcweir 	void			RecalcPPT();
434cdf0e10cSrcweir 
435cdf0e10cSrcweir 	void			CreateAnchorHandles(SdrHdlList& rHdl, const ScAddress& rAddress);
436cdf0e10cSrcweir 
437cdf0e10cSrcweir     void            UpdateSelectionOverlay();
438cdf0e10cSrcweir     void            UpdateShrinkOverlay();
439cdf0e10cSrcweir     void            UpdateAllOverlays();
440cdf0e10cSrcweir 
441cdf0e10cSrcweir 	void			UpdateFormulas();
442cdf0e10cSrcweir 	void			InterpretVisible();
443cdf0e10cSrcweir 	void			CheckNeedsRepaint();
444cdf0e10cSrcweir 
445cdf0e10cSrcweir 	void			PaintRangeFinder( long nNumber = -1 );
446cdf0e10cSrcweir 	void			AddHighlightRange( const ScRange& rRange, const Color& rColor );
447cdf0e10cSrcweir 	void			ClearHighlightRanges();
448cdf0e10cSrcweir 
449cdf0e10cSrcweir 	void			DoChartSelection( const ::com::sun::star::uno::Sequence<
450cdf0e10cSrcweir                                       ::com::sun::star::chart2::data::HighlightedRange > & rHilightRanges );
451cdf0e10cSrcweir 
452cdf0e10cSrcweir 	long			GetGridWidth( ScHSplitPos eWhich );
453cdf0e10cSrcweir 	long			GetGridHeight( ScVSplitPos eWhich );
454cdf0e10cSrcweir 
455cdf0e10cSrcweir 	void			UpdateScrollBars();
456cdf0e10cSrcweir 	void			SetNewVisArea();
457cdf0e10cSrcweir 
458cdf0e10cSrcweir 	void			InvalidateAttribs();
459cdf0e10cSrcweir 
460cdf0e10cSrcweir 	void			MakeEditView( ScEditEngineDefaulter* pEngine, SCCOL nCol, SCROW nRow );
461cdf0e10cSrcweir 	void			KillEditView( sal_Bool bNoPaint );
462cdf0e10cSrcweir 	void			UpdateEditView();
463cdf0e10cSrcweir 
464cdf0e10cSrcweir 
465cdf0e10cSrcweir 									//	Bloecke
466cdf0e10cSrcweir 
467cdf0e10cSrcweir 	void			SelectAll( sal_Bool bContinue = sal_False );
468cdf0e10cSrcweir 	void			SelectAllTables();
469cdf0e10cSrcweir     void            DeselectAllTables();
470cdf0e10cSrcweir 
471cdf0e10cSrcweir 	void			MarkCursor( SCCOL nCurX, SCROW nCurY, SCTAB nCurZ,
472cdf0e10cSrcweir                                 sal_Bool bCols = sal_False, sal_Bool bRows = sal_False, sal_Bool bCellSelection = sal_False );
473cdf0e10cSrcweir 	void			InitBlockMode( SCCOL nCurX, SCROW nCurY, SCTAB nCurZ,
474cdf0e10cSrcweir 									sal_Bool bTestNeg = sal_False,
475cdf0e10cSrcweir 									sal_Bool bCols = sal_False, sal_Bool bRows = sal_False );
476cdf0e10cSrcweir 	void			InitOwnBlockMode();
477cdf0e10cSrcweir 	void			DoneBlockMode( sal_Bool bContinue = sal_False );
478cdf0e10cSrcweir 
479cdf0e10cSrcweir 	sal_Bool			IsBlockMode() const		{ return bIsBlockMode; }
480cdf0e10cSrcweir 
481cdf0e10cSrcweir 	void			MarkColumns();
482cdf0e10cSrcweir 	void			MarkRows();
483cdf0e10cSrcweir 	void			MarkDataArea( sal_Bool bIncludeCursor = sal_True );
484cdf0e10cSrcweir 	void			MarkMatrixFormula();
485cdf0e10cSrcweir 	void			Unmark();
486cdf0e10cSrcweir 
487cdf0e10cSrcweir     void            MarkRange( const ScRange& rRange, sal_Bool bSetCursor = sal_True, sal_Bool bContinue = sal_False );
488cdf0e10cSrcweir 
489cdf0e10cSrcweir 	sal_Bool			IsMarking( SCCOL nCol, SCROW nRow, SCTAB nTab ) const;
490cdf0e10cSrcweir 
491cdf0e10cSrcweir 	void			PaintMarks( SCCOL nStartCol, SCROW nStartRow, SCCOL nEndCol, SCROW nEndRow );
492cdf0e10cSrcweir 	void			PaintBlock( sal_Bool bReset = sal_False );
493cdf0e10cSrcweir 
494cdf0e10cSrcweir     void            SetMarkData( const ScMarkData& rNew );
495cdf0e10cSrcweir     void            MarkDataChanged();
496cdf0e10cSrcweir 
497cdf0e10cSrcweir 	void			LockModifiers( sal_uInt16 nModifiers );
498cdf0e10cSrcweir 	sal_uInt16			GetLockedModifiers() const;
499cdf0e10cSrcweir 	void			ViewOptionsHasChanged( sal_Bool bHScrollChanged,
500cdf0e10cSrcweir 											sal_Bool bGraphicsChanged = sal_False);
501cdf0e10cSrcweir 
502cdf0e10cSrcweir 	Point			GetMousePosPixel();
503cdf0e10cSrcweir 
504cdf0e10cSrcweir 	void			SnapSplitPos( Point& rScreenPosPixel );
505cdf0e10cSrcweir 	void			FreezeSplitters( sal_Bool bFreeze );
506cdf0e10cSrcweir 	void			RemoveSplit();
507cdf0e10cSrcweir 	void			SplitAtCursor();
508cdf0e10cSrcweir 	void			SplitAtPixel( const Point& rPixel, sal_Bool bHor, sal_Bool bVer );
509cdf0e10cSrcweir 	void			InvalidateSplit();
510cdf0e10cSrcweir 
511cdf0e10cSrcweir 	void			ErrorMessage( sal_uInt16 nGlobStrId );
512cdf0e10cSrcweir 	Window*			GetParentOrChild( sal_uInt16 nChildId );
513cdf0e10cSrcweir 
514cdf0e10cSrcweir 	void			EnableRefInput(sal_Bool bFlag=sal_True);
515cdf0e10cSrcweir 
516cdf0e10cSrcweir 	Window*			GetFrameWin() const	{ return pFrameWin; }
517cdf0e10cSrcweir 
518cdf0e10cSrcweir     sal_Bool            HasPaintBrush() const           { return pBrushDocument || pDrawBrushSet; }
519cdf0e10cSrcweir     ScDocument*     GetBrushDocument() const        { return pBrushDocument; }
520cdf0e10cSrcweir     SfxItemSet*     GetDrawBrushSet() const         { return pDrawBrushSet; }
521cdf0e10cSrcweir     sal_Bool            IsPaintBrushLocked() const      { return bLockPaintBrush; }
522cdf0e10cSrcweir     void            SetBrushDocument( ScDocument* pNew, sal_Bool bLock );
523cdf0e10cSrcweir     void            SetDrawBrushSet( SfxItemSet* pNew, sal_Bool bLock );
524cdf0e10cSrcweir     void            ResetBrushDocument();
525cdf0e10cSrcweir };
526cdf0e10cSrcweir 
527cdf0e10cSrcweir 
528cdf0e10cSrcweir 
529cdf0e10cSrcweir #endif
530cdf0e10cSrcweir 
531