diff options
Diffstat (limited to 'sc/source/ui/app/scdll.cxx')
-rw-r--r-- | sc/source/ui/app/scdll.cxx | 365 |
1 files changed, 365 insertions, 0 deletions
diff --git a/sc/source/ui/app/scdll.cxx b/sc/source/ui/app/scdll.cxx new file mode 100644 index 000000000000..8051399d06fa --- /dev/null +++ b/sc/source/ui/app/scdll.cxx @@ -0,0 +1,365 @@ +/************************************************************************ + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 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/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 BOOL bWK3Flag; +//UNUSED2008-05 +//UNUSED2008-05 public: +//UNUSED2008-05 ScLibOptions(); +//UNUSED2008-05 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( 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( USHORT 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( FALSE, 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(FALSE, pMod); + ScOptSolverDlgWrapper ::RegisterChildWindow(FALSE, pMod); + ScNameDlgWrapper ::RegisterChildWindow(FALSE, pMod); + ScPivotLayoutWrapper ::RegisterChildWindow(FALSE, pMod); + ScTabOpDlgWrapper ::RegisterChildWindow(FALSE, pMod); + ScFilterDlgWrapper ::RegisterChildWindow(FALSE, pMod); + ScSpecialFilterDlgWrapper ::RegisterChildWindow(FALSE, pMod); + ScDbNameDlgWrapper ::RegisterChildWindow(FALSE, pMod); + ScConsolidateDlgWrapper ::RegisterChildWindow(FALSE, pMod); + ScPrintAreasDlgWrapper ::RegisterChildWindow(FALSE, pMod); + ScCondFormatDlgWrapper ::RegisterChildWindow(FALSE, pMod); + ScColRowNameRangesDlgWrapper::RegisterChildWindow(FALSE, pMod); + ScFormulaDlgWrapper ::RegisterChildWindow(FALSE, pMod); + + // First docking Window for Calc + ScFunctionChildWindow ::RegisterChildWindow(FALSE, pMod); + + // Redlining- Window + ScAcceptChgDlgWrapper ::RegisterChildWindow(FALSE, pMod); + ScSimpleRefDlgWrapper ::RegisterChildWindow(FALSE, pMod, SFX_CHILDWIN_ALWAYSAVAILABLE|SFX_CHILDWIN_NEVERHIDE ); + ScHighlightChgDlgWrapper ::RegisterChildWindow(FALSE, pMod); + + SvxSearchDialogWrapper ::RegisterChildWindow(FALSE, pMod); + SvxHlinkDlgWrapper ::RegisterChildWindow(FALSE, pMod); + SvxFontWorkChildWindow ::RegisterChildWindow(FALSE, pMod); + SvxHyperlinkDlgWrapper ::RegisterChildWindow(FALSE, pMod, SFX_CHILDWIN_FORCEDOCK); + SvxIMapDlgChildWindow ::RegisterChildWindow(FALSE, pMod); + GalleryChildWindow ::RegisterChildWindow(FALSE, pMod); + ScSpellDialogChildWindow ::RegisterChildWindow(FALSE, pMod); + ::avmedia::MediaPlayer ::RegisterChildWindow(FALSE, pMod); + + //<!--Added by PengYunQuan for Validity Cell Range Picker + ScValidityRefChildWin::RegisterChildWindow(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<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. |