7a211e834f
because those styles are "pseudo-styles" and a new one cannot be added. The possibility is supposed to be disabled, and it is disabled in the floating stylelist. The old code assumes there can only be one of these stylelists and when a stylelist queries if the "new" should be disabled the callback asks the stylelist what family is selected, but only asks the floating one. So, floating closed, sidebar open, the new is not disabled. Implement the ancient TODO now that we have to. Instead of asking the stylelist what family is selected, query the frame for what is the current SID_STYLE_FAMILY as set by whatever is the active stylelist. What's disturbing is the SID_STYLE_FAMILY values are not SfxStyleFamily, but indexes that have to be mapped to SfxStyleFamily. I bet there are a pile of bugs around that, especially with little islands of different conversion codesites Change-Id: I85c8032d7c26ae6eea245685748f89b2a860e767
277 lines
10 KiB
C++
277 lines
10 KiB
C++
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
|
|
/*
|
|
* This file is part of the LibreOffice project.
|
|
*
|
|
* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
*
|
|
* This file incorporates work covered by the following license notice:
|
|
*
|
|
* 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 .
|
|
*/
|
|
#ifndef INCLUDED_SFX2_APP_HXX
|
|
#define INCLUDED_SFX2_APP_HXX
|
|
|
|
#include <sal/config.h>
|
|
#include <sfx2/dllapi.h>
|
|
#include <sal/types.h>
|
|
#include <tools/errcode.hxx>
|
|
#include <svl/smplhint.hxx>
|
|
#include <svl/poolitem.hxx>
|
|
#include <vcl/image.hxx>
|
|
#include <tools/ref.hxx>
|
|
#include <com/sun/star/uno/Reference.hxx>
|
|
#include <com/sun/star/script/XLibraryContainer.hpp>
|
|
#include <com/sun/star/task/XStatusIndicator.hpp>
|
|
|
|
// too many files including sfx2/app.hxx use VCL Application class but don't include the
|
|
// header file because in former times SfxApplication was derived from it
|
|
#include <vcl/svapp.hxx>
|
|
|
|
#include <sfx2/shell.hxx>
|
|
#include <vector>
|
|
|
|
class Timer;
|
|
class WorkWindow;
|
|
class ISfxTemplateCommon;
|
|
class BasicManager;
|
|
class DdeService;
|
|
class GenLink;
|
|
class PrinterDialog;
|
|
class Point;
|
|
class Rectangle;
|
|
class AppSettings;
|
|
struct SfxChildWinContextFactory;
|
|
class SfxAppData_Impl;
|
|
class SfxBindings;
|
|
class SfxChildWinFactArr_Impl;
|
|
class SfxChildWindow;
|
|
class SfxDispatcher;
|
|
class SfxEventConfiguration;
|
|
class SfxEventHint;
|
|
class SfxItemSet;
|
|
class SfxMedium;
|
|
class SfxMenuCtrlFactArr_Impl;
|
|
class SfxNewFileDialog;
|
|
class SfxObjectShell;
|
|
class SfxObjectShellArr_Impl;
|
|
class SfxProgress;
|
|
class SfxSlotPool;
|
|
class SfxStbCtrlFactArr_Impl;
|
|
class SfxTbxCtrlFactArr_Impl;
|
|
class SfxTemplateDialog;
|
|
class SfxViewFrame;
|
|
class SfxViewFrameArr_Impl;
|
|
class SfxViewShell;
|
|
class SfxViewShellArr_Impl;
|
|
class StarBASIC;
|
|
class SfxWorkWindow;
|
|
class SfxFilterMatcher;
|
|
class SfxModule;
|
|
class SfxModule;
|
|
typedef ::std::vector<SfxModule*> SfxModuleArr_Impl;
|
|
class Window;
|
|
struct SfxChildWinFactory;
|
|
struct SfxMenuCtrlFactory;
|
|
struct SfxStbCtrlFactory;
|
|
struct SfxTbxCtrlFactory;
|
|
class SimpleResMgr;
|
|
class ModalDialog;
|
|
class SbxArray;
|
|
class SbxValue;
|
|
|
|
typedef ::std::vector< SfxMedium* > SfxMediumList;
|
|
|
|
namespace sfx2
|
|
{
|
|
class SvLinkSource;
|
|
namespace sidebar {
|
|
class Theme;
|
|
}
|
|
}
|
|
|
|
class SfxLinkItem : public SfxPoolItem
|
|
{
|
|
Link aLink;
|
|
public:
|
|
virtual SfxPoolItem* Clone( SfxItemPool* = 0 ) const SAL_OVERRIDE
|
|
{ return new SfxLinkItem( *this ); }
|
|
virtual bool operator==( const SfxPoolItem& rL) const SAL_OVERRIDE
|
|
{ return ((SfxLinkItem&)rL).aLink == aLink; }
|
|
SfxLinkItem( sal_uInt16 nWhichId, const Link& rValue ) : SfxPoolItem( nWhichId )
|
|
{ aLink = rValue; }
|
|
const Link& GetValue() const { return aLink; }
|
|
};
|
|
|
|
//TODO/CLEANUP
|
|
//is apparently used only in SfxPickList/SfxFrameLoader
|
|
DECL_OBJHINT( SfxStringHint, OUString );
|
|
|
|
#ifndef SFX_DECL_OBJECTSHELL_DEFINED
|
|
#define SFX_DECL_OBJECTSHELL_DEFINED
|
|
typedef tools::SvRef<SfxObjectShell> SfxObjectShellRef;
|
|
#endif
|
|
|
|
class SfxObjectShellLock;
|
|
|
|
class SFX2_DLLPUBLIC SfxApplication: public SfxShell
|
|
{
|
|
SAL_DLLPRIVATE static SfxApplication* pApp;
|
|
|
|
SfxAppData_Impl* pAppData_Impl;
|
|
|
|
DECL_DLLPRIVATE_LINK( GlobalBasicErrorHdl_Impl, StarBASIC* );
|
|
|
|
static SfxApplication* Create();
|
|
void Init();
|
|
void Exit();
|
|
void SettingsChange( sal_uInt16, const AppSettings & );
|
|
void Quit();
|
|
void Deinitialize();
|
|
|
|
public:
|
|
TYPEINFO_OVERRIDE();
|
|
SFX_DECL_INTERFACE(SFX_INTERFACE_SFXAPP)
|
|
|
|
private:
|
|
/// SfxInterface initializer.
|
|
static void InitInterface_Impl();
|
|
|
|
public:
|
|
|
|
SfxApplication();
|
|
virtual ~SfxApplication();
|
|
static SfxApplication* GetOrCreate();
|
|
|
|
// Resource Manager
|
|
ResMgr* GetSfxResManager();
|
|
static ResMgr* CreateResManager( const char *pPrefix );
|
|
|
|
// DDE
|
|
#if defined( WNT )
|
|
long DdeExecute( const OUString& rCmd );
|
|
#endif
|
|
bool InitializeDde();
|
|
const DdeService* GetDdeService() const;
|
|
DdeService* GetDdeService();
|
|
#if defined( WNT )
|
|
void AddDdeTopic( SfxObjectShell* );
|
|
#endif
|
|
void RemoveDdeTopic( SfxObjectShell* );
|
|
|
|
// "static" methods
|
|
/**
|
|
* @param pArgs Takes ownership
|
|
*/
|
|
sal_uIntPtr LoadTemplate( SfxObjectShellLock& xDoc, const OUString& rFileName, bool bCopy=true, SfxItemSet* pArgs = 0 );
|
|
SfxTemplateDialog* GetTemplateDialog();
|
|
Window* GetTopWindow() const;
|
|
|
|
// members
|
|
SfxFilterMatcher& GetFilterMatcher();
|
|
SfxProgress* GetProgress() const;
|
|
const OUString& GetLastSaveDirectory() const;
|
|
sal_uInt16 GetFreeIndex();
|
|
void ReleaseIndex(sal_uInt16 i);
|
|
|
|
// Basic/Scripting
|
|
static bool IsXScriptURL( const OUString& rScriptURL );
|
|
static OUString ChooseScript();
|
|
static void MacroOrganizer( sal_Int16 nTabId );
|
|
static ErrCode CallBasic( const OUString&, BasicManager*, SbxArray *pArgs, SbxValue *pRet );
|
|
static ErrCode CallAppBasic( const OUString& i_macroName, SbxArray* i_args = NULL, SbxValue* i_ret = NULL )
|
|
{ return CallBasic( i_macroName, SfxApplication::GetOrCreate()->GetBasicManager(), i_args, i_ret ); }
|
|
BasicManager* GetBasicManager();
|
|
com::sun::star::script::XLibraryContainer * GetDialogContainer();
|
|
com::sun::star::script::XLibraryContainer * GetBasicContainer();
|
|
StarBASIC* GetBasic();
|
|
sal_uInt16 SaveBasicAndDialogContainer() const;
|
|
|
|
// misc.
|
|
bool GetOptions(SfxItemSet &);
|
|
void SetOptions(const SfxItemSet &);
|
|
virtual void Invalidate(sal_uInt16 nId = 0) SAL_OVERRIDE;
|
|
void NotifyEvent(const SfxEventHint& rEvent, bool bSynchron = true );
|
|
bool IsDowning() const;
|
|
void ResetLastDir();
|
|
|
|
SAL_DLLPRIVATE static SfxApplication* Get() { return pApp;}
|
|
SAL_DLLPRIVATE SfxDispatcher* GetAppDispatcher_Impl();
|
|
SAL_DLLPRIVATE SfxDispatcher* GetDispatcher_Impl();
|
|
|
|
SAL_DLLPRIVATE bool QueryExit_Impl();
|
|
SAL_DLLPRIVATE void SetOptions_Impl(const SfxItemSet &);
|
|
SAL_DLLPRIVATE bool Initialize_Impl();
|
|
|
|
SAL_DLLPRIVATE SfxAppData_Impl* Get_Impl() const { return pAppData_Impl; }
|
|
|
|
// Object-Factories/global arrays
|
|
SAL_DLLPRIVATE void RegisterChildWindow_Impl(SfxModule*, SfxChildWinFactory*);
|
|
SAL_DLLPRIVATE void RegisterChildWindowContext_Impl(SfxModule*, sal_uInt16, SfxChildWinContextFactory*);
|
|
SAL_DLLPRIVATE void RegisterStatusBarControl_Impl(SfxModule*, SfxStbCtrlFactory*);
|
|
SAL_DLLPRIVATE void RegisterMenuControl_Impl(SfxModule*, SfxMenuCtrlFactory*);
|
|
SAL_DLLPRIVATE void RegisterToolBoxControl_Impl( SfxModule*, SfxTbxCtrlFactory*);
|
|
SAL_DLLPRIVATE SfxTbxCtrlFactArr_Impl& GetTbxCtrlFactories_Impl() const;
|
|
SAL_DLLPRIVATE SfxStbCtrlFactArr_Impl& GetStbCtrlFactories_Impl() const;
|
|
SAL_DLLPRIVATE SfxMenuCtrlFactArr_Impl& GetMenuCtrlFactories_Impl() const;
|
|
SAL_DLLPRIVATE SfxChildWinFactArr_Impl& GetChildWinFactories_Impl() const;
|
|
SAL_DLLPRIVATE SfxViewFrameArr_Impl& GetViewFrames_Impl() const;
|
|
SAL_DLLPRIVATE SfxViewShellArr_Impl& GetViewShells_Impl() const;
|
|
SAL_DLLPRIVATE SfxObjectShellArr_Impl& GetObjectShells_Impl() const;
|
|
SAL_DLLPRIVATE void SetViewFrame_Impl(SfxViewFrame *pViewFrame);
|
|
|
|
// Slot Methods
|
|
// TODO/CLEANUP: still needed?
|
|
SAL_DLLPRIVATE void NewDocDirectExec_Impl(SfxRequest &);
|
|
SAL_DLLPRIVATE void NewDocExec_Impl(SfxRequest &);
|
|
SAL_DLLPRIVATE void OpenDocExec_Impl(SfxRequest &);
|
|
SAL_DLLPRIVATE void MiscExec_Impl(SfxRequest &);
|
|
SAL_DLLPRIVATE void MiscState_Impl(SfxItemSet &);
|
|
SAL_DLLPRIVATE void PropExec_Impl(SfxRequest &);
|
|
SAL_DLLPRIVATE void PropState_Impl(SfxItemSet &);
|
|
SAL_DLLPRIVATE void INetExecute_Impl(SfxRequest &);
|
|
SAL_DLLPRIVATE void INetState_Impl(SfxItemSet &);
|
|
SAL_DLLPRIVATE void OfaExec_Impl(SfxRequest &);
|
|
SAL_DLLPRIVATE void OfaState_Impl(SfxItemSet &);
|
|
|
|
SAL_DLLPRIVATE void SetProgress_Impl(SfxProgress *);
|
|
SAL_DLLPRIVATE const OUString& GetLastDir_Impl() const;
|
|
SAL_DLLPRIVATE void SetLastDir_Impl( const OUString & );
|
|
|
|
SAL_DLLPRIVATE void Registrations_Impl();
|
|
SAL_DLLPRIVATE SfxWorkWindow* GetWorkWindow_Impl(const SfxViewFrame *pFrame=0) const;
|
|
|
|
// TODO/CLEANUP: still needed? -- unclear whether this comment
|
|
// refers to the GetDisabledSlotList_Impl() method which was
|
|
// already removed, or the below methods?
|
|
SAL_DLLPRIVATE SfxSlotPool& GetAppSlotPool_Impl() const;
|
|
SAL_DLLPRIVATE SfxModule* GetModule_Impl();
|
|
SAL_DLLPRIVATE ResMgr* GetOffResManager_Impl();
|
|
|
|
static bool loadBrandSvg(const char *pName, BitmapEx &rBitmap, int nWidth);
|
|
|
|
/** loads the application logo as used in the impress slideshow pause screen */
|
|
static BitmapEx GetApplicationLogo(long nWidth);
|
|
|
|
/** this Theme contains Images so must be deleted before DeInitVCL */
|
|
sfx2::sidebar::Theme & GetSidebarTheme();
|
|
};
|
|
|
|
#define SFX_APP() SfxGetpApp()
|
|
|
|
inline SfxApplication* SfxGetpApp()
|
|
{
|
|
return SfxApplication::GetOrCreate();
|
|
}
|
|
|
|
#endif
|
|
|
|
|
|
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|