blob: cea2a2f26c7f37d8c920227244331ea50ae76594 [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_sfx2.hxx"
#include <tools/cachestr.hxx>
#include <tools/config.hxx>
#ifndef _INETSTRM_HXX //autogen
#include <svl/inetstrm.hxx>
#endif
#include <svl/stritem.hxx>
#define _SVSTDARR_STRINGS
#include <svl/svstdarr.hxx>
#include <vos/mutex.hxx>
#include <vcl/menu.hxx>
#include <vcl/msgbox.hxx>
#include <svl/dateitem.hxx>
#include <vcl/menu.hxx>
#include <vcl/wrkwin.hxx>
#include "comphelper/processfactory.hxx"
#include <sfx2/viewfrm.hxx>
#include "appdata.hxx"
#include <sfx2/dispatch.hxx>
#include <sfx2/event.hxx>
#include "sfxtypes.hxx"
#include <sfx2/doctempl.hxx>
#include "arrdecl.hxx"
#include <sfx2/docfac.hxx>
#include <sfx2/docfile.hxx>
#include <sfx2/request.hxx>
#include "referers.hxx"
#include "app.hrc"
#include "sfx2/sfxresid.hxx"
#include "objshimp.hxx"
#include <sfx2/appuno.hxx>
#include "imestatuswindow.hxx"
#include "appbaslib.hxx"
#include <basic/basicmanagerrepository.hxx>
#include <basic/basmgr.hxx>
using ::basic::BasicManagerRepository;
using ::basic::BasicManagerCreationListener;
using ::com::sun::star::uno::Reference;
using ::com::sun::star::frame::XModel;
using ::com::sun::star::uno::XInterface;
class SfxBasicManagerCreationListener : public ::basic::BasicManagerCreationListener
{
private:
SfxAppData_Impl& m_rAppData;
public:
SfxBasicManagerCreationListener( SfxAppData_Impl& _rAppData ) :m_rAppData( _rAppData ) { }
virtual void onBasicManagerCreated( const Reference< XModel >& _rxForDocument, BasicManager& _rBasicManager );
};
void SfxBasicManagerCreationListener::onBasicManagerCreated( const Reference< XModel >& _rxForDocument, BasicManager& _rBasicManager )
{
if ( _rxForDocument == NULL )
m_rAppData.OnApplicationBasicManagerCreated( _rBasicManager );
}
SfxAppData_Impl::SfxAppData_Impl( SfxApplication* ) :
pDdeService( 0 ),
pDocTopics( 0 ),
pTriggerTopic(0),
pDdeService2(0),
pFactArr(0),
pTopFrames( new SfxFrameArr_Impl ),
pInitLinkList(0),
pMatcher( 0 ),
pBasicResMgr( 0 ),
pSvtResMgr( 0 ),
pAppDispatch(NULL),
pTemplates( 0 ),
pPool(0),
pDisabledSlotList( 0 ),
pSecureURLs(0),
pSaveOptions( 0 ),
pUndoOptions( 0 ),
pHelpOptions( 0 ),
pProgress(0),
pTemplateCommon( 0 ),
nDocModalMode(0),
nAutoTabPageId(0),
nRescheduleLocks(0),
nInReschedule(0),
nAsynchronCalls(0),
m_xImeStatusWindow(new sfx2::appl::ImeStatusWindow(comphelper::getProcessServiceFactory()))
, pTbxCtrlFac(0)
, pStbCtrlFac(0)
, pViewFrames(0)
, pObjShells(0)
, pSfxResManager(0)
, pOfaResMgr(0)
, pSimpleResManager(0)
, pBasicManager( new SfxBasicManagerHolder )
, pBasMgrListener( new SfxBasicManagerCreationListener( *this ) )
, pViewFrame( 0 )
, pSlotPool( 0 )
, pResMgr( 0 )
, pAppDispat( 0 )
, pInterfaces( 0 )
, nDocNo(0)
, nInterfaces( 0 )
, bDowning( sal_True )
, bInQuit( sal_False )
, bInvalidateOnUnlock( sal_False )
, bODFVersionWarningLater( sal_False )
{
BasicManagerRepository::registerCreationListener( *pBasMgrListener );
}
SfxAppData_Impl::~SfxAppData_Impl()
{
DeInitDDE();
delete pTopFrames;
delete pSecureURLs;
delete pBasicManager;
BasicManagerRepository::revokeCreationListener( *pBasMgrListener );
delete pBasMgrListener;
}
void SfxAppData_Impl::UpdateApplicationSettings( sal_Bool bDontHide )
{
AllSettings aAllSet = Application::GetSettings();
StyleSettings aStyleSet = aAllSet.GetStyleSettings();
sal_uInt32 nStyleOptions = aStyleSet.GetOptions();
if ( bDontHide )
nStyleOptions &= ~STYLE_OPTION_HIDEDISABLED;
else
nStyleOptions |= STYLE_OPTION_HIDEDISABLED;
aStyleSet.SetOptions( nStyleOptions );
aAllSet.SetStyleSettings( aStyleSet );
Application::SetSettings( aAllSet );
}
SfxDocumentTemplates* SfxAppData_Impl::GetDocumentTemplates()
{
if ( !pTemplates )
pTemplates = new SfxDocumentTemplates;
else
pTemplates->ReInitFromComponent();
return pTemplates;
}
void SfxAppData_Impl::OnApplicationBasicManagerCreated( BasicManager& _rBasicManager )
{
pBasicManager->reset( &_rBasicManager );
// global constants, additionally to the ones already added by createApplicationBasicManager:
// ThisComponent
Reference< XInterface > xCurrentComponent = SfxObjectShell::GetCurrentComponent();
_rBasicManager.SetGlobalUNOConstant( "ThisComponent", makeAny( xCurrentComponent ) );
}