blob: df5d4519f8735f4b758cf7889d40d62bbfbcbfcf [file] [log] [blame]
/**************************************************************
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
*************************************************************/
// MARKER(update_precomp.py): autogen include statement, do not remove
#include "precompiled_sc.hxx"
#include <editeng/eeitem.hxx>
#ifndef _FM_FMOBJFAC_HXX
#include <svx/fmobjfac.hxx>
#endif
#include <svx/objfac3d.hxx>
#include <svx/tbxcolor.hxx>
#include <sot/clsids.hxx>
#include <sfx2/taskpane.hxx>
#include <sfx2/sidebar/SidebarChildWindow.hxx>
#include <sfx2/docfilt.hxx>
#include <sfx2/fcontnr.hxx>
#include <sfx2/docfile.hxx>
#include <sfx2/app.hxx>
#include <avmedia/mediaplayer.hxx>
#include <avmedia/mediatoolbox.hxx>
#include <comphelper/types.hxx>
#include <svx/extrusioncolorcontrol.hxx>
#include <svx/fontworkgallery.hxx>
#include <svx/tbxcustomshapes.hxx>
#include <svtools/parhtml.hxx>
#include <sot/formats.hxx>
#define SOT_FORMATSTR_ID_STARCALC_30 SOT_FORMATSTR_ID_STARCALC
#include "scitems.hxx" // fuer tbxctrls etc.
#include "scmod.hxx"
#include "scresid.hxx"
#include "sc.hrc"
#include "cfgids.hxx"
//! die Registrierung wird wegen CLOOKs in ein eigenes File wandern muessen...
// Interface-Registrierung
#include "docsh.hxx"
#include "tabvwsh.hxx"
#include "prevwsh.hxx"
#include "drawsh.hxx"
#include "drformsh.hxx"
#include "drtxtob.hxx"
#include "editsh.hxx"
#include "pivotsh.hxx"
#include "auditsh.hxx"
#include "cellsh.hxx"
#include "oleobjsh.hxx"
#include "chartsh.hxx"
#include "graphsh.hxx"
#include "mediash.hxx"
#include "pgbrksh.hxx"
#include "docpool.hxx"
#include "appoptio.hxx"
// Controls
#include <svx/tbxalign.hxx>
#include <svx/tbxctl.hxx>
#include <svx/fillctrl.hxx>
#include <svx/linectrl.hxx>
#include <svx/tbcontrl.hxx>
#include <svx/selctrl.hxx>
#include <svx/insctrl.hxx>
#include <svx/zoomctrl.hxx>
#include <editeng/flditem.hxx>
#include <svx/modctrl.hxx>
#include <svx/pszctrl.hxx>
#include <svx/fntctl.hxx>
#include <svx/fntszctl.hxx>
#include <svx/grafctrl.hxx>
#include <svx/galbrws.hxx>
#include <svx/clipboardctl.hxx>
#include <svx/lboxctrl.hxx>
#include <svx/verttexttbxctrl.hxx>
#include <svx/formatpaintbrushctrl.hxx>
#include "tbinsert.hxx"
#include "tbzoomsliderctrl.hxx"
#include <svx/zoomsliderctrl.hxx>
#include <svx/xmlsecctrl.hxx>
// Child-Windows
#include "reffact.hxx"
#include "navipi.hxx"
#include "inputwin.hxx"
#include "spelldialog.hxx"
#include <svx/fontwork.hxx>
#include <svx/srchdlg.hxx>
#include <svx/hyprlink.hxx>
#include <svx/hyperdlg.hxx>
#include <svx/imapdlg.hxx>
#include "editutil.hxx"
#include <svx/svdfield.hxx> // SdrRegisterFieldClasses
#include <rtl/logfile.hxx>
#include "dwfunctr.hxx"
#include "acredlin.hxx"
//------------------------------------------------------------------
//UNUSED2008-05 // filter detection can't use ScFilterOptions (in sc-dll),
//UNUSED2008-05 // so access to wk3 flag must be implemented here again
//UNUSED2008-05
//UNUSED2008-05 class ScLibOptions : public utl::ConfigItem
//UNUSED2008-05 {
//UNUSED2008-05 sal_Bool bWK3Flag;
//UNUSED2008-05
//UNUSED2008-05 public:
//UNUSED2008-05 ScLibOptions();
//UNUSED2008-05 sal_Bool GetWK3Flag() const { return bWK3Flag; }
//UNUSED2008-05 };
//UNUSED2008-05
//UNUSED2008-05 #define CFGPATH_LIBFILTER "Office.Calc/Filter/Import/Lotus123"
//UNUSED2008-05 #define ENTRYSTR_WK3 "WK3"
//UNUSED2008-05
//UNUSED2008-05 ScLibOptions::ScLibOptions() :
//UNUSED2008-05 ConfigItem( rtl::OUString::createFromAscii( CFGPATH_LIBFILTER ) ),
//UNUSED2008-05 bWK3Flag( sal_False )
//UNUSED2008-05 {
//UNUSED2008-05 com::sun::star::uno::Sequence<rtl::OUString> aNames(1);
//UNUSED2008-05 aNames[0] = rtl::OUString::createFromAscii( ENTRYSTR_WK3 );
//UNUSED2008-05 com::sun::star::uno::Sequence<com::sun::star::uno::Any> aValues = GetProperties(aNames);
//UNUSED2008-05 if ( aValues.getLength() == 1 && aValues[0].hasValue() )
//UNUSED2008-05 bWK3Flag = comphelper::getBOOL( aValues[0] );
//UNUSED2008-05 }
//------------------------------------------------------------------
ScResId::ScResId( sal_uInt16 nId ) :
ResId( nId, *SC_MOD()->GetResMgr() )
{
}
//------------------------------------------------------------------
void ScDLL::Init()
{
RTL_LOGFILE_CONTEXT_AUTHOR ( aLog, "sc", "nn93723", "ScDLL::Init" );
ScModule **ppShlPtr = (ScModule**) GetAppData(SHL_CALC);
if ( *ppShlPtr )
return;
ScDocumentPool::InitVersionMaps(); // wird im ScModule ctor gebraucht
ScModule* pMod = new ScModule( &ScDocShell::Factory() );
(*ppShlPtr) = pMod;
//REMOVE ScDocShell::RegisterFactory( SDT_SC_DOCFACTPRIO );
ScDocShell::Factory().SetDocumentServiceName( rtl::OUString::createFromAscii( "com.sun.star.sheet.SpreadsheetDocument" ) );
ScGlobal::Init(); // erst wenn der ResManager initialisiert ist
// erst nach ScGlobal::Init duerfen die App-Optionen
// initialisiert werden
// register your view-factories here
ScTabViewShell ::RegisterFactory(1);
ScPreviewShell ::RegisterFactory(2);
// register your shell-interfaces here
ScModule ::RegisterInterface(pMod);
ScDocShell ::RegisterInterface(pMod);
ScTabViewShell ::RegisterInterface(pMod);
ScPreviewShell ::RegisterInterface(pMod);
ScDrawShell ::RegisterInterface(pMod);
ScDrawFormShell ::RegisterInterface(pMod);
ScDrawTextObjectBar ::RegisterInterface(pMod);
ScEditShell ::RegisterInterface(pMod);
ScPivotShell ::RegisterInterface(pMod);
ScAuditingShell ::RegisterInterface(pMod);
ScFormatShell ::RegisterInterface(pMod);
ScCellShell ::RegisterInterface(pMod);
ScOleObjectShell ::RegisterInterface(pMod);
ScChartShell ::RegisterInterface(pMod);
ScGraphicShell ::RegisterInterface(pMod);
ScMediaShell ::RegisterInterface(pMod);
ScPageBreakShell ::RegisterInterface(pMod);
// eigene Controller
ScTbxInsertCtrl ::RegisterControl(SID_TBXCTL_INSERT, pMod);
ScTbxInsertCtrl ::RegisterControl(SID_TBXCTL_INSCELLS, pMod);
ScTbxInsertCtrl ::RegisterControl(SID_TBXCTL_INSOBJ, pMod);
ScZoomSliderControl ::RegisterControl(SID_PREVIEW_SCALINGFACTOR, pMod);
// Svx-Toolbox-Controller
SvxTbxCtlDraw ::RegisterControl(SID_INSERT_DRAW, pMod);
SvxTbxCtlCustomShapes ::RegisterControl(SID_DRAWTBX_CS_BASIC, pMod);
SvxTbxCtlCustomShapes ::RegisterControl(SID_DRAWTBX_CS_SYMBOL, pMod);
SvxTbxCtlCustomShapes ::RegisterControl(SID_DRAWTBX_CS_ARROW, pMod);
SvxTbxCtlCustomShapes ::RegisterControl(SID_DRAWTBX_CS_FLOWCHART, pMod);
SvxTbxCtlCustomShapes ::RegisterControl(SID_DRAWTBX_CS_CALLOUT, pMod);
SvxTbxCtlCustomShapes ::RegisterControl(SID_DRAWTBX_CS_STAR, pMod);
SvxTbxCtlAlign ::RegisterControl(SID_OBJECT_ALIGN, pMod);
SvxFillToolBoxControl ::RegisterControl(0, pMod);
SvxLineStyleToolBoxControl ::RegisterControl(0, pMod);
SvxLineWidthToolBoxControl ::RegisterControl(0, pMod);
SvxLineColorToolBoxControl ::RegisterControl(0, pMod);
SvxLineEndToolBoxControl ::RegisterControl(SID_ATTR_LINEEND_STYLE, pMod);
SvxStyleToolBoxControl ::RegisterControl(SID_STYLE_APPLY, pMod);
SvxFontNameToolBoxControl ::RegisterControl(SID_ATTR_CHAR_FONT, pMod);
// SvxFontHeightToolBoxControl ::RegisterControl(SID_ATTR_CHAR_FONTHEIGHT, pMod);
SvxFontColorToolBoxControl ::RegisterControl(SID_ATTR_CHAR_COLOR, pMod);
SvxColorToolBoxControl ::RegisterControl(SID_BACKGROUND_COLOR, pMod);
SvxFrameToolBoxControl ::RegisterControl(SID_ATTR_BORDER, pMod);
SvxFrameLineStyleToolBoxControl ::RegisterControl(SID_FRAME_LINESTYLE, pMod);
SvxFrameLineColorToolBoxControl ::RegisterControl(SID_FRAME_LINECOLOR, pMod);
SvxClipBoardControl ::RegisterControl(SID_PASTE, pMod );
SvxUndoRedoControl ::RegisterControl(SID_UNDO, pMod );
SvxUndoRedoControl ::RegisterControl(SID_REDO, pMod );
svx::FormatPaintBrushToolBoxControl::RegisterControl(SID_FORMATPAINTBRUSH, pMod );
SvxGrafModeToolBoxControl ::RegisterControl(SID_ATTR_GRAF_MODE, pMod);
SvxGrafRedToolBoxControl ::RegisterControl(SID_ATTR_GRAF_RED, pMod);
SvxGrafGreenToolBoxControl ::RegisterControl(SID_ATTR_GRAF_GREEN, pMod);
SvxGrafBlueToolBoxControl ::RegisterControl(SID_ATTR_GRAF_BLUE, pMod);
SvxGrafLuminanceToolBoxControl ::RegisterControl(SID_ATTR_GRAF_LUMINANCE, pMod);
SvxGrafContrastToolBoxControl ::RegisterControl(SID_ATTR_GRAF_CONTRAST, pMod);
SvxGrafGammaToolBoxControl ::RegisterControl(SID_ATTR_GRAF_GAMMA, pMod);
SvxGrafTransparenceToolBoxControl::RegisterControl(SID_ATTR_GRAF_TRANSPARENCE, pMod);
SvxGrafFilterToolBoxControl ::RegisterControl(SID_GRFFILTER, pMod);
SvxVertTextTbxCtrl::RegisterControl(SID_DRAW_CAPTION_VERTICAL, pMod);
SvxVertTextTbxCtrl::RegisterControl(SID_DRAW_TEXT_VERTICAL, pMod);
SvxVertTextTbxCtrl::RegisterControl(SID_TEXTDIRECTION_LEFT_TO_RIGHT, pMod);
SvxVertTextTbxCtrl::RegisterControl(SID_TEXTDIRECTION_TOP_TO_BOTTOM, pMod);
SvxCTLTextTbxCtrl::RegisterControl(SID_ATTR_PARA_LEFT_TO_RIGHT, pMod);
SvxCTLTextTbxCtrl::RegisterControl(SID_ATTR_PARA_RIGHT_TO_LEFT, pMod);
//Media Controller
::avmedia::MediaToolBoxControl::RegisterControl( SID_AVMEDIA_TOOLBOX, pMod );
// common SFX controller
::sfx2::TaskPaneWrapper::RegisterChildWindow( sal_False, pMod );
::sfx2::sidebar::SidebarChildWindow::RegisterChildWindow(NULL, pMod);
// Svx-StatusBar-Controller
SvxInsertStatusBarControl ::RegisterControl(SID_ATTR_INSERT, pMod);
SvxSelectionModeControl ::RegisterControl(SID_STATUS_SELMODE, pMod);
SvxZoomStatusBarControl ::RegisterControl(SID_ATTR_ZOOM, pMod);
SvxZoomSliderControl ::RegisterControl(SID_ATTR_ZOOMSLIDER, pMod);
SvxModifyControl ::RegisterControl(SID_DOC_MODIFIED, pMod);
XmlSecStatusBarControl ::RegisterControl( SID_SIGNATURE, pMod );
SvxPosSizeStatusBarControl ::RegisterControl(SID_ATTR_SIZE, pMod);
// Svx-Menue-Controller
SvxFontMenuControl ::RegisterControl(SID_ATTR_CHAR_FONT, pMod);
SvxFontSizeMenuControl ::RegisterControl(SID_ATTR_CHAR_FONTHEIGHT, pMod);
// CustomShape extrusion controller
svx::ExtrusionColorControl::RegisterControl( SID_EXTRUSION_3D_COLOR, pMod );
svx::FontWorkShapeTypeControl::RegisterControl( SID_FONTWORK_SHAPE_TYPE, pMod );
// Child-Windows
// Hack: Eingabezeile mit 42 registrieren, damit sie im PlugIn immer sichtbar ist
ScInputWindowWrapper ::RegisterChildWindow(42, pMod, SFX_CHILDWIN_TASK|SFX_CHILDWIN_FORCEDOCK);
ScNavigatorDialogWrapper ::RegisterChildWindowContext(
sal::static_int_cast<sal_uInt16>(ScTabViewShell::GetInterfaceId()), pMod);
ScSolverDlgWrapper ::RegisterChildWindow(sal_False, pMod);
ScOptSolverDlgWrapper ::RegisterChildWindow(sal_False, pMod);
ScNameDlgWrapper ::RegisterChildWindow(sal_False, pMod);
ScPivotLayoutWrapper ::RegisterChildWindow(sal_False, pMod);
ScTabOpDlgWrapper ::RegisterChildWindow(sal_False, pMod);
ScFilterDlgWrapper ::RegisterChildWindow(sal_False, pMod);
ScSpecialFilterDlgWrapper ::RegisterChildWindow(sal_False, pMod);
ScDbNameDlgWrapper ::RegisterChildWindow(sal_False, pMod);
ScConsolidateDlgWrapper ::RegisterChildWindow(sal_False, pMod);
ScPrintAreasDlgWrapper ::RegisterChildWindow(sal_False, pMod);
ScCondFormatDlgWrapper ::RegisterChildWindow(sal_False, pMod);
ScColRowNameRangesDlgWrapper::RegisterChildWindow(sal_False, pMod);
ScFormulaDlgWrapper ::RegisterChildWindow(sal_False, pMod);
// First docking Window for Calc
ScFunctionChildWindow ::RegisterChildWindow(sal_False, pMod);
// Redlining- Window
ScAcceptChgDlgWrapper ::RegisterChildWindow(sal_False, pMod);
ScSimpleRefDlgWrapper ::RegisterChildWindow(sal_False, pMod, SFX_CHILDWIN_ALWAYSAVAILABLE|SFX_CHILDWIN_NEVERHIDE );
ScHighlightChgDlgWrapper ::RegisterChildWindow(sal_False, pMod);
SvxSearchDialogWrapper ::RegisterChildWindow(sal_False, pMod);
SvxHlinkDlgWrapper ::RegisterChildWindow(sal_False, pMod);
SvxFontWorkChildWindow ::RegisterChildWindow(sal_False, pMod);
SvxHyperlinkDlgWrapper ::RegisterChildWindow(sal_False, pMod, SFX_CHILDWIN_FORCEDOCK);
SvxIMapDlgChildWindow ::RegisterChildWindow(sal_False, pMod);
GalleryChildWindow ::RegisterChildWindow(sal_False, pMod);
ScSpellDialogChildWindow ::RegisterChildWindow(sal_False, pMod);
::avmedia::MediaPlayer ::RegisterChildWindow(sal_False, pMod);
//<!--Added by PengYunQuan for Validity Cell Range Picker
ScValidityRefChildWin::RegisterChildWindow(sal_False, pMod);
//-->Added by PengYunQuan for Validity Cell Range Picker
// Edit-Engine-Felder, soweit nicht schon in OfficeApplication::Init
SvClassManager& rClassManager = SvxFieldItem::GetClassManager();
// rClassManager.SV_CLASS_REGISTER( SvxURLField );
// rClassManager.SV_CLASS_REGISTER( SvxDateField );
// rClassManager.SV_CLASS_REGISTER( SvxPageField );
rClassManager.SV_CLASS_REGISTER( SvxPagesField );
// rClassManager.SV_CLASS_REGISTER( SvxTimeField );
rClassManager.SV_CLASS_REGISTER( SvxFileField );
// rClassManager.SV_CLASS_REGISTER( SvxExtFileField );
rClassManager.SV_CLASS_REGISTER( SvxTableField );
SdrRegisterFieldClasses(); // SvDraw-Felder registrieren
// 3D-Objekt-Factory eintragen
E3dObjFactory();
// ::com::sun::star::form::component::Form-Objekt-Factory eintragen
FmFormObjFactory();
pMod->PutItem( SfxUInt16Item( SID_ATTR_METRIC, sal::static_int_cast<sal_uInt16>(pMod->GetAppOptions().GetAppMetric()) ) );
// StarOne Services are now handled in the registry
}
void ScDLL::Exit()
{
// the SxxModule must be destroyed
ScModule **ppShlPtr = (ScModule**) GetAppData(SHL_CALC);
delete (*ppShlPtr);
(*ppShlPtr) = NULL;
// ScGlobal::Clear ist schon im Module-dtor
}
// DetectFilter functionality has moved - please update your bookmarks
// see sc/source/ui/unoobj/scdetect.cxx, have a nice day.