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 // MARKER(update_precomp.py): autogen include statement, do not remove 23 #include "precompiled_sc.hxx" 24 25 #include <editeng/eeitem.hxx> 26 27 #ifndef _FM_FMOBJFAC_HXX 28 #include <svx/fmobjfac.hxx> 29 #endif 30 #include <svx/objfac3d.hxx> 31 #include <svx/tbxcolor.hxx> 32 33 #include <sot/clsids.hxx> 34 #include <sfx2/sidebar/SidebarChildWindow.hxx> 35 #include <sfx2/docfilt.hxx> 36 #include <sfx2/fcontnr.hxx> 37 #include <sfx2/docfile.hxx> 38 #include <sfx2/app.hxx> 39 #include <avmedia/mediaplayer.hxx> 40 #include <avmedia/mediatoolbox.hxx> 41 #include <comphelper/types.hxx> 42 #include <svx/extrusioncolorcontrol.hxx> 43 #include <svx/fontworkgallery.hxx> 44 #include <svx/tbxcustomshapes.hxx> 45 46 #include <svtools/parhtml.hxx> 47 #include <sot/formats.hxx> 48 #define SOT_FORMATSTR_ID_STARCALC_30 SOT_FORMATSTR_ID_STARCALC 49 50 #include "scitems.hxx" // for tbxctrls etc. 51 #include "scmod.hxx" 52 #include "scresid.hxx" 53 #include "sc.hrc" 54 #include "cfgids.hxx" 55 56 //! die Registrierung wird wegen CLOOKs in ein eigenes File wandern muessen... 57 58 // Interface-Registrierung 59 #include "docsh.hxx" 60 #include "tabvwsh.hxx" 61 #include "prevwsh.hxx" 62 #include "drawsh.hxx" 63 #include "drformsh.hxx" 64 #include "drtxtob.hxx" 65 #include "editsh.hxx" 66 #include "pivotsh.hxx" 67 #include "auditsh.hxx" 68 #include "cellsh.hxx" 69 #include "oleobjsh.hxx" 70 #include "chartsh.hxx" 71 #include "graphsh.hxx" 72 #include "mediash.hxx" 73 #include "pgbrksh.hxx" 74 75 #include "docpool.hxx" 76 #include "appoptio.hxx" 77 78 // Controls 79 80 #include <svx/tbxalign.hxx> 81 #include <svx/tbxctl.hxx> 82 #include <svx/fillctrl.hxx> 83 #include <svx/linectrl.hxx> 84 #include <svx/tbcontrl.hxx> 85 #include <svx/selctrl.hxx> 86 #include <svx/insctrl.hxx> 87 #include <svx/zoomctrl.hxx> 88 #include <editeng/flditem.hxx> 89 #include <svx/modctrl.hxx> 90 #include <svx/pszctrl.hxx> 91 #include <svx/fntctl.hxx> 92 #include <svx/fntszctl.hxx> 93 #include <svx/grafctrl.hxx> 94 #include <svx/galbrws.hxx> 95 #include <svx/clipboardctl.hxx> 96 #include <svx/lboxctrl.hxx> 97 #include <svx/verttexttbxctrl.hxx> 98 #include <svx/formatpaintbrushctrl.hxx> 99 #include "tbinsert.hxx" 100 #include "tbzoomsliderctrl.hxx" 101 #include <svx/zoomsliderctrl.hxx> 102 103 #include <svx/xmlsecctrl.hxx> 104 // Child-Windows 105 #include "reffact.hxx" 106 #include "navipi.hxx" 107 #include "inputwin.hxx" 108 #include "spelldialog.hxx" 109 #include <svx/fontwork.hxx> 110 #include <svx/srchdlg.hxx> 111 #include <svx/hyprlink.hxx> 112 #include <svx/hyperdlg.hxx> 113 #include <svx/imapdlg.hxx> 114 115 #include "editutil.hxx" 116 #include <svx/svdfield.hxx> // SdrRegisterFieldClasses 117 #include <rtl/logfile.hxx> 118 119 #include "dwfunctr.hxx" 120 #include "acredlin.hxx" 121 122 //------------------------------------------------------------------ 123 124 //UNUSED2008-05 // filter detection can't use ScFilterOptions (in sc-dll), 125 //UNUSED2008-05 // so access to wk3 flag must be implemented here again 126 //UNUSED2008-05 127 //UNUSED2008-05 class ScLibOptions : public utl::ConfigItem 128 //UNUSED2008-05 { 129 //UNUSED2008-05 sal_Bool bWK3Flag; 130 //UNUSED2008-05 131 //UNUSED2008-05 public: 132 //UNUSED2008-05 ScLibOptions(); 133 //UNUSED2008-05 sal_Bool GetWK3Flag() const { return bWK3Flag; } 134 //UNUSED2008-05 }; 135 //UNUSED2008-05 136 //UNUSED2008-05 #define CFGPATH_LIBFILTER "Office.Calc/Filter/Import/Lotus123" 137 //UNUSED2008-05 #define ENTRYSTR_WK3 "WK3" 138 //UNUSED2008-05 139 //UNUSED2008-05 ScLibOptions::ScLibOptions() : 140 //UNUSED2008-05 ConfigItem( rtl::OUString::createFromAscii( CFGPATH_LIBFILTER ) ), 141 //UNUSED2008-05 bWK3Flag( sal_False ) 142 //UNUSED2008-05 { 143 //UNUSED2008-05 com::sun::star::uno::Sequence<rtl::OUString> aNames(1); 144 //UNUSED2008-05 aNames[0] = rtl::OUString::createFromAscii( ENTRYSTR_WK3 ); 145 //UNUSED2008-05 com::sun::star::uno::Sequence<com::sun::star::uno::Any> aValues = GetProperties(aNames); 146 //UNUSED2008-05 if ( aValues.getLength() == 1 && aValues[0].hasValue() ) 147 //UNUSED2008-05 bWK3Flag = comphelper::getBOOL( aValues[0] ); 148 //UNUSED2008-05 } 149 150 //------------------------------------------------------------------ 151 152 ScResId::ScResId( sal_uInt16 nId ) : 153 ResId( nId, *SC_MOD()->GetResMgr() ) 154 { 155 } 156 157 //------------------------------------------------------------------ 158 159 void ScDLL::Init() 160 { 161 RTL_LOGFILE_CONTEXT_AUTHOR ( aLog, "sc", "nn93723", "ScDLL::Init" ); 162 163 ScModule **ppShlPtr = (ScModule**) GetAppData(SHL_CALC); 164 if ( *ppShlPtr ) 165 return; 166 167 ScDocumentPool::InitVersionMaps(); // wird im ScModule ctor gebraucht 168 169 ScModule* pMod = new ScModule( &ScDocShell::Factory() ); 170 (*ppShlPtr) = pMod; 171 172 //REMOVE ScDocShell::RegisterFactory( SDT_SC_DOCFACTPRIO ); 173 174 ScDocShell::Factory().SetDocumentServiceName( rtl::OUString::createFromAscii( "com.sun.star.sheet.SpreadsheetDocument" ) ); 175 176 ScGlobal::Init(); // erst wenn der ResManager initialisiert ist 177 // erst nach ScGlobal::Init duerfen die App-Optionen 178 // initialisiert werden 179 180 // register your view-factories here 181 182 ScTabViewShell ::RegisterFactory(1); 183 ScPreviewShell ::RegisterFactory(2); 184 185 // register your shell-interfaces here 186 187 ScModule ::RegisterInterface(pMod); 188 ScDocShell ::RegisterInterface(pMod); 189 ScTabViewShell ::RegisterInterface(pMod); 190 ScPreviewShell ::RegisterInterface(pMod); 191 ScDrawShell ::RegisterInterface(pMod); 192 ScDrawFormShell ::RegisterInterface(pMod); 193 ScDrawTextObjectBar ::RegisterInterface(pMod); 194 ScEditShell ::RegisterInterface(pMod); 195 ScPivotShell ::RegisterInterface(pMod); 196 ScAuditingShell ::RegisterInterface(pMod); 197 ScFormatShell ::RegisterInterface(pMod); 198 ScCellShell ::RegisterInterface(pMod); 199 ScOleObjectShell ::RegisterInterface(pMod); 200 ScChartShell ::RegisterInterface(pMod); 201 ScGraphicShell ::RegisterInterface(pMod); 202 ScMediaShell ::RegisterInterface(pMod); 203 ScPageBreakShell ::RegisterInterface(pMod); 204 205 // eigene Controller 206 ScTbxInsertCtrl ::RegisterControl(SID_TBXCTL_INSERT, pMod); 207 ScTbxInsertCtrl ::RegisterControl(SID_TBXCTL_INSCELLS, pMod); 208 ScTbxInsertCtrl ::RegisterControl(SID_TBXCTL_INSOBJ, pMod); 209 ScZoomSliderControl ::RegisterControl(SID_PREVIEW_SCALINGFACTOR, pMod); 210 211 // Svx-Toolbox-Controller 212 SvxTbxCtlDraw ::RegisterControl(SID_INSERT_DRAW, pMod); 213 SvxTbxCtlCustomShapes ::RegisterControl(SID_DRAWTBX_CS_BASIC, pMod); 214 SvxTbxCtlCustomShapes ::RegisterControl(SID_DRAWTBX_CS_SYMBOL, pMod); 215 SvxTbxCtlCustomShapes ::RegisterControl(SID_DRAWTBX_CS_ARROW, pMod); 216 SvxTbxCtlCustomShapes ::RegisterControl(SID_DRAWTBX_CS_FLOWCHART, pMod); 217 SvxTbxCtlCustomShapes ::RegisterControl(SID_DRAWTBX_CS_CALLOUT, pMod); 218 SvxTbxCtlCustomShapes ::RegisterControl(SID_DRAWTBX_CS_STAR, pMod); 219 SvxTbxCtlAlign ::RegisterControl(SID_OBJECT_ALIGN, pMod); 220 SvxFillToolBoxControl ::RegisterControl(0, pMod); 221 SvxLineStyleToolBoxControl ::RegisterControl(0, pMod); 222 SvxLineWidthToolBoxControl ::RegisterControl(0, pMod); 223 SvxLineColorToolBoxControl ::RegisterControl(0, pMod); 224 SvxLineEndToolBoxControl ::RegisterControl(SID_ATTR_LINEEND_STYLE, pMod); 225 SvxStyleToolBoxControl ::RegisterControl(SID_STYLE_APPLY, pMod); 226 SvxFontNameToolBoxControl ::RegisterControl(SID_ATTR_CHAR_FONT, pMod); 227 // SvxFontHeightToolBoxControl ::RegisterControl(SID_ATTR_CHAR_FONTHEIGHT, pMod); 228 SvxFontColorToolBoxControl ::RegisterControl(SID_ATTR_CHAR_COLOR, pMod); 229 SvxColorToolBoxControl ::RegisterControl(SID_BACKGROUND_COLOR, pMod); 230 SvxFrameToolBoxControl ::RegisterControl(SID_ATTR_BORDER, pMod); 231 SvxFrameLineStyleToolBoxControl ::RegisterControl(SID_FRAME_LINESTYLE, pMod); 232 SvxFrameLineColorToolBoxControl ::RegisterControl(SID_FRAME_LINECOLOR, pMod); 233 SvxClipBoardControl ::RegisterControl(SID_PASTE, pMod ); 234 SvxUndoRedoControl ::RegisterControl(SID_UNDO, pMod ); 235 SvxUndoRedoControl ::RegisterControl(SID_REDO, pMod ); 236 svx::FormatPaintBrushToolBoxControl::RegisterControl(SID_FORMATPAINTBRUSH, pMod ); 237 238 SvxGrafModeToolBoxControl ::RegisterControl(SID_ATTR_GRAF_MODE, pMod); 239 SvxGrafRedToolBoxControl ::RegisterControl(SID_ATTR_GRAF_RED, pMod); 240 SvxGrafGreenToolBoxControl ::RegisterControl(SID_ATTR_GRAF_GREEN, pMod); 241 SvxGrafBlueToolBoxControl ::RegisterControl(SID_ATTR_GRAF_BLUE, pMod); 242 SvxGrafLuminanceToolBoxControl ::RegisterControl(SID_ATTR_GRAF_LUMINANCE, pMod); 243 SvxGrafContrastToolBoxControl ::RegisterControl(SID_ATTR_GRAF_CONTRAST, pMod); 244 SvxGrafGammaToolBoxControl ::RegisterControl(SID_ATTR_GRAF_GAMMA, pMod); 245 SvxGrafTransparenceToolBoxControl::RegisterControl(SID_ATTR_GRAF_TRANSPARENCE, pMod); 246 SvxGrafFilterToolBoxControl ::RegisterControl(SID_GRFFILTER, pMod); 247 248 SvxVertTextTbxCtrl::RegisterControl(SID_DRAW_CAPTION_VERTICAL, pMod); 249 SvxVertTextTbxCtrl::RegisterControl(SID_DRAW_TEXT_VERTICAL, pMod); 250 SvxVertTextTbxCtrl::RegisterControl(SID_TEXTDIRECTION_LEFT_TO_RIGHT, pMod); 251 SvxVertTextTbxCtrl::RegisterControl(SID_TEXTDIRECTION_TOP_TO_BOTTOM, pMod); 252 SvxCTLTextTbxCtrl::RegisterControl(SID_ATTR_PARA_LEFT_TO_RIGHT, pMod); 253 SvxCTLTextTbxCtrl::RegisterControl(SID_ATTR_PARA_RIGHT_TO_LEFT, pMod); 254 255 //Media Controller 256 ::avmedia::MediaToolBoxControl::RegisterControl( SID_AVMEDIA_TOOLBOX, pMod ); 257 258 // common SFX controller 259 ::sfx2::sidebar::SidebarChildWindow::RegisterChildWindow(sal_False, pMod); 260 261 // Svx-StatusBar-Controller 262 SvxInsertStatusBarControl ::RegisterControl(SID_ATTR_INSERT, pMod); 263 SvxSelectionModeControl ::RegisterControl(SID_STATUS_SELMODE, pMod); 264 SvxZoomStatusBarControl ::RegisterControl(SID_ATTR_ZOOM, pMod); 265 SvxZoomSliderControl ::RegisterControl(SID_ATTR_ZOOMSLIDER, pMod); 266 SvxModifyControl ::RegisterControl(SID_DOC_MODIFIED, pMod); 267 XmlSecStatusBarControl ::RegisterControl( SID_SIGNATURE, pMod ); 268 269 SvxPosSizeStatusBarControl ::RegisterControl(SID_ATTR_SIZE, pMod); 270 271 // Svx-Menue-Controller 272 SvxFontMenuControl ::RegisterControl(SID_ATTR_CHAR_FONT, pMod); 273 SvxFontSizeMenuControl ::RegisterControl(SID_ATTR_CHAR_FONTHEIGHT, pMod); 274 275 // CustomShape extrusion controller 276 svx::ExtrusionColorControl::RegisterControl( SID_EXTRUSION_3D_COLOR, pMod ); 277 svx::FontWorkShapeTypeControl::RegisterControl( SID_FONTWORK_SHAPE_TYPE, pMod ); 278 279 // Child-Windows 280 281 // Hack: Eingabezeile mit 42 registrieren, damit sie im PlugIn immer sichtbar ist 282 ScInputWindowWrapper ::RegisterChildWindow(42, pMod, SFX_CHILDWIN_TASK|SFX_CHILDWIN_FORCEDOCK); 283 ScNavigatorDialogWrapper ::RegisterChildWindowContext( 284 sal::static_int_cast<sal_uInt16>(ScTabViewShell::GetInterfaceId()), pMod); 285 ScSolverDlgWrapper ::RegisterChildWindow(sal_False, pMod); 286 ScOptSolverDlgWrapper ::RegisterChildWindow(sal_False, pMod); 287 ScNameDlgWrapper ::RegisterChildWindow(sal_False, pMod); 288 ScPivotLayoutWrapper ::RegisterChildWindow(sal_False, pMod); 289 ScTabOpDlgWrapper ::RegisterChildWindow(sal_False, pMod); 290 ScFilterDlgWrapper ::RegisterChildWindow(sal_False, pMod); 291 ScSpecialFilterDlgWrapper ::RegisterChildWindow(sal_False, pMod); 292 ScDbNameDlgWrapper ::RegisterChildWindow(sal_False, pMod); 293 ScConsolidateDlgWrapper ::RegisterChildWindow(sal_False, pMod); 294 ScPrintAreasDlgWrapper ::RegisterChildWindow(sal_False, pMod); 295 ScCondFormatDlgWrapper ::RegisterChildWindow(sal_False, pMod); 296 ScColRowNameRangesDlgWrapper::RegisterChildWindow(sal_False, pMod); 297 ScFormulaDlgWrapper ::RegisterChildWindow(sal_False, pMod); 298 299 // First docking Window for Calc 300 ScFunctionChildWindow ::RegisterChildWindow(sal_False, pMod); 301 302 // Redlining- Window 303 ScAcceptChgDlgWrapper ::RegisterChildWindow(sal_False, pMod); 304 ScSimpleRefDlgWrapper ::RegisterChildWindow(sal_False, pMod, SFX_CHILDWIN_ALWAYSAVAILABLE|SFX_CHILDWIN_NEVERHIDE ); 305 ScHighlightChgDlgWrapper ::RegisterChildWindow(sal_False, pMod); 306 307 SvxSearchDialogWrapper ::RegisterChildWindow(sal_False, pMod); 308 SvxHlinkDlgWrapper ::RegisterChildWindow(sal_False, pMod); 309 SvxFontWorkChildWindow ::RegisterChildWindow(sal_False, pMod); 310 SvxHyperlinkDlgWrapper ::RegisterChildWindow(sal_False, pMod, SFX_CHILDWIN_FORCEDOCK); 311 SvxIMapDlgChildWindow ::RegisterChildWindow(sal_False, pMod); 312 GalleryChildWindow ::RegisterChildWindow(sal_False, pMod); 313 ScSpellDialogChildWindow ::RegisterChildWindow(sal_False, pMod); 314 ::avmedia::MediaPlayer ::RegisterChildWindow(sal_False, pMod); 315 316 //<!--Added by PengYunQuan for Validity Cell Range Picker 317 ScValidityRefChildWin::RegisterChildWindow(sal_False, pMod); 318 //-->Added by PengYunQuan for Validity Cell Range Picker 319 320 // Edit-Engine-Felder, soweit nicht schon in OfficeApplication::Init 321 322 SvClassManager& rClassManager = SvxFieldItem::GetClassManager(); 323 // rClassManager.SV_CLASS_REGISTER( SvxURLField ); 324 // rClassManager.SV_CLASS_REGISTER( SvxDateField ); 325 // rClassManager.SV_CLASS_REGISTER( SvxPageField ); 326 rClassManager.SV_CLASS_REGISTER( SvxPagesField ); 327 // rClassManager.SV_CLASS_REGISTER( SvxTimeField ); 328 rClassManager.SV_CLASS_REGISTER( SvxFileField ); 329 // rClassManager.SV_CLASS_REGISTER( SvxExtFileField ); 330 rClassManager.SV_CLASS_REGISTER( SvxTableField ); 331 332 SdrRegisterFieldClasses(); // SvDraw-Felder registrieren 333 334 // 3D-Objekt-Factory eintragen 335 E3dObjFactory(); 336 337 // ::com::sun::star::form::component::Form-Objekt-Factory eintragen 338 FmFormObjFactory(); 339 340 pMod->PutItem( SfxUInt16Item( SID_ATTR_METRIC, sal::static_int_cast<sal_uInt16>(pMod->GetAppOptions().GetAppMetric()) ) ); 341 342 // StarOne Services are now handled in the registry 343 } 344 345 void ScDLL::Exit() 346 { 347 // the SxxModule must be destroyed 348 ScModule **ppShlPtr = (ScModule**) GetAppData(SHL_CALC); 349 delete (*ppShlPtr); 350 (*ppShlPtr) = NULL; 351 352 // ScGlobal::Clear ist schon im Module-dtor 353 } 354 355 // DetectFilter functionality has moved - please update your bookmarks 356 // see sc/source/ui/unoobj/scdetect.cxx, have a nice day. 357