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/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::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