blob: 89267f77e8359a4db4d3d8282947a85b274d504d [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.
*
*************************************************************/
#ifndef _CFGUTIL_HXX
#define _CFGUTIL_HXX
#include <vector>
#include <rtl/ustring.hxx>
#include <tools/string.hxx>
#include <com/sun/star/frame/XModel.hpp>
#include <com/sun/star/frame/XFrame.hpp>
#include <com/sun/star/lang/XSingleComponentFactory.hpp>
#include <com/sun/star/container/XNameAccess.hpp>
#include <com/sun/star/script/browse/XBrowseNode.hpp>
#define _SVSTDARR_STRINGSDTOR
#include <svl/svstdarr.hxx>
#include <vcl/timer.hxx>
#include <svtools/svtabbx.hxx>
#include <svtools/svtreebx.hxx>
#include <vcl/image.hxx>
class BasicManager;
class SfxSlotPool;
class SfxStringItem;
class SfxFontItem;
class SfxMacroInfoItem;
struct SfxStyleInfo_Impl;
struct SfxStylesInfo_Impl;
#define css ::com::sun::star
struct SfxStyleInfo_Impl
{
::rtl::OUString sFamily;
::rtl::OUString sStyle;
::rtl::OUString sCommand;
::rtl::OUString sLabel;
SfxStyleInfo_Impl()
{}
SfxStyleInfo_Impl(const SfxStyleInfo_Impl& rCopy)
{
sFamily = rCopy.sFamily;
sStyle = rCopy.sStyle;
sCommand = rCopy.sCommand;
sLabel = rCopy.sLabel;
}
};
struct SfxStylesInfo_Impl
{
private:
::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel > m_xDoc;
public:
SfxStylesInfo_Impl();
void setModel(const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel >& xModel);
sal_Bool parseStyleCommand(SfxStyleInfo_Impl& aStyle);
void getLabel4Style(SfxStyleInfo_Impl& aStyle);
::std::vector< SfxStyleInfo_Impl > getStyleFamilies();
::std::vector< SfxStyleInfo_Impl > getStyles(const ::rtl::OUString& sFamily);
static ::rtl::OUString generateCommand(const ::rtl::OUString& sFamily, const ::rtl::OUString& sStyle);
};
#define SFX_CFGGROUP_FUNCTION 1
#define SFX_CFGFUNCTION_SLOT 2
#define SFX_CFGGROUP_SCRIPTCONTAINER 3
#define SFX_CFGFUNCTION_SCRIPT 4
#define SFX_CFGGROUP_STYLES 5
struct SfxGroupInfo_Impl
{
sal_uInt16 nKind;
sal_uInt16 nUniqueID;
void* pObject;
sal_Bool bWasOpened;
String sCommand;
String sLabel;
SfxGroupInfo_Impl( sal_uInt16 n, sal_uInt16 nr, void* pObj = 0 ) :
nKind( n ), nUniqueID( nr ), pObject( pObj ), bWasOpened(sal_False) {}
};
struct CuiMacroInfo
{
};
typedef SfxGroupInfo_Impl* SfxGroupInfoPtr;
SV_DECL_PTRARR_DEL(SfxGroupInfoArr_Impl, SfxGroupInfoPtr, 5, 5)
class SfxConfigFunctionListBox_Impl : public SvTreeListBox
{
friend class SfxConfigGroupListBox_Impl;
Timer aTimer;
SvLBoxEntry* pCurEntry;
SfxGroupInfoArr_Impl aArr;
SfxStylesInfo_Impl* pStylesInfo;
DECL_LINK( TimerHdl, Timer* );
virtual void MouseMove( const MouseEvent& rMEvt );
public:
SfxConfigFunctionListBox_Impl( Window*, const ResId& );
~SfxConfigFunctionListBox_Impl();
void ClearAll();
using Window::GetHelpText;
String GetHelpText( SvLBoxEntry *pEntry );
String GetCurCommand();
String GetCurLabel();
String GetSelectedScriptURI();
void FunctionSelected();
void SetStylesInfo(SfxStylesInfo_Impl* pStyles);
};
struct SvxConfigGroupBoxResource_Impl;
class SfxConfigGroupListBox_Impl : public SvTreeListBox
{
SvxConfigGroupBoxResource_Impl* pImp;
//SfxSlotPool* pSlotPool;
SfxConfigFunctionListBox_Impl* pFunctionListBox;
SfxGroupInfoArr_Impl aArr;
sal_uLong nMode;
::rtl::OUString m_sModuleLongName;
css::uno::Reference< css::lang::XMultiServiceFactory > m_xSMGR;
css::uno::Reference< css::frame::XFrame > m_xFrame;
css::uno::Reference< css::container::XNameAccess > m_xGlobalCategoryInfo;
css::uno::Reference< css::container::XNameAccess > m_xModuleCategoryInfo;
css::uno::Reference< css::container::XNameAccess > m_xUICmdDescription;
Image GetImage( ::com::sun::star::uno::Reference< ::com::sun::star::script::browse::XBrowseNode > node, ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext > xCtx, bool bIsRootNode, bool bHighContrast );
::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > getDocumentModel( ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext >& xCtx, ::rtl::OUString& docName );
void InitModule();
void InitBasic();
void InitStyles();
::rtl::OUString MapCommand2UIName(const ::rtl::OUString& sCommand);
SfxStylesInfo_Impl* pStylesInfo;
protected:
virtual void RequestingChilds( SvLBoxEntry *pEntry);
using SvListView::Expand;
virtual sal_Bool Expand( SvLBoxEntry* pParent );
public:
SfxConfigGroupListBox_Impl ( Window* pParent,
const ResId&,
sal_uLong nConfigMode = 0 );
~SfxConfigGroupListBox_Impl();
void ClearAll();
void Init(const css::uno::Reference< css::lang::XMultiServiceFactory >& xSMGR ,
const css::uno::Reference< css::frame::XFrame >& xFrame ,
const ::rtl::OUString& sModuleLongName);
void SetFunctionListBox( SfxConfigFunctionListBox_Impl *pBox )
{ pFunctionListBox = pBox; }
void Open( SvLBoxEntry*, sal_Bool );
void GroupSelected();
void SelectMacro( const SfxMacroInfoItem* );
void SelectMacro( const String&, const String& );
String GetGroup();
void SetStylesInfo(SfxStylesInfo_Impl* pStyles);
};
#undef css
#endif