How to access resource file

本文档介绍如何从资源文件中读取兼容性选项的项值。这些设置存储于officecfg/registry/schema/org/openoffice/Office/Compatibility.xcs中,并通过特定的方法获取各个属性名称及其值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

The item values of compatibility option tab page is read from the resource file

(officecfg/registry/schema/org/openoffice/Office/Compatibility.xcs)

This document is illustrated how to read this file.

1. Related definitions in compatibility.hxx/cxx

#define COMPATIBILITY_PROPERTYNAME_NAME OUString( RTL_CONSTASCII_USTRINGPARAM( "Name" ) )

#define COMPATIBILITY_PROPERTYNAME_MODULE OUString( RTL_CONSTASCII_USTRINGPARAM( "Module" ) )

#define COMPATIBILITY_PROPERTYNAME_USEPRTMETRICS OUString( RTL_CONSTASCII_USTRINGPARAM( "UsePrinterMetrics" ) )

#define COMPATIBILITY_PROPERTYNAME_ADDSPACING OUString( RTL_CONSTASCII_USTRINGPARAM( "AddSpacing" ) )

#define COMPATIBILITY_PROPERTYNAME_ADDSPACINGATPAGES OUString( RTL_CONSTASCII_USTRINGPARAM( "AddSpacingAtPages" ) )

#define COMPATIBILITY_PROPERTYNAME_USEOURTABSTOPS OUString( RTL_CONSTASCII_USTRINGPARAM( "UseOurTabStopFormat" ) )

#define COMPATIBILITY_PROPERTYNAME_NOEXTLEADING OUString( RTL_CONSTASCII_USTRINGPARAM( "NoExternalLeading" ) )

#define COMPATIBILITY_PROPERTYNAME_USELINESPACING OUString( RTL_CONSTASCII_USTRINGPARAM( "UseLineSpacing" ) )

#define COMPATIBILITY_PROPERTYNAME_ADDTABLESPACING OUString( RTL_CONSTASCII_USTRINGPARAM( "AddTableSpacing" ) )

#define COMPATIBILITY_PROPERTYNAME_USEOBJECTPOSITIONING OUString( RTL_CONSTASCII_USTRINGPARAM( "UseObjectPositioning" ) )

#define COMPATIBILITY_PROPERTYNAME_USEOURTEXTWRAPPING OUString( RTL_CONSTASCII_USTRINGPARAM( "UseOurTextWrapping" ) )

#define COMPATIBILITY_PROPERTYNAME_CONSIDERWRAPPINGSTYLE OUString( RTL_CONSTASCII_USTRINGPARAM( "ConsiderWrappingStyle" ) )


#define COMPATIBILITY_DEFAULT_NAME OUString( RTL_CONSTASCII_USTRINGPARAM( "_default" ) )


#define ROOTNODE_OPTIONS OUString( RTL_CONSTASCII_USTRINGPARAM( "Office.Compatibility/" ) )

#define PATHDELIMITER OUString( RTL_CONSTASCII_USTRINGPARAM( "/" ) )

#define SETNODE_ALLFILEFORMATS OUString( RTL_CONSTASCII_USTRINGPARAM( "AllFileFormats" ) )


#define PROPERTYNAME_NAME COMPATIBILITY_PROPERTYNAME_NAME

#define PROPERTYNAME_MODULE COMPATIBILITY_PROPERTYNAME_MODULE

#define PROPERTYNAME_USEPRTMETRICS COMPATIBILITY_PROPERTYNAME_USEPRTMETRICS

#define PROPERTYNAME_ADDSPACING COMPATIBILITY_PROPERTYNAME_ADDSPACING

#define PROPERTYNAME_ADDSPACINGATPAGES COMPATIBILITY_PROPERTYNAME_ADDSPACINGATPAGES

#define PROPERTYNAME_USEOURTABSTOPS COMPATIBILITY_PROPERTYNAME_USEOURTABSTOPS

#define PROPERTYNAME_NOEXTLEADING COMPATIBILITY_PROPERTYNAME_NOEXTLEADING

#define PROPERTYNAME_USELINESPACING COMPATIBILITY_PROPERTYNAME_USELINESPACING

#define PROPERTYNAME_ADDTABLESPACING COMPATIBILITY_PROPERTYNAME_ADDTABLESPACING

#define PROPERTYNAME_USEOBJPOS COMPATIBILITY_PROPERTYNAME_USEOBJECTPOSITIONING

#define PROPERTYNAME_USEOURTEXTWRAP COMPATIBILITY_PROPERTYNAME_USEOURTEXTWRAPPING

#define PROPERTYNAME_CONSIDERWRAPSTYLE COMPATIBILITY_PROPERTYNAME_CONSIDERWRAPPINGSTYLE


2. Get the name and values

1) initialize config item: ConfigItem( ROOTNODE_OPTIONS )

2) get property names regarding to nodes hierarchy in the source file: impl_GetPropertyNames

3) get the values regarding to the property names: GetProperties


SvtCompatibilityOptions_Impl::SvtCompatibilityOptions_Impl()

// Init baseclasses first

: ConfigItem( ROOTNODE_OPTIONS )

// Init member then...

{

// Get names and values of all accessable menu entries and fill internal structures.

// See impl_GetPropertyNames() for further informations.

Sequence< OUString > lNodes;

Sequence< OUString > lNames = impl_GetPropertyNames( lNodes );

sal_uInt32 nCount = lNodes.getLength();

Sequence< Any > lValues = GetProperties( lNames );

}


ConfigItem( ROOTNODE_OPTIONS ): define that the source file of this config item is officecfg/registry/schema/org/openoffice/Office/Compatibility.xcs.



//*****************************************************************************************************************

// private method

//*****************************************************************************************************************

Sequence< OUString > SvtCompatibilityOptions_Impl::impl_GetPropertyNames( Sequence< OUString >& rItems )

{

// First get ALL names of current existing list items in configuration!

rItems = GetNodeNames( SETNODE_ALLFILEFORMATS );

// expand list to result list ...

Sequence< OUString > lProperties( rItems.getLength() * ( PROPERTYCOUNT - 1 ) );

impl_ExpandPropertyNames( rItems, lProperties );

// Return result.

return lProperties;

}


//*****************************************************************************************************************

// private method

//*****************************************************************************************************************

void SvtCompatibilityOptions_Impl::impl_ExpandPropertyNames(

const Sequence< OUString >& lSource, Sequence< OUString >& lDestination )

{

OUString sFixPath;

sal_Int32 nDestStep = 0;

sal_Int32 nSourceCount = lSource.getLength();

// Copy entries to destination and expand every item with 2 supported sub properties.

for( sal_Int32 nSourceStep = 0; nSourceStep < nSourceCount; ++nSourceStep )

{

sFixPath = SETNODE_ALLFILEFORMATS;

sFixPath += PATHDELIMITER;

sFixPath += lSource[ nSourceStep ];

sFixPath += PATHDELIMITER;


lDestination[nDestStep] = sFixPath;

lDestination[nDestStep] += PROPERTYNAME_MODULE;

++nDestStep;

lDestination[nDestStep] = sFixPath;

lDestination[nDestStep] += PROPERTYNAME_USEPRTMETRICS;

++nDestStep;

lDestination[nDestStep] = sFixPath;

lDestination[nDestStep] += PROPERTYNAME_ADDSPACING;

++nDestStep;

lDestination[nDestStep] = sFixPath;

lDestination[nDestStep] += PROPERTYNAME_ADDSPACINGATPAGES;

++nDestStep;

lDestination[nDestStep] = sFixPath;

lDestination[nDestStep] += PROPERTYNAME_USEOURTABSTOPS;

++nDestStep;

lDestination[nDestStep] = sFixPath;

lDestination[nDestStep] += PROPERTYNAME_NOEXTLEADING;

++nDestStep;

lDestination[nDestStep] = sFixPath;

lDestination[nDestStep] += PROPERTYNAME_USELINESPACING;

++nDestStep;

lDestination[nDestStep] = sFixPath;

lDestination[nDestStep] += PROPERTYNAME_ADDTABLESPACING;

++nDestStep;

lDestination[nDestStep] = sFixPath;

lDestination[nDestStep] += PROPERTYNAME_USEOBJPOS;

++nDestStep;

lDestination[nDestStep] = sFixPath;

lDestination[nDestStep] += PROPERTYNAME_USEOURTEXTWRAP;

++nDestStep;

lDestination[nDestStep] = sFixPath;

lDestination[nDestStep] += PROPERTYNAME_CONSIDERWRAPSTYLE;

++nDestStep;

}

}

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值