xref: /AOO41X/main/basctl/source/basicide/baside2.hxx (revision 96821c268eab8f5c0fa3bcb36189f0c1c257db85)
1*96821c26SAndrew Rist /**************************************************************
2cdf0e10cSrcweir  *
3*96821c26SAndrew Rist  * Licensed to the Apache Software Foundation (ASF) under one
4*96821c26SAndrew Rist  * or more contributor license agreements.  See the NOTICE file
5*96821c26SAndrew Rist  * distributed with this work for additional information
6*96821c26SAndrew Rist  * regarding copyright ownership.  The ASF licenses this file
7*96821c26SAndrew Rist  * to you under the Apache License, Version 2.0 (the
8*96821c26SAndrew Rist  * "License"); you may not use this file except in compliance
9*96821c26SAndrew Rist  * with the License.  You may obtain a copy of the License at
10cdf0e10cSrcweir  *
11*96821c26SAndrew Rist  *   http://www.apache.org/licenses/LICENSE-2.0
12cdf0e10cSrcweir  *
13*96821c26SAndrew Rist  * Unless required by applicable law or agreed to in writing,
14*96821c26SAndrew Rist  * software distributed under the License is distributed on an
15*96821c26SAndrew Rist  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*96821c26SAndrew Rist  * KIND, either express or implied.  See the License for the
17*96821c26SAndrew Rist  * specific language governing permissions and limitations
18*96821c26SAndrew Rist  * under the License.
19cdf0e10cSrcweir  *
20*96821c26SAndrew Rist  *************************************************************/
21*96821c26SAndrew Rist 
22*96821c26SAndrew Rist 
23cdf0e10cSrcweir 
24cdf0e10cSrcweir #ifndef _BASIDE2_HXX
25cdf0e10cSrcweir #define _BASIDE2_HXX
26cdf0e10cSrcweir 
27cdf0e10cSrcweir #include <svheader.hxx>
28cdf0e10cSrcweir 
29cdf0e10cSrcweir #include <bastypes.hxx>
30cdf0e10cSrcweir #include <bastype3.hxx>
31cdf0e10cSrcweir #include <basidesh.hxx>
32cdf0e10cSrcweir 
33cdf0e10cSrcweir class ExtTextEngine;
34cdf0e10cSrcweir class ExtTextView;
35cdf0e10cSrcweir class SvxSearchItem;
36cdf0e10cSrcweir #include <svtools/svtabbx.hxx>
37cdf0e10cSrcweir #include <svtools/headbar.hxx>
38cdf0e10cSrcweir 
39cdf0e10cSrcweir #ifndef _SV_BUTTON_HXX //autogen
40cdf0e10cSrcweir #include <vcl/button.hxx>
41cdf0e10cSrcweir #endif
42cdf0e10cSrcweir #include <basic/sbmod.hxx>
43cdf0e10cSrcweir #include <vcl/split.hxx>
44cdf0e10cSrcweir #include "svl/lstner.hxx"
45cdf0e10cSrcweir #include <svtools/colorcfg.hxx>
46cdf0e10cSrcweir 
47cdf0e10cSrcweir #include <sfx2/progress.hxx>
48cdf0e10cSrcweir #include <svtools/syntaxhighlight.hxx>
49cdf0e10cSrcweir 
50cdf0e10cSrcweir DBG_NAMEEX( ModulWindow )
51cdf0e10cSrcweir 
52cdf0e10cSrcweir #define MARKER_NOMARKER	0xFFFF
53cdf0e10cSrcweir 
54cdf0e10cSrcweir namespace utl
55cdf0e10cSrcweir {
56cdf0e10cSrcweir     class SourceViewConfig;
57cdf0e10cSrcweir }
58cdf0e10cSrcweir 
59cdf0e10cSrcweir // #108672 Helper functions to get/set text in TextEngine
60cdf0e10cSrcweir // using the stream interface (get/setText() only supports
61cdf0e10cSrcweir // tools Strings limited to 64K).
62cdf0e10cSrcweir ::rtl::OUString getTextEngineText( ExtTextEngine* pEngine );
63cdf0e10cSrcweir void setTextEngineText( ExtTextEngine* pEngine, const ::rtl::OUString aStr );
64cdf0e10cSrcweir 
65cdf0e10cSrcweir class ProgressInfo : public SfxProgress
66cdf0e10cSrcweir {
67cdf0e10cSrcweir private:
68cdf0e10cSrcweir 	sal_uLong					nCurState;
69cdf0e10cSrcweir 
70cdf0e10cSrcweir public:
71cdf0e10cSrcweir 
72cdf0e10cSrcweir 	inline			ProgressInfo( SfxObjectShell* pObjSh, const String& rText, sal_uLong nRange );
73cdf0e10cSrcweir 
74cdf0e10cSrcweir //	inline void		StartProgress( const String& rName, sal_uLong nStates );
75cdf0e10cSrcweir //	inline void		EndProgress();
76cdf0e10cSrcweir 	inline void		StepProgress();
77cdf0e10cSrcweir };
78cdf0e10cSrcweir 
ProgressInfo(SfxObjectShell * pObjSh,const String & rText,sal_uLong nRange)79cdf0e10cSrcweir inline ProgressInfo::ProgressInfo( SfxObjectShell* pObjSh, const String& rText, sal_uLong nRange )
80cdf0e10cSrcweir 	: SfxProgress( pObjSh, rText, nRange )
81cdf0e10cSrcweir {
82cdf0e10cSrcweir 	nCurState = 0;
83cdf0e10cSrcweir }
84cdf0e10cSrcweir 
85cdf0e10cSrcweir // inline void ProgressInfo::StartProgress( const String& rName, sal_uLong nStates )
86cdf0e10cSrcweir // {
87cdf0e10cSrcweir // 	nCurState = 0;
88cdf0e10cSrcweir // 	if ( pStbMgr )
89cdf0e10cSrcweir // 		pStbMgr->StartProgressMode( rName, nStates );
90cdf0e10cSrcweir // }
91cdf0e10cSrcweir 
92cdf0e10cSrcweir // inline void ProgressInfo::EndProgress()
93cdf0e10cSrcweir // {
94cdf0e10cSrcweir // 	if ( pStbMgr )
95cdf0e10cSrcweir // 		pStbMgr->EndProgressMode();
96cdf0e10cSrcweir //}
97cdf0e10cSrcweir 
StepProgress()98cdf0e10cSrcweir inline void ProgressInfo::StepProgress()
99cdf0e10cSrcweir {
100cdf0e10cSrcweir 	SetState( ++nCurState );
101cdf0e10cSrcweir }
102cdf0e10cSrcweir 
103cdf0e10cSrcweir 
104cdf0e10cSrcweir namespace svt {
105cdf0e10cSrcweir class SourceViewConfig;
106cdf0e10cSrcweir }
107cdf0e10cSrcweir 
108cdf0e10cSrcweir class EditorWindow : public Window, public SfxListener, public utl::ConfigurationListener
109cdf0e10cSrcweir {
110cdf0e10cSrcweir private:
111cdf0e10cSrcweir 	ExtTextView*	pEditView;
112cdf0e10cSrcweir 	ExtTextEngine*	pEditEngine;
113cdf0e10cSrcweir 
114cdf0e10cSrcweir     utl::SourceViewConfig* pSourceViewConfig;
115cdf0e10cSrcweir 
116cdf0e10cSrcweir 	long			nCurTextWidth;
117cdf0e10cSrcweir 
118cdf0e10cSrcweir 	SyntaxHighlighter	aHighlighter;
119cdf0e10cSrcweir 	Timer			aSyntaxIdleTimer;
120cdf0e10cSrcweir 	Table			aSyntaxLineTable;
121cdf0e10cSrcweir 	DECL_LINK( SyntaxTimerHdl, Timer * );
122cdf0e10cSrcweir 	ProgressInfo*	pProgress;
123cdf0e10cSrcweir 	ModulWindow*	pModulWindow;
124cdf0e10cSrcweir 
125cdf0e10cSrcweir     virtual void DataChanged(DataChangedEvent const & rDCEvt);
126cdf0e10cSrcweir 
127cdf0e10cSrcweir 	using			Window::Notify;
128cdf0e10cSrcweir 	virtual void	Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
129cdf0e10cSrcweir 
130cdf0e10cSrcweir 	void			ImpDoHighlight( sal_uLong nLineOff );
131cdf0e10cSrcweir     void            ImplSetFont();
132cdf0e10cSrcweir 
133cdf0e10cSrcweir 	sal_Bool			bHighlightning;
134cdf0e10cSrcweir 	sal_Bool			bDoSyntaxHighlight;
135cdf0e10cSrcweir 	sal_Bool			bDelayHighlight;
136cdf0e10cSrcweir 
137cdf0e10cSrcweir     virtual
138cdf0e10cSrcweir     ::com::sun::star::uno::Reference< ::com::sun::star::awt::XWindowPeer >
139cdf0e10cSrcweir     GetComponentInterface(sal_Bool bCreate = sal_True);
140cdf0e10cSrcweir 
141cdf0e10cSrcweir protected:
142cdf0e10cSrcweir 	virtual void	Paint( const Rectangle& );
143cdf0e10cSrcweir 	virtual void	Resize();
144cdf0e10cSrcweir 	virtual void	KeyInput( const KeyEvent& rKeyEvt );
145cdf0e10cSrcweir 	virtual void	MouseMove( const MouseEvent& rMEvt );
146cdf0e10cSrcweir 	virtual void	MouseButtonDown( const MouseEvent& rMEvt );
147cdf0e10cSrcweir 	virtual void	MouseButtonUp( const MouseEvent& rMEvt );
148cdf0e10cSrcweir 	virtual void	Command( const CommandEvent& rCEvt );
149cdf0e10cSrcweir 	virtual void	LoseFocus();
150cdf0e10cSrcweir 	virtual void	RequestHelp( const HelpEvent& rHEvt );
151cdf0e10cSrcweir     virtual void    ConfigurationChanged( utl::ConfigurationBroadcaster*, sal_uInt32 );
152cdf0e10cSrcweir 
153cdf0e10cSrcweir 	void			DoSyntaxHighlight( sal_uLong nPara );
154cdf0e10cSrcweir 	String			GetWordAtCursor();
155cdf0e10cSrcweir 	sal_Bool			ImpCanModify();
156cdf0e10cSrcweir 
157cdf0e10cSrcweir public:
158cdf0e10cSrcweir 					EditorWindow( Window* pParent );
159cdf0e10cSrcweir 					~EditorWindow();
160cdf0e10cSrcweir 
GetEditEngine() const161cdf0e10cSrcweir 	ExtTextEngine*	GetEditEngine()	const	{ return (ExtTextEngine*)pEditEngine; }
GetEditView() const162cdf0e10cSrcweir 	ExtTextView*	GetEditView() const		{ return pEditView; }
GetProgress() const163cdf0e10cSrcweir 	ProgressInfo*	GetProgress() const		{ return pProgress; }
164cdf0e10cSrcweir 
165cdf0e10cSrcweir 	void			CreateProgress( const String& rText, sal_uLong nRange );
166cdf0e10cSrcweir 	void			DestroyProgress();
167cdf0e10cSrcweir 
168cdf0e10cSrcweir 	void			ParagraphInsertedDeleted( sal_uLong nNewPara, sal_Bool bInserted );
169cdf0e10cSrcweir 	void			DoDelayedSyntaxHighlight( sal_uLong nPara );
170cdf0e10cSrcweir 
171cdf0e10cSrcweir 	void			CreateEditEngine();
172cdf0e10cSrcweir 	void			SetScrollBarRanges();
173cdf0e10cSrcweir 	void			InitScrollBars();
SetModulWindow(ModulWindow * pWin)174cdf0e10cSrcweir 	void			SetModulWindow( ModulWindow* pWin )
175cdf0e10cSrcweir 						{ pModulWindow = pWin; }
176cdf0e10cSrcweir 
177cdf0e10cSrcweir 	void			ForceSyntaxTimeout();
178cdf0e10cSrcweir 	sal_Bool			SetSourceInBasic( sal_Bool bQuiet = sal_True );
179cdf0e10cSrcweir 
CanModify()180cdf0e10cSrcweir 	sal_Bool			CanModify() { return ImpCanModify(); }
181cdf0e10cSrcweir };
182cdf0e10cSrcweir 
183cdf0e10cSrcweir 
184cdf0e10cSrcweir class BreakPointWindow : public Window
185cdf0e10cSrcweir {
186cdf0e10cSrcweir private:
187cdf0e10cSrcweir 	long			nCurYOffset;
188cdf0e10cSrcweir 	sal_uInt16			nMarkerPos;
189cdf0e10cSrcweir 	BreakPointList	aBreakPointList;
190cdf0e10cSrcweir 	ModulWindow*	pModulWindow;
191cdf0e10cSrcweir 	sal_Bool			bErrorMarker;
192cdf0e10cSrcweir     bool m_bHighContrastMode;
193cdf0e10cSrcweir 
194cdf0e10cSrcweir     virtual void DataChanged(DataChangedEvent const & rDCEvt);
195cdf0e10cSrcweir 
196cdf0e10cSrcweir     void setBackgroundColor(Color aColor);
197cdf0e10cSrcweir 
198cdf0e10cSrcweir protected:
199cdf0e10cSrcweir 	virtual void	Paint( const Rectangle& );
200cdf0e10cSrcweir 	virtual void	Resize();
201cdf0e10cSrcweir 	BreakPoint* 	FindBreakPoint( const Point& rMousePos );
202cdf0e10cSrcweir 	void			ShowMarker( sal_Bool bShow );
203cdf0e10cSrcweir 	virtual void	MouseButtonDown( const MouseEvent& rMEvt );
204cdf0e10cSrcweir 	virtual void	Command( const CommandEvent& rCEvt );
205cdf0e10cSrcweir 
206cdf0e10cSrcweir 	sal_Bool			SyncYOffset();
207cdf0e10cSrcweir 
208cdf0e10cSrcweir public:
209cdf0e10cSrcweir 					BreakPointWindow( Window* pParent );
210cdf0e10cSrcweir 					~BreakPointWindow();
211cdf0e10cSrcweir 
SetModulWindow(ModulWindow * pWin)212cdf0e10cSrcweir 	void			SetModulWindow( ModulWindow* pWin )
213cdf0e10cSrcweir 						{ pModulWindow = pWin; }
214cdf0e10cSrcweir 
215cdf0e10cSrcweir 	void			SetMarkerPos( sal_uInt16 nLine, sal_Bool bErrorMarker = sal_False );
216cdf0e10cSrcweir 
217cdf0e10cSrcweir 	void			DoScroll( long nHorzScroll, long nVertScroll );
GetCurYOffset()218cdf0e10cSrcweir 	long&			GetCurYOffset() 		{ return nCurYOffset; }
GetBreakPoints()219cdf0e10cSrcweir 	BreakPointList&	GetBreakPoints()		{ return aBreakPointList; }
220cdf0e10cSrcweir };
221cdf0e10cSrcweir 
222cdf0e10cSrcweir 
223cdf0e10cSrcweir class WatchTreeListBox : public SvHeaderTabListBox
224cdf0e10cSrcweir {
225cdf0e10cSrcweir 	String aEditingRes;
226cdf0e10cSrcweir 
227cdf0e10cSrcweir protected:
228cdf0e10cSrcweir 	virtual sal_Bool	EditingEntry( SvLBoxEntry* pEntry, Selection& rSel  );
229cdf0e10cSrcweir 	virtual sal_Bool	EditedEntry( SvLBoxEntry* pEntry, const String& rNewText );
230cdf0e10cSrcweir 
231cdf0e10cSrcweir 	sal_Bool 			ImplBasicEntryEdited( SvLBoxEntry* pEntry, const String& rResult );
232cdf0e10cSrcweir 	SbxBase*		ImplGetSBXForEntry( SvLBoxEntry* pEntry, bool& rbArrayElement );
233cdf0e10cSrcweir 
234cdf0e10cSrcweir //	virtual DragDropMode	NotifyBeginDrag( SvLBoxEntry* );
235cdf0e10cSrcweir //	virtual sal_Bool	NotifyQueryDrop( SvLBoxEntry* );
236cdf0e10cSrcweir 
237cdf0e10cSrcweir //	virtual sal_Bool	NotifyMoving( SvLBoxEntry* pTarget, SvLBoxEntry* pEntry,
238cdf0e10cSrcweir //						SvLBoxEntry*& rpNewParent, sal_uLong& rNewChildPos );
239cdf0e10cSrcweir //	virtual sal_Bool	NotifyCopying( SvLBoxEntry* pTarget, SvLBoxEntry* pEntry,
240cdf0e10cSrcweir //						SvLBoxEntry*& rpNewParent, sal_uLong& rNewChildPos );
241cdf0e10cSrcweir //	sal_Bool			NotifyCopyingMoving( SvLBoxEntry* pTarget, SvLBoxEntry* pEntry,
242cdf0e10cSrcweir //						SvLBoxEntry*& rpNewParent, sal_uLong& rNewChildPos, sal_Bool bMove );
243cdf0e10cSrcweir 
244cdf0e10cSrcweir public:
245cdf0e10cSrcweir 	WatchTreeListBox( Window* pParent, WinBits nWinBits );
246cdf0e10cSrcweir 	~WatchTreeListBox();
247cdf0e10cSrcweir 
248cdf0e10cSrcweir 	void			RequestingChilds( SvLBoxEntry * pParent );
249cdf0e10cSrcweir 	void			UpdateWatches( bool bBasicStopped = false );
250cdf0e10cSrcweir 
251cdf0e10cSrcweir 	using			SvTabListBox::SetTabs;
252cdf0e10cSrcweir 	virtual void	SetTabs();
253cdf0e10cSrcweir };
254cdf0e10cSrcweir 
255cdf0e10cSrcweir 
256cdf0e10cSrcweir 
257cdf0e10cSrcweir class WatchWindow : public BasicDockingWindow
258cdf0e10cSrcweir {
259cdf0e10cSrcweir private:
260cdf0e10cSrcweir 	String				aWatchStr;
261cdf0e10cSrcweir 	ExtendedEdit		aXEdit;
262cdf0e10cSrcweir 	ImageButton 		aRemoveWatchButton;
263cdf0e10cSrcweir 	WatchTreeListBox	aTreeListBox;
264cdf0e10cSrcweir 	HeaderBar			aHeaderBar;
265cdf0e10cSrcweir 
266cdf0e10cSrcweir protected:
267cdf0e10cSrcweir 	virtual void	Resize();
268cdf0e10cSrcweir 	virtual void	Paint( const Rectangle& rRect );
269cdf0e10cSrcweir 
270cdf0e10cSrcweir 	DECL_LINK( ButtonHdl, ImageButton * );
271cdf0e10cSrcweir 	DECL_LINK( TreeListHdl, SvTreeListBox * );
272cdf0e10cSrcweir 	DECL_LINK( implEndDragHdl, HeaderBar * );
273cdf0e10cSrcweir 	DECL_LINK( EditAccHdl, Accelerator * );
274cdf0e10cSrcweir 
275cdf0e10cSrcweir 
276cdf0e10cSrcweir public:
277cdf0e10cSrcweir 					WatchWindow( Window* pParent );
278cdf0e10cSrcweir 					~WatchWindow();
279cdf0e10cSrcweir 
280cdf0e10cSrcweir 	void			AddWatch( const String& rVName );
281cdf0e10cSrcweir 	sal_Bool			RemoveSelectedWatch();
282cdf0e10cSrcweir 	void			UpdateWatches( bool bBasicStopped = false );
283cdf0e10cSrcweir 
GetWatchTreeListBox()284cdf0e10cSrcweir 	WatchTreeListBox&	GetWatchTreeListBox() { return aTreeListBox; }
285cdf0e10cSrcweir };
286cdf0e10cSrcweir 
287cdf0e10cSrcweir 
288cdf0e10cSrcweir class StackWindow : public BasicDockingWindow
289cdf0e10cSrcweir {
290cdf0e10cSrcweir private:
291cdf0e10cSrcweir 	SvTreeListBox	aTreeListBox;
292cdf0e10cSrcweir 	ImageButton 	aGotoCallButton;
293cdf0e10cSrcweir 	String			aStackStr;
294cdf0e10cSrcweir 
295cdf0e10cSrcweir protected:
296cdf0e10cSrcweir 	virtual void	Resize();
297cdf0e10cSrcweir 	virtual void	Paint( const Rectangle& rRect );
298cdf0e10cSrcweir 	DECL_LINK( ButtonHdl, ImageButton * );
299cdf0e10cSrcweir 
300cdf0e10cSrcweir public:
301cdf0e10cSrcweir 					StackWindow( Window* pParent );
302cdf0e10cSrcweir 					~StackWindow();
303cdf0e10cSrcweir 
304cdf0e10cSrcweir 	void			UpdateCalls();
305cdf0e10cSrcweir };
306cdf0e10cSrcweir 
307cdf0e10cSrcweir 
308cdf0e10cSrcweir class ComplexEditorWindow : public Window
309cdf0e10cSrcweir {
310cdf0e10cSrcweir private:
311cdf0e10cSrcweir 	BreakPointWindow	aBrkWindow;
312cdf0e10cSrcweir 	EditorWindow		aEdtWindow;
313cdf0e10cSrcweir 	ScrollBar			aEWVScrollBar;
314cdf0e10cSrcweir 
315cdf0e10cSrcweir     virtual void DataChanged(DataChangedEvent const & rDCEvt);
316cdf0e10cSrcweir 
317cdf0e10cSrcweir protected:
318cdf0e10cSrcweir 	virtual void		Resize();
319cdf0e10cSrcweir 	DECL_LINK( ScrollHdl, ScrollBar * );
320cdf0e10cSrcweir 
321cdf0e10cSrcweir public:
322cdf0e10cSrcweir 						ComplexEditorWindow( ModulWindow* pParent );
323cdf0e10cSrcweir 
GetBrkWindow()324cdf0e10cSrcweir 	BreakPointWindow&	GetBrkWindow() 		{ return aBrkWindow; }
GetEdtWindow()325cdf0e10cSrcweir 	EditorWindow&		GetEdtWindow() 		{ return aEdtWindow; }
GetEWVScrollBar()326cdf0e10cSrcweir 	ScrollBar&			GetEWVScrollBar() 	{ return aEWVScrollBar; }
327cdf0e10cSrcweir };
328cdf0e10cSrcweir 
329cdf0e10cSrcweir 
330cdf0e10cSrcweir #define SYNTAX_COLOR_MAX	5
331cdf0e10cSrcweir 
332cdf0e10cSrcweir class ModulWindow: public IDEBaseWindow
333cdf0e10cSrcweir {
334cdf0e10cSrcweir 	friend class BasicIDEShell;
335cdf0e10cSrcweir 
336cdf0e10cSrcweir private:
337cdf0e10cSrcweir     StarBASICRef        xBasic;
338cdf0e10cSrcweir 	short				nValid;
339cdf0e10cSrcweir 	ComplexEditorWindow aXEditorWindow;
340cdf0e10cSrcweir 	BasicStatus 		aStatus;
341cdf0e10cSrcweir 	SbModuleRef 		xModule;
342cdf0e10cSrcweir 	ModulWindowLayout*	pLayout;
343cdf0e10cSrcweir 	String				aCurPath;
344cdf0e10cSrcweir     ::rtl::OUString		m_aModule;
345cdf0e10cSrcweir 
346cdf0e10cSrcweir 	DECL_LINK( BasicErrorHdl, StarBASIC * );
347cdf0e10cSrcweir 	long				BasicBreakHdl( StarBASIC* pBasic );
348cdf0e10cSrcweir 
349cdf0e10cSrcweir 	void				CheckCompileBasic();
350cdf0e10cSrcweir 	sal_Bool				BasicExecute();
351cdf0e10cSrcweir 
352cdf0e10cSrcweir 	void				GoOnTop();
353cdf0e10cSrcweir 	void				AssertValidEditEngine();
354cdf0e10cSrcweir 
355cdf0e10cSrcweir     sal_Int32           FormatAndPrint( Printer* pPrinter, sal_Int32 nPage = -1 );
356cdf0e10cSrcweir 	SbModuleRef 		XModule();
357cdf0e10cSrcweir protected:
358cdf0e10cSrcweir 	virtual void	Resize();
359cdf0e10cSrcweir 	virtual void	GetFocus();
360cdf0e10cSrcweir 	virtual void	Paint( const Rectangle& );
361cdf0e10cSrcweir 	virtual void	Deactivating();
362cdf0e10cSrcweir 	virtual void	DoInit();
363cdf0e10cSrcweir 	virtual void	DoScroll( ScrollBar* pCurScrollBar );
364cdf0e10cSrcweir 
365cdf0e10cSrcweir public:
366cdf0e10cSrcweir 					TYPEINFO();
367cdf0e10cSrcweir 
368cdf0e10cSrcweir                     ModulWindow( ModulWindowLayout* pParent, const ScriptDocument& rDocument, String aLibName,
369cdf0e10cSrcweir                         String aName, ::rtl::OUString& aModule );
370cdf0e10cSrcweir 
371cdf0e10cSrcweir 					~ModulWindow();
372cdf0e10cSrcweir 
373cdf0e10cSrcweir 	virtual void	ExecuteCommand( SfxRequest& rReq );
374cdf0e10cSrcweir 	virtual void	GetState( SfxItemSet& );
375cdf0e10cSrcweir 	virtual void	StoreData();
376cdf0e10cSrcweir 	virtual void	UpdateData();
377cdf0e10cSrcweir 	virtual sal_Bool 	CanClose();
378cdf0e10cSrcweir 	// virtual void	PrintData( Printer* pPrinter );
379cdf0e10cSrcweir     // return number of pages to be printed
380cdf0e10cSrcweir     virtual sal_Int32 countPages( Printer* pPrinter );
381cdf0e10cSrcweir     // print page
382cdf0e10cSrcweir     virtual void printPage( sal_Int32 nPage, Printer* pPrinter );
383cdf0e10cSrcweir 	virtual String	GetTitle();
384cdf0e10cSrcweir     virtual BasicEntryDescriptor CreateEntryDescriptor();
385cdf0e10cSrcweir 	virtual sal_Bool	AllowUndo();
386cdf0e10cSrcweir 	virtual void	SetReadOnly( sal_Bool bReadOnly );
387cdf0e10cSrcweir     virtual sal_Bool    IsReadOnly();
388cdf0e10cSrcweir 
GetBasic()389cdf0e10cSrcweir     StarBASIC*      GetBasic() { XModule(); return xBasic; }
390cdf0e10cSrcweir 
GetSbModule()391cdf0e10cSrcweir 	SbModule*		GetSbModule() { return xModule; }
SetSbModule(SbModule * pModule)392cdf0e10cSrcweir     void			SetSbModule( SbModule* pModule ) { xModule = pModule; }
393cdf0e10cSrcweir 	String			GetSbModuleName();
394cdf0e10cSrcweir 
395cdf0e10cSrcweir 	sal_Bool			CompileBasic();
396cdf0e10cSrcweir 	sal_Bool			BasicRun();
397cdf0e10cSrcweir 	sal_Bool			BasicStepOver();
398cdf0e10cSrcweir 	sal_Bool			BasicStepInto();
399cdf0e10cSrcweir 	sal_Bool			BasicStepOut();
400cdf0e10cSrcweir 	void			BasicStop();
401cdf0e10cSrcweir 	sal_Bool			BasicToggleBreakPoint();
402cdf0e10cSrcweir 	void			BasicToggleBreakPointEnabled();
403cdf0e10cSrcweir 	void			ManageBreakPoints();
404cdf0e10cSrcweir 	void			UpdateBreakPoint( const BreakPoint& rBrk );
405cdf0e10cSrcweir 	void			BasicAddWatch();
406cdf0e10cSrcweir 	void			BasicRemoveWatch();
407cdf0e10cSrcweir 
408cdf0e10cSrcweir 	sal_Bool			LoadBasic();
409cdf0e10cSrcweir 	sal_Bool			SaveBasicSource();
410cdf0e10cSrcweir 	sal_Bool			ImportDialog();
411cdf0e10cSrcweir 
412cdf0e10cSrcweir 	void			EditMacro( const String& rMacroName );
413cdf0e10cSrcweir 
414cdf0e10cSrcweir //	void			InsertFromObjectCatalog( ObjectCatalog* pObjDlg );
415cdf0e10cSrcweir 
416cdf0e10cSrcweir 	sal_Bool			ToggleBreakPoint( sal_uLong nLine );
417cdf0e10cSrcweir 
GetBasicStatus()418cdf0e10cSrcweir 	BasicStatus&	GetBasicStatus() { return aStatus; }
419cdf0e10cSrcweir 
420cdf0e10cSrcweir 	virtual sal_Bool	IsModified();
421cdf0e10cSrcweir     virtual sal_Bool    IsPasteAllowed();
422cdf0e10cSrcweir 
423cdf0e10cSrcweir 	void			FrameWindowMoved();
424cdf0e10cSrcweir 	void			ShowCursor( sal_Bool bOn );
425cdf0e10cSrcweir 
426cdf0e10cSrcweir 	virtual sal_uInt16	GetSearchOptions();
427cdf0e10cSrcweir 	sal_uInt16			StartSearchAndReplace( const SvxSearchItem& rSearchItem, sal_Bool bFromStart = sal_False );
428cdf0e10cSrcweir 
429cdf0e10cSrcweir 	virtual Window* GetLayoutWindow();
430cdf0e10cSrcweir 
GetEditorWindow()431cdf0e10cSrcweir 	EditorWindow&		GetEditorWindow() 		{ return aXEditorWindow.GetEdtWindow(); }
GetBreakPointWindow()432cdf0e10cSrcweir 	BreakPointWindow&	GetBreakPointWindow() 	{ return aXEditorWindow.GetBrkWindow(); }
GetEditVScrollBar()433cdf0e10cSrcweir 	ScrollBar&			GetEditVScrollBar() 	{ return aXEditorWindow.GetEWVScrollBar(); }
GetEditEngine()434cdf0e10cSrcweir 	ExtTextEngine*		GetEditEngine() 		{ return GetEditorWindow().GetEditEngine(); }
GetEditView()435cdf0e10cSrcweir 	ExtTextView*		GetEditView() 			{ return GetEditorWindow().GetEditView(); }
GetBreakPoints()436cdf0e10cSrcweir 	BreakPointList& 	GetBreakPoints()		{ return GetBreakPointWindow().GetBreakPoints(); }
GetLayout() const437cdf0e10cSrcweir 	ModulWindowLayout*	GetLayout() const 		{ return pLayout; }
438cdf0e10cSrcweir 
439cdf0e10cSrcweir 	virtual void		BasicStarted();
440cdf0e10cSrcweir 	virtual void		BasicStopped();
441cdf0e10cSrcweir 
442cdf0e10cSrcweir     virtual ::svl::IUndoManager*
443cdf0e10cSrcweir                         GetUndoManager();
444cdf0e10cSrcweir 
GetModule() const445cdf0e10cSrcweir     const ::rtl::OUString&	GetModule() const { return m_aModule; }
SetModule(const::rtl::OUString & aModule)446cdf0e10cSrcweir     void					SetModule( const ::rtl::OUString& aModule ) { m_aModule = aModule; }
447cdf0e10cSrcweir };
448cdf0e10cSrcweir 
449cdf0e10cSrcweir class ModulWindowLayout: public Window, public utl::ConfigurationListener
450cdf0e10cSrcweir {
451cdf0e10cSrcweir private:
452cdf0e10cSrcweir 
453cdf0e10cSrcweir 	Splitter		aVSplitter;
454cdf0e10cSrcweir 	Splitter		aHSplitter;
455cdf0e10cSrcweir 
456cdf0e10cSrcweir 	WatchWindow 	aWatchWindow;
457cdf0e10cSrcweir 	StackWindow 	aStackWindow;
458cdf0e10cSrcweir 
459cdf0e10cSrcweir 	sal_Bool			bVSplitted;
460cdf0e10cSrcweir 	sal_Bool			bHSplitted;
461cdf0e10cSrcweir 
462cdf0e10cSrcweir     ModulWindow * m_pModulWindow;
463cdf0e10cSrcweir 
464cdf0e10cSrcweir     Color m_aSyntaxColors[TT_KEYWORDS + 1];
465cdf0e10cSrcweir     svtools::ColorConfig m_aColorConfig;
466cdf0e10cSrcweir 
467cdf0e10cSrcweir     ImageList m_aImagesNormal;
468cdf0e10cSrcweir     ImageList m_aImagesHighContrast;
469cdf0e10cSrcweir 
470cdf0e10cSrcweir     virtual void DataChanged(DataChangedEvent const & rDCEvt);
471cdf0e10cSrcweir 
472cdf0e10cSrcweir     virtual void ConfigurationChanged( utl::ConfigurationBroadcaster*, sal_uInt32 );
473cdf0e10cSrcweir 
474cdf0e10cSrcweir     void updateSyntaxHighlighting();
475cdf0e10cSrcweir 
476cdf0e10cSrcweir     DECL_LINK( SplitHdl, Splitter * );
477cdf0e10cSrcweir 
478cdf0e10cSrcweir     void            ArrangeWindows();
479cdf0e10cSrcweir 
480cdf0e10cSrcweir protected:
481cdf0e10cSrcweir 	virtual void	Resize();
482cdf0e10cSrcweir 	virtual void	Paint( const Rectangle& rRect );
483cdf0e10cSrcweir 
484cdf0e10cSrcweir public:
485cdf0e10cSrcweir 					ModulWindowLayout( Window* pParent );
486cdf0e10cSrcweir 					~ModulWindowLayout();
487cdf0e10cSrcweir 
488cdf0e10cSrcweir 	void			DockaWindow( DockingWindow* pDockingWin );
489cdf0e10cSrcweir 	sal_Bool			IsToBeDocked( DockingWindow* pDockingWin, const Point& rPos, Rectangle& rRect );
490cdf0e10cSrcweir 
491cdf0e10cSrcweir 	void			SetModulWindow( ModulWindow* pModWin );
GetModulWindow() const492cdf0e10cSrcweir 	ModulWindow*	GetModulWindow() const { return m_pModulWindow; }
493cdf0e10cSrcweir 
GetWatchWindow()494cdf0e10cSrcweir 	WatchWindow& 	GetWatchWindow()	{ return aWatchWindow; }
GetStackWindow()495cdf0e10cSrcweir 	StackWindow& 	GetStackWindow()	{ return aStackWindow; }
496cdf0e10cSrcweir 
497cdf0e10cSrcweir     Image getImage(sal_uInt16 nId, bool bHighContrastMode) const;
498cdf0e10cSrcweir 
getSyntaxColor(TokenTypes eType) const499cdf0e10cSrcweir     inline Color const & getSyntaxColor(TokenTypes eType) const
500cdf0e10cSrcweir     { return m_aSyntaxColors[eType]; }
501cdf0e10cSrcweir };
502cdf0e10cSrcweir 
503cdf0e10cSrcweir #endif	// _BASIDE2_HXX
504