xref: /AOO41X/main/sw/source/ui/app/swmodule.cxx (revision 9dcd2d78ee6377e8ad1e2e01efd517f26f4562c3)
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/sidebar/SidebarChildWindow.hxx>
138 #include <sfx2/taskpane.hxx>
139 #include <sfx2/evntconf.hxx>
140 #include <sfx2/appuno.hxx>
141 #include <swatrset.hxx>
142 #include <idxmrk.hxx>
143 #include <dlelstnr.hxx>
144 #ifndef _BARCFG_HXX
145 #include <barcfg.hxx>
146 #endif
147 #include <svx/rubydialog.hxx>
148 // OD 14.02.2003 #107424#
149 #include <svtools/colorcfg.hxx>
150 
151 #include <editeng/acorrcfg.hxx>
152 #include <unotools/moduleoptions.hxx>
153 
154 #ifndef _AVMEDIA_MEDIAPPLAYER_HXX
155 #include <avmedia/mediaplayer.hxx>
156 #endif
157 #include <avmedia/mediatoolbox.hxx>
158 
159 #include <annotsh.hxx>
160 
161 #include <app.hrc>
162 #include <svx/xmlsecctrl.hxx>
163 ResMgr *pSwResMgr = 0;
164 sal_Bool    bNoInterrupt    = sal_False;
165 
166 #include <sfx2/app.hxx>
167 
168 #include <svx/svxerr.hxx>
169 
170 #include <unomid.h>
171 
172 using namespace com::sun::star;
173 
174 
175 TYPEINIT1( SwModule, SfxModule );
176 
177 using namespace ::com::sun::star;
178 using namespace ::com::sun::star::uno;
179 
180 //************************************************************************
181 
182 SwModule::SwModule( SfxObjectFactory* pWebFact,
183                     SfxObjectFactory* pFact,
184                     SfxObjectFactory* pGlobalFact )
185     : SfxModule( SfxApplication::CreateResManager( "sw" ), sal_False, pWebFact,
186                      pFact, pGlobalFact, NULL ),
187     pModuleConfig(0),
188     pUsrPref(0),
189     pWebUsrPref(0),
190     pPrtOpt(0),
191     pWebPrtOpt(0),
192     pChapterNumRules(0),
193     pStdFontConfig(0),
194     pNavigationConfig(0),
195     pToolbarConfig(0),
196     pWebToolbarConfig(0),
197     pDBConfig(0),
198     pColorConfig(0),
199     pAccessibilityOptions(0),
200     pCTLOptions(0),
201     pUserOptions(0),
202     pUndoOptions(0),
203     pAttrPool(0),
204     pView(0),
205     bAuthorInitialised(sal_False),
206     bEmbeddedLoadSave( sal_False ),
207     pDragDrop( 0 ),
208     pXSelection( 0 )
209 {
210     SetName( String::CreateFromAscii("StarWriter") );
211     pSwResMgr = GetResMgr();
212     SvxErrorHandler::Get();
213     pErrorHdl = new SfxErrorHandler( RID_SW_ERRHDL,
214                                      ERRCODE_AREA_SW,
215                                      ERRCODE_AREA_SW_END,
216                                      pSwResMgr );
217 
218     pModuleConfig = new SwModuleOptions;
219 
220     //Die brauchen wie sowieso
221     pToolbarConfig = new SwToolbarConfigItem( sal_False );
222     pWebToolbarConfig = new SwToolbarConfigItem( sal_True );
223 
224     pStdFontConfig = new SwStdFontConfig;
225 
226     pAuthorNames = new SvStringsDtor(5, 1); // Alle Redlining-Autoren
227 
228     //JP 18.10.96: SvxAutocorrect gegen die SwAutocorrect austauschen
229     SvxAutoCorrCfg* pACfg = SvxAutoCorrCfg::Get();
230     if( pACfg )
231     {
232         const SvxAutoCorrect* pOld = pACfg->GetAutoCorrect();
233         pACfg->SetAutoCorrect(new SwAutoCorrect( *pOld ));
234     }
235 
236     StartListening( *SFX_APP() );
237 
238     // OD 14.02.2003 #107424# - init color configuration
239     // member <pColorConfig> is created and the color configuration is applied
240     // at the view options.
241     GetColorConfig();
242 }
243 
244 //************************************************************************
245 
246 uno::Reference< scanner::XScannerManager >
247 SwModule::GetScannerManager()
248 {
249     if (!m_xScannerManager.is())
250     {
251         uno::Reference< lang::XMultiServiceFactory > xMgr (
252             comphelper::getProcessServiceFactory() );
253         if( xMgr.is() )
254         {
255             m_xScannerManager =
256                 uno::Reference< scanner::XScannerManager >(
257                     xMgr->createInstance(
258                         rtl::OUString::createFromAscii(
259                             "com.sun.star.scanner.ScannerManager" ) ),
260                     uno::UNO_QUERY );
261         }
262     }
263     return m_xScannerManager;
264 }
265 
266 uno::Reference< linguistic2::XLanguageGuessing > SwModule::GetLanguageGuesser()
267 {
268     if (!m_xLanguageGuesser.is())
269     {
270         uno::Reference< lang::XMultiServiceFactory > xMgr ( comphelper::getProcessServiceFactory() );
271         if (xMgr.is())
272         {
273             m_xLanguageGuesser = uno::Reference< linguistic2::XLanguageGuessing >(
274                     xMgr->createInstance(
275                         rtl::OUString::createFromAscii( "com.sun.star.linguistic2.LanguageGuessing" ) ),
276                         uno::UNO_QUERY );
277         }
278     }
279     return m_xLanguageGuesser;
280 }
281 
282 //************************************************************************
283 
284 SwModule::~SwModule()
285 {
286     SetPool(0);
287     SfxItemPool::Free(pAttrPool);
288     delete pErrorHdl;
289     EndListening( *SFX_APP() );
290 }
291 
292 //************************************************************************
293 
294 void SwModule::CreateLngSvcEvtListener()
295 {
296     if (!xLngSvcEvtListener.is())
297         xLngSvcEvtListener = new SwLinguServiceEventListener;
298 }
299 
300 //************************************************************************
301 
302 void SwDLL::RegisterFactories()
303 {
304     //Diese Id's duerfen nicht geaendert werden. Mittels der Id's wird vom
305     //Sfx die View (Dokumentansicht wiederherstellen) erzeugt.
306     if ( SvtModuleOptions().IsWriter() )
307         SwView::RegisterFactory         ( 2 );
308 
309     SwWebView::RegisterFactory      ( 5 );
310 
311     if ( SvtModuleOptions().IsWriter() )
312     {
313         SwSrcView::RegisterFactory      ( 6 );
314         SwPagePreView::RegisterFactory  ( 7 );
315     }
316 }
317 
318 //************************************************************************
319 
320 
321 void SwDLL::RegisterInterfaces()
322 {
323     SwModule* pMod = SW_MOD();
324     SwModule::RegisterInterface( pMod );
325     SwDocShell::RegisterInterface( pMod );
326     SwWebDocShell::RegisterInterface( pMod );
327     SwGlosDocShell::RegisterInterface( pMod );
328     SwWebGlosDocShell::RegisterInterface( pMod );
329     SwView::RegisterInterface( pMod );
330     SwWebView::RegisterInterface( pMod );
331     SwPagePreView::RegisterInterface( pMod );
332     SwSrcView::RegisterInterface( pMod );
333 
334 
335     SwBaseShell::RegisterInterface(pMod);
336     SwTextShell::RegisterInterface(pMod);
337     SwTableShell::RegisterInterface(pMod);
338     SwListShell::RegisterInterface(pMod);
339     SwFrameShell::RegisterInterface(pMod);
340     SwDrawBaseShell::RegisterInterface(pMod);
341     SwDrawShell::RegisterInterface(pMod);
342     SwDrawFormShell::RegisterInterface(pMod);
343     SwDrawTextShell::RegisterInterface(pMod);
344     SwBezierShell::RegisterInterface(pMod);
345     SwGrfShell::RegisterInterface(pMod);
346     SwOleShell::RegisterInterface(pMod);
347     SwWebTextShell::RegisterInterface(pMod);
348     SwWebFrameShell::RegisterInterface(pMod);
349     SwWebGrfShell::RegisterInterface(pMod);
350     SwWebListShell::RegisterInterface(pMod);
351     SwWebTableShell::RegisterInterface(pMod);
352     SwWebDrawFormShell::RegisterInterface(pMod);
353     SwWebOleShell::RegisterInterface(pMod);
354     SwMediaShell::RegisterInterface(pMod);
355     SwAnnotationShell::RegisterInterface(pMod);
356 }
357 
358 //************************************************************************
359 
360 void SwDLL::RegisterControls()
361 {
362     SwModule* pMod = SW_MOD();
363     SvxTbxCtlDraw::RegisterControl(SID_INSERT_DRAW, pMod );
364     SvxTbxCtlAlign::RegisterControl(SID_OBJECT_ALIGN, pMod );
365     SwTbxAnchor::RegisterControl(FN_TOOL_ANKER, pMod );
366     SwTbxInsertCtrl::RegisterControl(FN_INSERT_CTRL, pMod );
367     SwTbxInsertCtrl::RegisterControl(FN_INSERT_OBJ_CTRL, pMod );
368     SwTbxAutoTextCtrl::RegisterControl(FN_INSERT_FIELD_CTRL, pMod );
369     SwTbxAutoTextCtrl::RegisterControl(FN_GLOSSARY_DLG, pMod );
370 
371     SvxTbxCtlCustomShapes::RegisterControl( SID_DRAWTBX_CS_BASIC, pMod );
372     SvxTbxCtlCustomShapes::RegisterControl( SID_DRAWTBX_CS_SYMBOL, pMod );
373     SvxTbxCtlCustomShapes::RegisterControl( SID_DRAWTBX_CS_ARROW, pMod );
374     SvxTbxCtlCustomShapes::RegisterControl( SID_DRAWTBX_CS_FLOWCHART, pMod );
375     SvxTbxCtlCustomShapes::RegisterControl( SID_DRAWTBX_CS_CALLOUT, pMod );
376     SvxTbxCtlCustomShapes::RegisterControl( SID_DRAWTBX_CS_STAR, pMod );
377 
378     svx::ExtrusionColorControl::RegisterControl( SID_EXTRUSION_3D_COLOR, pMod );
379     svx::FontWorkShapeTypeControl::RegisterControl( SID_FONTWORK_SHAPE_TYPE, pMod );
380 
381     SvxClipBoardControl::RegisterControl(SID_PASTE, pMod );
382     SvxUndoRedoControl::RegisterControl(SID_UNDO, pMod );
383     SvxUndoRedoControl::RegisterControl(SID_REDO, pMod );
384     svx::FormatPaintBrushToolBoxControl::RegisterControl(SID_FORMATPAINTBRUSH, pMod );
385 
386     SvxFillToolBoxControl::RegisterControl(SID_ATTR_FILL_STYLE, pMod );
387     SvxLineStyleToolBoxControl::RegisterControl(SID_ATTR_LINE_STYLE, pMod );
388     SvxLineWidthToolBoxControl::RegisterControl(SID_ATTR_LINE_WIDTH, pMod );
389     SvxLineColorToolBoxControl::RegisterControl(SID_ATTR_LINE_COLOR, pMod );
390     SvxLineEndToolBoxControl::RegisterControl(SID_ATTR_LINEEND_STYLE, pMod );
391 
392     SvxFontNameToolBoxControl::RegisterControl(SID_ATTR_CHAR_FONT, pMod );
393 //  SvxFontHeightToolBoxControl::RegisterControl(SID_ATTR_CHAR_FONTHEIGHT, pMod );
394     SvxFontColorToolBoxControl::RegisterControl(SID_ATTR_CHAR_COLOR, pMod );
395     SvxFontColorExtToolBoxControl::RegisterControl(SID_ATTR_CHAR_COLOR2, pMod );
396     SvxFontColorExtToolBoxControl::RegisterControl(SID_ATTR_CHAR_COLOR_BACKGROUND, pMod );
397     SvxStyleToolBoxControl::RegisterControl(SID_STYLE_APPLY, pMod );
398     SvxColorToolBoxControl::RegisterControl(SID_BACKGROUND_COLOR, pMod );
399     SvxFrameToolBoxControl::RegisterControl(SID_ATTR_BORDER, pMod );
400     SvxFrameLineStyleToolBoxControl::RegisterControl(SID_FRAME_LINESTYLE, pMod );
401     SvxFrameLineColorToolBoxControl::RegisterControl(SID_FRAME_LINECOLOR, pMod );
402 
403     SvxColumnsToolBoxControl::RegisterControl(FN_INSERT_FRAME_INTERACT, pMod );
404     SvxColumnsToolBoxControl::RegisterControl(FN_INSERT_FRAME, pMod );
405     SvxColumnsToolBoxControl::RegisterControl(FN_INSERT_REGION, pMod );
406     SvxTableToolBoxControl::RegisterControl(FN_INSERT_TABLE, pMod );
407     SvxTableToolBoxControl::RegisterControl(FN_SHOW_MULTIPLE_PAGES, pMod );
408 
409     SvxFontMenuControl::RegisterControl(SID_ATTR_CHAR_FONT, pMod );
410     SvxFontSizeMenuControl::RegisterControl(SID_ATTR_CHAR_FONTHEIGHT, pMod );
411 
412     SwZoomControl::RegisterControl(SID_ATTR_ZOOM, pMod );
413     SwPreviewZoomControl::RegisterControl(FN_PREVIEW_ZOOM, pMod);
414     SvxPosSizeStatusBarControl::RegisterControl(0, pMod );
415     SvxInsertStatusBarControl::RegisterControl(SID_ATTR_INSERT, pMod );
416     SvxSelectionModeControl::RegisterControl(FN_STAT_SELMODE, pMod );
417     XmlSecStatusBarControl::RegisterControl( SID_SIGNATURE, pMod );
418 
419     SwBookmarkControl::RegisterControl(FN_STAT_PAGE, pMod );
420     SwTemplateControl::RegisterControl(FN_STAT_TEMPLATE, pMod );
421     SwViewLayoutControl::RegisterControl( SID_ATTR_VIEWLAYOUT, pMod );
422     SvxZoomSliderControl::RegisterControl( SID_ATTR_ZOOMSLIDER, pMod );
423 
424     SwTableOptimizeCtrl::RegisterControl(FN_OPTIMIZE_TABLE, pMod);
425 
426     SvxIMapDlgChildWindow::RegisterChildWindow( sal_False, pMod );
427     SvxSearchDialogWrapper::RegisterChildWindow( sal_False, pMod );
428     SvxHlinkDlgWrapper::RegisterChildWindow( sal_False, pMod );
429     SvxHyperlinkDlgWrapper::RegisterChildWindow( sal_False, pMod, SFX_CHILDWIN_FORCEDOCK );
430     SvxFontWorkChildWindow::RegisterChildWindow( sal_False, pMod );
431     SwFldDlgWrapper::RegisterChildWindow( sal_False, pMod );
432     SwFldDataOnlyDlgWrapper::RegisterChildWindow( sal_False, pMod );
433     SvxContourDlgChildWindow::RegisterChildWindow( sal_False, pMod );
434     SwNavigationChild::RegisterChildWindowContext( pMod );
435     SwInputChild::RegisterChildWindow( sal_False, pMod, SFX_CHILDWIN_FORCEDOCK );
436     SwRedlineAcceptChild::RegisterChildWindow( sal_False, pMod );
437     SwSyncChildWin::RegisterChildWindow( sal_True, pMod );
438     SwMailMergeChildWindow::RegisterChildWindow( sal_False, pMod );
439 //    SwSendMailChildWindow::RegisterChildWindow( sal_False, pMod );
440     SwInsertIdxMarkWrapper::RegisterChildWindow( sal_False, pMod );
441     SwInsertAuthMarkWrapper::RegisterChildWindow( sal_False, pMod );
442     SvxRubyChildWindow::RegisterChildWindow( sal_False, pMod);
443     SwSpellDialogChildWindow::RegisterChildWindow(sal_False, pMod);
444 
445     SvxGrafRedToolBoxControl::RegisterControl( SID_ATTR_GRAF_RED, pMod );
446     SvxGrafGreenToolBoxControl::RegisterControl( SID_ATTR_GRAF_GREEN, pMod );
447     SvxGrafBlueToolBoxControl::RegisterControl( SID_ATTR_GRAF_BLUE, pMod );
448     SvxGrafLuminanceToolBoxControl::RegisterControl( SID_ATTR_GRAF_LUMINANCE, pMod );
449     SvxGrafContrastToolBoxControl::RegisterControl( SID_ATTR_GRAF_CONTRAST, pMod );
450     SvxGrafGammaToolBoxControl::RegisterControl( SID_ATTR_GRAF_GAMMA, pMod );
451     SvxGrafTransparenceToolBoxControl::RegisterControl( SID_ATTR_GRAF_TRANSPARENCE, pMod );
452     SvxGrafModeToolBoxControl::RegisterControl( SID_ATTR_GRAF_MODE, pMod );
453     SvxGrafFilterToolBoxControl::RegisterControl( SID_GRFFILTER, pMod );
454     SvxVertTextTbxCtrl::RegisterControl(SID_TEXTDIRECTION_LEFT_TO_RIGHT, pMod);
455     SvxVertTextTbxCtrl::RegisterControl(SID_TEXTDIRECTION_TOP_TO_BOTTOM, pMod);
456     SvxVertTextTbxCtrl::RegisterControl(SID_DRAW_CAPTION_VERTICAL, pMod);
457     SvxVertTextTbxCtrl::RegisterControl(SID_DRAW_TEXT_VERTICAL, pMod);
458 
459     SvxCTLTextTbxCtrl::RegisterControl(SID_ATTR_PARA_LEFT_TO_RIGHT, pMod);
460     SvxCTLTextTbxCtrl::RegisterControl(SID_ATTR_PARA_RIGHT_TO_LEFT, pMod);
461 
462     GalleryChildWindow::RegisterChildWindow(0, pMod);
463 
464     ::avmedia::MediaToolBoxControl::RegisterControl(SID_AVMEDIA_TOOLBOX, pMod);
465     ::avmedia::MediaPlayer::RegisterChildWindow(0, pMod);
466 
467     SvxSmartTagsControl::RegisterControl(SID_OPEN_SMARTTAGMENU, pMod);
468     ::sfx2::sidebar::SidebarChildWindow::RegisterChildWindow(NULL, pMod);
469     ::sfx2::TaskPaneWrapper::RegisterChildWindow(NULL, pMod);
470 }
471 
472 
473 
474 /*************************************************************************
475 |*
476 |* Modul laden (nur Attrappe fuer das Linken der DLL)
477 |*
478 \************************************************************************/
479 
480 /* -----------------20.04.99 10:46-------------------
481  *
482  * --------------------------------------------------*/
483 void    SwModule::InitAttrPool()
484 {
485     DBG_ASSERT(!pAttrPool, "Pool ist schon da!");
486     pAttrPool = new SwAttrPool(0);
487     SetPool(pAttrPool);
488 }
489 /* -----------------20.04.99 10:46-------------------
490  *
491  * --------------------------------------------------*/
492 void    SwModule::RemoveAttrPool()
493 {
494     SetPool(0);
495     SfxItemPool::Free(pAttrPool);
496 }
497 
498 
499