xref: /aoo41x/main/sw/source/ui/app/swmodule.cxx (revision efeef26f)
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 
24 // MARKER(update_precomp.py): autogen include statement, do not remove
25 #include "precompiled_sw.hxx"
26 
27 
28 #include <hintids.hxx>
29 #ifndef _SWERROR_H
30 #include <swerror.h>
31 #endif
32 #include <vcl/wrkwin.hxx>
33 #include <vcl/graph.hxx>
34 #include <svx/galbrws.hxx>
35 #include <svx/svdobj.hxx>
36 #include <svtools/ehdl.hxx>
37 #include <svx/fntszctl.hxx>
38 #include <svx/fntctl.hxx>
39 #include <svx/SmartTagCtl.hxx>
40 #include <svx/pszctrl.hxx>
41 #include <svx/insctrl.hxx>
42 #include <svx/selctrl.hxx>
43 #include <svx/linectrl.hxx>
44 #include <svx/tbxctl.hxx>			//z-Zt falscher includeschutz!
45 #include <svx/fillctrl.hxx>
46 #include <svx/tbcontrl.hxx>
47 #include <svx/verttexttbxctrl.hxx>
48 #include <svx/formatpaintbrushctrl.hxx>
49 #include <svx/contdlg.hxx>
50 #include <svx/layctrl.hxx>
51 #include <svx/fontwork.hxx>
52 #include <SwSpellDialogChildWindow.hxx>
53 #include <svx/tbxalign.hxx>
54 #include <svx/grafctrl.hxx>
55 #include <svx/tbxcolor.hxx>
56 #include <svx/clipboardctl.hxx>
57 #include <svx/lboxctrl.hxx>
58 #include <svx/hyprlink.hxx>
59 #include <svx/tbxcustomshapes.hxx>
60 #include <svx/imapdlg.hxx>
61 #include <svx/srchdlg.hxx>
62 #include <svx/hyperdlg.hxx>
63 #include <svx/extrusioncolorcontrol.hxx>
64 #include <svx/fontworkgallery.hxx>
65 #include <com/sun/star/scanner/XScannerManager.hpp>
66 #include <com/sun/star/container/XSet.hpp>
67 #include <comphelper/processfactory.hxx>
68 #ifndef _DOCSH_HXX
69 #include <docsh.hxx>
70 #endif
71 #include <swmodule.hxx>
72 #include <swevent.hxx>
73 #include <swacorr.hxx>
74 #ifndef _CMDID_H
75 #include <cmdid.h>
76 #endif
77 #include <dobjfac.hxx>
78 #include <init.hxx>
79 #include <pview.hxx>
80 #include <wview.hxx>
81 #include <wdocsh.hxx>
82 #include <globdoc.hxx>
83 #ifndef _SRCVIEW_HXX //autogen
84 #include <srcview.hxx>
85 #endif
86 #include <glshell.hxx>
87 #include <tabsh.hxx>
88 #include <listsh.hxx>
89 #include <grfsh.hxx>
90 #include <mediash.hxx>
91 #include <olesh.hxx>
92 #include <drawsh.hxx>
93 #include <wformsh.hxx>
94 #include <drwtxtsh.hxx>
95 #include <beziersh.hxx>
96 #include <wtextsh.hxx>
97 #include <wfrmsh.hxx>
98 #ifndef _DRFORMSH_HXX
99 #include <drformsh.hxx>
100 #endif
101 #ifndef _WGRFSH_HXX
102 #include <wgrfsh.hxx>
103 #endif
104 #ifndef _WOLESH_HXX
105 #include <wolesh.hxx>
106 #endif
107 #ifndef _WLISTSH_HXX
108 #include <wlistsh.hxx>
109 #endif
110 #ifndef _WTABSH_HXX
111 #include <wtabsh.hxx>
112 #endif
113 #include <navipi.hxx>
114 #include <chartins.hxx>
115 #include <inputwin.hxx>
116 #include <usrpref.hxx>
117 #include <uinums.hxx>
118 #include <prtopt.hxx>
119 #include <bookctrl.hxx>
120 #include <tmplctrl.hxx>
121 #include <viewlayoutctrl.hxx>
122 #include <svx/zoomsliderctrl.hxx>
123 #include <tblctrl.hxx>
124 #include <zoomctrl.hxx>
125 #include <workctrl.hxx>
126 #include <tbxanchr.hxx>
127 #include <fldwrap.hxx>
128 #ifndef _REDLNDLG_HXX
129 #include <redlndlg.hxx>
130 #endif
131 #ifndef _SYNCBTN_HXX
132 #include <syncbtn.hxx>
133 #endif
134 #include <mailmergechildwindow.hxx>
135 #include <modcfg.hxx>
136 #include <fontcfg.hxx>
137 #include <sfx2/taskpane.hxx>
138 #include <sfx2/evntconf.hxx>
139 #include <sfx2/appuno.hxx>
140 #include <swatrset.hxx>
141 #include <idxmrk.hxx>
142 #include <dlelstnr.hxx>
143 #ifndef _BARCFG_HXX
144 #include <barcfg.hxx>
145 #endif
146 #include <svx/rubydialog.hxx>
147 // OD 14.02.2003 #107424#
148 #include <svtools/colorcfg.hxx>
149 
150 #include <editeng/acorrcfg.hxx>
151 #include <unotools/moduleoptions.hxx>
152 
153 #ifndef _AVMEDIA_MEDIAPPLAYER_HXX
154 #include <avmedia/mediaplayer.hxx>
155 #endif
156 #include <avmedia/mediatoolbox.hxx>
157 
158 #include <annotsh.hxx>
159 
160 #include <app.hrc>
161 #include <svx/xmlsecctrl.hxx>
162 ResMgr *pSwResMgr = 0;
163 sal_Bool 	bNoInterrupt 	= sal_False;
164 
165 #include <sfx2/app.hxx>
166 
167 #include <svx/svxerr.hxx>
168 
169 #include <unomid.h>
170 
171 using namespace com::sun::star;
172 
173 
174 TYPEINIT1( SwModule, SfxModule );
175 
176 using namespace ::com::sun::star;
177 using namespace ::com::sun::star::uno;
178 
179 //************************************************************************
180 
181 SwModule::SwModule( SfxObjectFactory* pWebFact,
182 					SfxObjectFactory* pFact,
183 					SfxObjectFactory* pGlobalFact )
184 	: SfxModule( SfxApplication::CreateResManager( "sw" ), sal_False, pWebFact,
185 					 pFact, pGlobalFact, NULL ),
186 	pModuleConfig(0),
187     pUsrPref(0),
188     pWebUsrPref(0),
189     pPrtOpt(0),
190     pWebPrtOpt(0),
191     pChapterNumRules(0),
192     pStdFontConfig(0),
193     pNavigationConfig(0),
194     pToolbarConfig(0),
195     pWebToolbarConfig(0),
196     pDBConfig(0),
197     pColorConfig(0),
198     pAccessibilityOptions(0),
199     pCTLOptions(0),
200     pUserOptions(0),
201     pUndoOptions(0),
202     pAttrPool(0),
203     pView(0),
204 	bAuthorInitialised(sal_False),
205     bEmbeddedLoadSave( sal_False ),
206     pDragDrop( 0 ),
207     pXSelection( 0 )
208 {
209 	SetName( String::CreateFromAscii("StarWriter") );
210 	pSwResMgr = GetResMgr();
211 	SvxErrorHandler::Get();
212 	pErrorHdl = new SfxErrorHandler( RID_SW_ERRHDL,
213 									 ERRCODE_AREA_SW,
214 									 ERRCODE_AREA_SW_END,
215 									 pSwResMgr );
216 
217 	pModuleConfig = new SwModuleOptions;
218 
219 	//Die brauchen wie sowieso
220 	pToolbarConfig = new SwToolbarConfigItem( sal_False );
221 	pWebToolbarConfig = new SwToolbarConfigItem( sal_True );
222 
223 	pStdFontConfig = new SwStdFontConfig;
224 
225 	pAuthorNames = new SvStringsDtor(5, 1);	// Alle Redlining-Autoren
226 
227 	//JP 18.10.96: SvxAutocorrect gegen die SwAutocorrect austauschen
228 	SvxAutoCorrCfg*	pACfg = SvxAutoCorrCfg::Get();
229 	if( pACfg )
230 	{
231 		const SvxAutoCorrect* pOld = pACfg->GetAutoCorrect();
232 		pACfg->SetAutoCorrect(new SwAutoCorrect( *pOld ));
233 	}
234 
235 	StartListening( *SFX_APP() );
236 
237     // OD 14.02.2003 #107424# - init color configuration
238     // member <pColorConfig> is created and the color configuration is applied
239     // at the view options.
240     GetColorConfig();
241 }
242 
243 //************************************************************************
244 
245 uno::Reference< scanner::XScannerManager >
246 SwModule::GetScannerManager()
247 {
248 	if (!m_xScannerManager.is())
249 	{
250         uno::Reference< lang::XMultiServiceFactory > xMgr (
251 			comphelper::getProcessServiceFactory() );
252 		if( xMgr.is() )
253 		{
254 			m_xScannerManager =
255                 uno::Reference< scanner::XScannerManager >(
256 					xMgr->createInstance(
257 						rtl::OUString::createFromAscii(
258 							"com.sun.star.scanner.ScannerManager" ) ),
259                     uno::UNO_QUERY );
260 		}
261 	}
262 	return m_xScannerManager;
263 }
264 
265 uno::Reference< linguistic2::XLanguageGuessing > SwModule::GetLanguageGuesser()
266 {
267     if (!m_xLanguageGuesser.is())
268     {
269         uno::Reference< lang::XMultiServiceFactory > xMgr ( comphelper::getProcessServiceFactory() );
270         if (xMgr.is())
271         {
272             m_xLanguageGuesser = uno::Reference< linguistic2::XLanguageGuessing >(
273                     xMgr->createInstance(
274                         rtl::OUString::createFromAscii( "com.sun.star.linguistic2.LanguageGuessing" ) ),
275                         uno::UNO_QUERY );
276         }
277     }
278     return m_xLanguageGuesser;
279 }
280 
281 //************************************************************************
282 
283 SwModule::~SwModule()
284 {
285 	SetPool(0);
286 	SfxItemPool::Free(pAttrPool);
287 	delete pErrorHdl;
288     EndListening( *SFX_APP() );
289 }
290 
291 //************************************************************************
292 
293 void SwModule::CreateLngSvcEvtListener()
294 {
295     if (!xLngSvcEvtListener.is())
296         xLngSvcEvtListener = new SwLinguServiceEventListener;
297 }
298 
299 //************************************************************************
300 
301 void SwDLL::RegisterFactories()
302 {
303 	//Diese Id's duerfen nicht geaendert werden. Mittels der Id's wird vom
304 	//Sfx die View (Dokumentansicht wiederherstellen) erzeugt.
305     if ( SvtModuleOptions().IsWriter() )
306         SwView::RegisterFactory         ( 2 );
307 
308 	SwWebView::RegisterFactory		( 5 );
309 
310     if ( SvtModuleOptions().IsWriter() )
311     {
312         SwSrcView::RegisterFactory      ( 6 );
313         SwPagePreView::RegisterFactory  ( 7 );
314     }
315 }
316 
317 //************************************************************************
318 
319 
320 void SwDLL::RegisterInterfaces()
321 {
322 	SwModule* pMod = SW_MOD();
323 	SwModule::RegisterInterface( pMod );
324 	SwDocShell::RegisterInterface( pMod );
325 	SwWebDocShell::RegisterInterface( pMod );
326 	SwGlosDocShell::RegisterInterface( pMod );
327 	SwWebGlosDocShell::RegisterInterface( pMod );
328 	SwView::RegisterInterface( pMod );
329 	SwWebView::RegisterInterface( pMod );
330 	SwPagePreView::RegisterInterface( pMod );
331 	SwSrcView::RegisterInterface( pMod );
332 
333 
334 	SwBaseShell::RegisterInterface(pMod);
335 	SwTextShell::RegisterInterface(pMod);
336 	SwTableShell::RegisterInterface(pMod);
337 	SwListShell::RegisterInterface(pMod);
338 	SwFrameShell::RegisterInterface(pMod);
339 	SwDrawBaseShell::RegisterInterface(pMod);
340 	SwDrawShell::RegisterInterface(pMod);
341 	SwDrawFormShell::RegisterInterface(pMod);
342 	SwDrawTextShell::RegisterInterface(pMod);
343 	SwBezierShell::RegisterInterface(pMod);
344 	SwGrfShell::RegisterInterface(pMod);
345 	SwOleShell::RegisterInterface(pMod);
346 	SwWebTextShell::RegisterInterface(pMod);
347 	SwWebFrameShell::RegisterInterface(pMod);
348 	SwWebGrfShell::RegisterInterface(pMod);
349 	SwWebListShell::RegisterInterface(pMod);
350 	SwWebTableShell::RegisterInterface(pMod);
351 	SwWebDrawFormShell::RegisterInterface(pMod);
352 	SwWebOleShell::RegisterInterface(pMod);
353 	SwMediaShell::RegisterInterface(pMod);
354     SwAnnotationShell::RegisterInterface(pMod);
355 }
356 
357 //************************************************************************
358 
359 void SwDLL::RegisterControls()
360 {
361 	SwModule* pMod = SW_MOD();
362     SvxTbxCtlDraw::RegisterControl(SID_INSERT_DRAW, pMod );
363     SvxTbxCtlAlign::RegisterControl(SID_OBJECT_ALIGN, pMod );
364 	SwTbxAnchor::RegisterControl(FN_TOOL_ANKER, pMod );
365 	SwTbxInsertCtrl::RegisterControl(FN_INSERT_CTRL, pMod );
366 	SwTbxInsertCtrl::RegisterControl(FN_INSERT_OBJ_CTRL, pMod );
367 	SwTbxAutoTextCtrl::RegisterControl(FN_INSERT_FIELD_CTRL, pMod );
368 	SwTbxAutoTextCtrl::RegisterControl(FN_GLOSSARY_DLG, pMod );
369 
370 	SvxTbxCtlCustomShapes::RegisterControl( SID_DRAWTBX_CS_BASIC, pMod );
371 	SvxTbxCtlCustomShapes::RegisterControl( SID_DRAWTBX_CS_SYMBOL, pMod );
372 	SvxTbxCtlCustomShapes::RegisterControl( SID_DRAWTBX_CS_ARROW, pMod );
373 	SvxTbxCtlCustomShapes::RegisterControl( SID_DRAWTBX_CS_FLOWCHART, pMod );
374 	SvxTbxCtlCustomShapes::RegisterControl( SID_DRAWTBX_CS_CALLOUT, pMod );
375 	SvxTbxCtlCustomShapes::RegisterControl( SID_DRAWTBX_CS_STAR, pMod );
376 
377 	svx::ExtrusionColorControl::RegisterControl( SID_EXTRUSION_3D_COLOR, pMod );
378 	svx::FontWorkShapeTypeControl::RegisterControl( SID_FONTWORK_SHAPE_TYPE, pMod );
379 
380 	SvxClipBoardControl::RegisterControl(SID_PASTE, pMod );
381 	SvxUndoRedoControl::RegisterControl(SID_UNDO, pMod );
382 	SvxUndoRedoControl::RegisterControl(SID_REDO, pMod );
383     svx::FormatPaintBrushToolBoxControl::RegisterControl(SID_FORMATPAINTBRUSH, pMod );
384 
385 	SvxFillToolBoxControl::RegisterControl(SID_ATTR_FILL_STYLE, pMod );
386 	SvxLineStyleToolBoxControl::RegisterControl(SID_ATTR_LINE_STYLE, pMod );
387 	SvxLineWidthToolBoxControl::RegisterControl(SID_ATTR_LINE_WIDTH, pMod );
388 	SvxLineColorToolBoxControl::RegisterControl(SID_ATTR_LINE_COLOR, pMod );
389 	SvxLineEndToolBoxControl::RegisterControl(SID_ATTR_LINEEND_STYLE, pMod );
390 
391 	SvxFontNameToolBoxControl::RegisterControl(SID_ATTR_CHAR_FONT, pMod );
392 //	SvxFontHeightToolBoxControl::RegisterControl(SID_ATTR_CHAR_FONTHEIGHT, pMod );
393 	SvxFontColorToolBoxControl::RegisterControl(SID_ATTR_CHAR_COLOR, pMod );
394 	SvxFontColorExtToolBoxControl::RegisterControl(SID_ATTR_CHAR_COLOR2, pMod );
395 	SvxFontColorExtToolBoxControl::RegisterControl(SID_ATTR_CHAR_COLOR_BACKGROUND, pMod );
396 	SvxStyleToolBoxControl::RegisterControl(SID_STYLE_APPLY, pMod );
397 	SvxColorToolBoxControl::RegisterControl(SID_BACKGROUND_COLOR, pMod );
398 	SvxFrameToolBoxControl::RegisterControl(SID_ATTR_BORDER, pMod );
399 	SvxFrameLineStyleToolBoxControl::RegisterControl(SID_FRAME_LINESTYLE, pMod );
400 	SvxFrameLineColorToolBoxControl::RegisterControl(SID_FRAME_LINECOLOR, pMod );
401 
402 	SvxColumnsToolBoxControl::RegisterControl(FN_INSERT_FRAME_INTERACT, pMod );
403 	SvxColumnsToolBoxControl::RegisterControl(FN_INSERT_FRAME, pMod );
404     SvxColumnsToolBoxControl::RegisterControl(FN_INSERT_REGION, pMod );
405 	SvxTableToolBoxControl::RegisterControl(FN_INSERT_TABLE, pMod );
406     SvxTableToolBoxControl::RegisterControl(FN_SHOW_MULTIPLE_PAGES, pMod );
407 
408 	SvxFontMenuControl::RegisterControl(SID_ATTR_CHAR_FONT, pMod );
409 	SvxFontSizeMenuControl::RegisterControl(SID_ATTR_CHAR_FONTHEIGHT, pMod );
410 
411 	SwZoomControl::RegisterControl(SID_ATTR_ZOOM, pMod );
412     SwPreviewZoomControl::RegisterControl(FN_PREVIEW_ZOOM, pMod);
413 	SvxPosSizeStatusBarControl::RegisterControl(0, pMod );
414 	SvxInsertStatusBarControl::RegisterControl(SID_ATTR_INSERT, pMod );
415 	SvxSelectionModeControl::RegisterControl(FN_STAT_SELMODE, pMod );
416 	XmlSecStatusBarControl::RegisterControl( SID_SIGNATURE, pMod );
417 
418 	SwBookmarkControl::RegisterControl(FN_STAT_PAGE, pMod );
419 	SwTemplateControl::RegisterControl(FN_STAT_TEMPLATE, pMod );
420     SwViewLayoutControl::RegisterControl( SID_ATTR_VIEWLAYOUT, pMod );
421     SvxZoomSliderControl::RegisterControl( SID_ATTR_ZOOMSLIDER, pMod );
422 
423 	SwTableOptimizeCtrl::RegisterControl(FN_OPTIMIZE_TABLE, pMod);
424 
425 	SvxIMapDlgChildWindow::RegisterChildWindow( sal_False, pMod );
426 	SvxSearchDialogWrapper::RegisterChildWindow( sal_False, pMod );
427 	SvxHlinkDlgWrapper::RegisterChildWindow( sal_False, pMod );
428 	SvxHyperlinkDlgWrapper::RegisterChildWindow( sal_False, pMod, SFX_CHILDWIN_FORCEDOCK );
429 	SvxFontWorkChildWindow::RegisterChildWindow( sal_False, pMod );
430 	SwFldDlgWrapper::RegisterChildWindow( sal_False, pMod );
431     SwFldDataOnlyDlgWrapper::RegisterChildWindow( sal_False, pMod );
432 	SvxContourDlgChildWindow::RegisterChildWindow( sal_False, pMod );
433 	SwNavigationChild::RegisterChildWindowContext( pMod );
434 	SwInputChild::RegisterChildWindow( sal_False, pMod, SFX_CHILDWIN_FORCEDOCK );
435 	SwRedlineAcceptChild::RegisterChildWindow( sal_False, pMod );
436 	SwSyncChildWin::RegisterChildWindow( sal_True, pMod );
437     SwMailMergeChildWindow::RegisterChildWindow( sal_False, pMod );
438 //    SwSendMailChildWindow::RegisterChildWindow( sal_False, pMod );
439 	SwInsertIdxMarkWrapper::RegisterChildWindow( sal_False, pMod );
440 	SwInsertAuthMarkWrapper::RegisterChildWindow( sal_False, pMod );
441 	SvxRubyChildWindow::RegisterChildWindow( sal_False, pMod);
442     SwSpellDialogChildWindow::RegisterChildWindow(sal_False, pMod);
443 
444 	SvxGrafRedToolBoxControl::RegisterControl( SID_ATTR_GRAF_RED, pMod );
445 	SvxGrafGreenToolBoxControl::RegisterControl( SID_ATTR_GRAF_GREEN, pMod );
446 	SvxGrafBlueToolBoxControl::RegisterControl( SID_ATTR_GRAF_BLUE, pMod );
447 	SvxGrafLuminanceToolBoxControl::RegisterControl( SID_ATTR_GRAF_LUMINANCE, pMod );
448 	SvxGrafContrastToolBoxControl::RegisterControl( SID_ATTR_GRAF_CONTRAST, pMod );
449 	SvxGrafGammaToolBoxControl::RegisterControl( SID_ATTR_GRAF_GAMMA, pMod );
450 	SvxGrafTransparenceToolBoxControl::RegisterControl( SID_ATTR_GRAF_TRANSPARENCE, pMod );
451 	SvxGrafModeToolBoxControl::RegisterControl( SID_ATTR_GRAF_MODE, pMod );
452     SvxGrafFilterToolBoxControl::RegisterControl( SID_GRFFILTER, pMod );
453     SvxVertTextTbxCtrl::RegisterControl(SID_TEXTDIRECTION_LEFT_TO_RIGHT, pMod);
454     SvxVertTextTbxCtrl::RegisterControl(SID_TEXTDIRECTION_TOP_TO_BOTTOM, pMod);
455     SvxVertTextTbxCtrl::RegisterControl(SID_DRAW_CAPTION_VERTICAL, pMod);
456     SvxVertTextTbxCtrl::RegisterControl(SID_DRAW_TEXT_VERTICAL, pMod);
457 
458     SvxCTLTextTbxCtrl::RegisterControl(SID_ATTR_PARA_LEFT_TO_RIGHT, pMod);
459     SvxCTLTextTbxCtrl::RegisterControl(SID_ATTR_PARA_RIGHT_TO_LEFT, pMod);
460 
461 	GalleryChildWindow::RegisterChildWindow(0, pMod);
462 
463 	::avmedia::MediaToolBoxControl::RegisterControl(SID_AVMEDIA_TOOLBOX, pMod);
464 	::avmedia::MediaPlayer::RegisterChildWindow(0, pMod);
465 
466     SvxSmartTagsControl::RegisterControl(SID_OPEN_SMARTTAGMENU, pMod);
467     ::sfx2::TaskPaneWrapper::RegisterChildWindow( sal_False, pMod );
468 }
469 
470 
471 
472 /*************************************************************************
473 |*
474 |* Modul laden (nur Attrappe fuer das Linken der DLL)
475 |*
476 \************************************************************************/
477 
478 /* -----------------20.04.99 10:46-------------------
479  *
480  * --------------------------------------------------*/
481 void	SwModule::InitAttrPool()
482 {
483 	DBG_ASSERT(!pAttrPool, "Pool ist schon da!");
484 	pAttrPool = new SwAttrPool(0);
485 	SetPool(pAttrPool);
486 }
487 /* -----------------20.04.99 10:46-------------------
488  *
489  * --------------------------------------------------*/
490 void	SwModule::RemoveAttrPool()
491 {
492 	SetPool(0);
493 	SfxItemPool::Free(pAttrPool);
494 }
495 
496 
497