add vba support for BackColor, AutoSize, Locked attributes bnc#749960

This commit is contained in:
Noel Power 2012-03-20 15:35:30 +00:00
parent f626ff59b2
commit 092d6d9d6f
24 changed files with 275 additions and 10 deletions

View file

@ -75,6 +75,7 @@ $(eval $(call gb_UnoApiTarget_add_idlfiles,oovbaapi,oovbaapi/ooo/vba,\
VbMsgBoxStyle \
VbQueryClose \
VbStrConv \
SystemColorConstants \
VbTriState \
VbVarType \
XApplicationBase \

View file

@ -0,0 +1,31 @@
module ooo { module vba {
constants SystemColorConstants {
const long vbScrollBars = -2147483648;// 0x80000000;
const long vbDesktop = -2147483647; //0x80000001;
const long vbActiveTitleBar = -2147483646; //0x80000002;
const long vbInactiveTitleBar = -2147483645; //0x80000003;
const long vbMenuBar = -2147483644; //0x80000004;
const long vbWindowBackground = -2147483643; //0x80000005;
const long vbWindowFrame = -2147483642; //0x80000006;
const long vbMenuText = -2147483641; //0x80000007;
const long vbWindowText = -2147483640; //0x80000008;
const long vbTitleBarText = -2147483639; //0x80000009;
const long vbActiveBorder = -2147483638; //0x8000000A;
const long vbInactiveBorder = -2147483637; //0x8000000B;
const long vbApplicationWorkspace = -2147483636; //0x8000000C;
const long vbHighlight = -2147483635; //0x8000000D;
const long vbHighlightText = -2147483634; //0x8000000E;
const long vbButtonFace = -2147483633; //0x8000000F;
const long vbButtonShadow = -2147483632; //0x80000010;
const long vbGrayText = -2147483631; //0x80000011;
const long vbButtonText = -2147483630; //0x80000012;
const long vbInactiveCaptionText = -2147483629; //0x80000013;
const long vb3DHighlight = -2147483628; //0x80000014;
const long vb3DDKShadow = -2147483627; //0x80000015;
const long vb3DLight = -2147483626; //0x80000016;
const long vbInfoText = -2147483625; //0x80000017;
const long vbInfoBackground = -2147483624; //0x80000018;
};
}; };

View file

@ -39,6 +39,9 @@ interface XCheckBox: com::sun::star::uno::XInterface
{
[attribute] string Caption;
[attribute] any Value;
[attribute] long BackColor;
[attribute] boolean AutoSize;
[attribute] boolean Locked;
[attribute, readonly] XNewFont Font;
};

View file

@ -49,6 +49,9 @@ interface XComboBox
[attribute] long EnterFieldBehavior;
[attribute] long ListStyle;
[attribute] long TextAlign;
[attribute] long BackColor;
[attribute] boolean AutoSize;
[attribute] boolean Locked;
[attribute, readonly] long TextLength;
[attribute, readonly] XNewFont Font;

View file

@ -39,11 +39,12 @@ module ooo { module vba { module msforms {
interface XCommandButton
{
[attribute] string Caption;
[attribute] boolean AutoSize;
[attribute] boolean Cancel;
[attribute] boolean Default;
[attribute] long BackColor;
[attribute] long ForeColor;
[attribute] boolean AutoSize;
[attribute] boolean Locked;
[attribute, readonly] XNewFont Font;
};

View file

@ -35,6 +35,7 @@ module ooo { module vba { module msforms {
//=============================================================================
interface XImage: com::sun::star::uno::XInterface
{
[attribute] long BackColor;
};
//=============================================================================

View file

@ -42,6 +42,8 @@ interface XLabel
[attribute] string Caption;
[attribute] any Value;
[attribute] string Accelerator;
[attribute] long BackColor;
[attribute] boolean AutoSize;
[attribute, readonly] XNewFont Font;
};

View file

@ -45,6 +45,9 @@ interface XTextBox
[attribute] boolean Multiline;
[attribute] long SpecialEffect;
[attribute] long BorderStyle;
[attribute] long BackColor;
[attribute] boolean AutoSize;
[attribute] boolean Locked;
[attribute, readonly] long TextLength;
[attribute, readonly] XNewFont Font;
};

View file

@ -55,11 +55,22 @@ ScVbaButton::setCaption( const rtl::OUString& _caption ) throw (::com::sun::star
sal_Bool SAL_CALL ScVbaButton::getAutoSize() throw (uno::RuntimeException)
{
return sal_False;
return ScVbaControl::getAutoSize();
}
void SAL_CALL ScVbaButton::setAutoSize( sal_Bool /*bAutoSize*/ ) throw (uno::RuntimeException)
void SAL_CALL ScVbaButton::setAutoSize( sal_Bool bAutoSize ) throw (uno::RuntimeException)
{
ScVbaControl::setAutoSize( bAutoSize );
}
sal_Bool SAL_CALL ScVbaButton::getLocked() throw (uno::RuntimeException)
{
return ScVbaControl::getLocked();
}
void SAL_CALL ScVbaButton::setLocked( sal_Bool bLocked ) throw (uno::RuntimeException)
{
ScVbaControl::setLocked( bLocked );
}
sal_Bool SAL_CALL ScVbaButton::getCancel() throw (uno::RuntimeException)
@ -82,16 +93,16 @@ void SAL_CALL ScVbaButton::setDefault( sal_Bool /*bDefault*/ ) throw (uno::Runti
sal_Int32 SAL_CALL ScVbaButton::getBackColor() throw (uno::RuntimeException)
{
return 0;
return ScVbaControl::getBackColor();
}
void SAL_CALL ScVbaButton::setBackColor( sal_Int32 /*nBackColor*/ ) throw (uno::RuntimeException)
void SAL_CALL ScVbaButton::setBackColor( sal_Int32 nBackColor ) throw (uno::RuntimeException)
{
ScVbaControl::setBackColor( nBackColor );
}
sal_Int32 SAL_CALL ScVbaButton::getForeColor() throw (uno::RuntimeException)
{
return 0;
}
void SAL_CALL ScVbaButton::setForeColor( sal_Int32 /*nForeColor*/ ) throw (uno::RuntimeException)

View file

@ -52,6 +52,8 @@ public:
virtual void SAL_CALL setBackColor( sal_Int32 nBackColor ) throw (css::uno::RuntimeException);
virtual sal_Int32 SAL_CALL getForeColor() throw (css::uno::RuntimeException);
virtual void SAL_CALL setForeColor( sal_Int32 nForeColor ) throw (css::uno::RuntimeException);
virtual sal_Bool SAL_CALL getLocked() throw (css::uno::RuntimeException);
virtual void SAL_CALL setLocked( sal_Bool bAutoSize ) throw (css::uno::RuntimeException);
virtual css::uno::Reference< ov::msforms::XNewFont > SAL_CALL getFont() throw (css::uno::RuntimeException);
//XHelperInterface
virtual rtl::OUString& getServiceImplName();

View file

@ -114,4 +114,33 @@ ScVbaCheckbox::getServiceNames()
return aServiceNames;
}
sal_Int32 SAL_CALL ScVbaCheckbox::getBackColor() throw (uno::RuntimeException)
{
return ScVbaControl::getBackColor();
}
void SAL_CALL ScVbaCheckbox::setBackColor( sal_Int32 nBackColor ) throw (uno::RuntimeException)
{
ScVbaControl::setBackColor( nBackColor );
}
sal_Bool SAL_CALL ScVbaCheckbox::getAutoSize() throw (uno::RuntimeException)
{
return ScVbaControl::getAutoSize();
}
void SAL_CALL ScVbaCheckbox::setAutoSize( sal_Bool bAutoSize ) throw (uno::RuntimeException)
{
ScVbaControl::setAutoSize( bAutoSize );
}
sal_Bool SAL_CALL ScVbaCheckbox::getLocked() throw (uno::RuntimeException)
{
return ScVbaControl::getLocked();
}
void SAL_CALL ScVbaCheckbox::setLocked( sal_Bool bLocked ) throw (uno::RuntimeException)
{
ScVbaControl::setLocked( bLocked );
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */

View file

@ -45,6 +45,12 @@ public:
virtual css::uno::Any SAL_CALL getValue() throw (css::uno::RuntimeException);
virtual void SAL_CALL setValue( const css::uno::Any& _value ) throw (css::uno::RuntimeException);
virtual css::uno::Reference< ov::msforms::XNewFont > SAL_CALL getFont() throw (css::uno::RuntimeException);
virtual sal_Int32 getBackColor() throw (css::uno::RuntimeException);
virtual void SAL_CALL setBackColor( sal_Int32 nBackColor ) throw (css::uno::RuntimeException);
virtual sal_Bool SAL_CALL getAutoSize() throw (css::uno::RuntimeException);
virtual void SAL_CALL setAutoSize( sal_Bool bAutoSize ) throw (css::uno::RuntimeException);
virtual sal_Bool SAL_CALL getLocked() throw (css::uno::RuntimeException);
virtual void SAL_CALL setLocked( sal_Bool bAutoSize ) throw (css::uno::RuntimeException);
// XDefaultProperty
rtl::OUString SAL_CALL getDefaultPropertyName( ) throw (css::uno::RuntimeException) { return ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Value")); }
//XHelperInterface

View file

@ -278,6 +278,35 @@ ScVbaComboBox::getServiceImplName()
static rtl::OUString sImplName( RTL_CONSTASCII_USTRINGPARAM("ScVbaComboBox") );
return sImplName;
}
sal_Int32 SAL_CALL ScVbaComboBox::getBackColor() throw (uno::RuntimeException)
{
return ScVbaControl::getBackColor();
}
void SAL_CALL ScVbaComboBox::setBackColor( sal_Int32 nBackColor ) throw (uno::RuntimeException)
{
ScVbaControl::setBackColor( nBackColor );
}
sal_Bool SAL_CALL ScVbaComboBox::getAutoSize() throw (uno::RuntimeException)
{
return ScVbaControl::getAutoSize();
}
void SAL_CALL ScVbaComboBox::setAutoSize( sal_Bool bAutoSize ) throw (uno::RuntimeException)
{
ScVbaControl::setAutoSize( bAutoSize );
}
sal_Bool SAL_CALL ScVbaComboBox::getLocked() throw (uno::RuntimeException)
{
return ScVbaControl::getLocked();
}
void SAL_CALL ScVbaComboBox::setLocked( sal_Bool bLocked ) throw (uno::RuntimeException)
{
ScVbaControl::setLocked( bLocked );
}
uno::Sequence< rtl::OUString >
ScVbaComboBox::getServiceNames()

View file

@ -73,6 +73,12 @@ public:
virtual void SAL_CALL setTextAlign( sal_Int32 nTextAlign ) throw (css::uno::RuntimeException);
virtual sal_Int32 SAL_CALL getTextLength() throw (css::uno::RuntimeException);
virtual css::uno::Reference< ov::msforms::XNewFont > SAL_CALL getFont() throw (css::uno::RuntimeException);
virtual sal_Int32 getBackColor() throw (css::uno::RuntimeException);
virtual void SAL_CALL setBackColor( sal_Int32 nBackColor ) throw (css::uno::RuntimeException);
virtual sal_Bool SAL_CALL getAutoSize() throw (css::uno::RuntimeException);
virtual void SAL_CALL setAutoSize( sal_Bool bAutoSize ) throw (css::uno::RuntimeException);
virtual sal_Bool SAL_CALL getLocked() throw (css::uno::RuntimeException);
virtual void SAL_CALL setLocked( sal_Bool bAutoSize ) throw (css::uno::RuntimeException);
// Methods
virtual void SAL_CALL AddItem( const css::uno::Any& pvargItem, const css::uno::Any& pvargIndex ) throw (css::uno::RuntimeException);

View file

@ -534,6 +534,8 @@ void SAL_CALL ScVbaControl::setTabIndex( sal_Int32 /*nTabIndex*/ ) throw (uno::R
return new ScVbaSpinButton( xVbaParent, xContext, xControlShape, xModel, xGeoHelper.release() );
case form::FormComponentType::IMAGECONTROL:
return new ScVbaImage( xVbaParent, xContext, xControlShape, xModel, xGeoHelper.release() );
case form::FormComponentType::SCROLLBAR:
return new ScVbaScrollBar( xVbaParent, xContext, xControlShape, xModel, xGeoHelper.release() );
}
throw uno::RuntimeException( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Unsupported control.")), uno::Reference< uno::XInterface >() );
}
@ -619,6 +621,46 @@ ScVbaControl::getServiceNames()
return aServiceNames;
}
sal_Int32 nSysCols[] = { 0xC8D0D4, 0x0, 0x6A240A, 0x808080, 0xE4E4E4, 0xFFFFFF, 0x0, 0x0, 0x0, 0xFFFFFF, 0xE4E4E4, 0xE4E4E4, 0x808080, 0x6A240A, 0xFFFFFF, 0xE4E4E4, 0x808080, 0x808080, 0x0, 0xC8D0D4, 0xFFFFFF, 0x404040, 0xE4E4E4, 0x0, 0xE1FFFF };
sal_Int32 ScVbaControl::getBackColor() throw (uno::RuntimeException)
{
sal_Int32 nBackColor = 0;
m_xProps->getPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("BackgroundColor") ) ) >>= nBackColor;
return nBackColor;
}
void ScVbaControl::setBackColor( sal_Int32 nBackColor ) throw (uno::RuntimeException)
{
if ( ( nBackColor >= (sal_Int32)0x80000000 ) && ( nBackColor <= (sal_Int32)0x80000018 ) )
{
nBackColor = nSysCols[ nBackColor - 0x80000000 ];
}
m_xProps->setPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("BackgroundColor") ), uno::makeAny( XLRGBToOORGB( nBackColor ) ) );
}
sal_Bool ScVbaControl::getAutoSize() throw (uno::RuntimeException)
{
return sal_False;
}
// currently no implementation for this
void ScVbaControl::setAutoSize( sal_Bool /*bAutoSize*/ ) throw (uno::RuntimeException)
{
}
sal_Bool ScVbaControl::getLocked() throw (uno::RuntimeException)
{
sal_Bool bRes( sal_False );
m_xProps->getPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("ReadOnly") ) ) >>= bRes;
return bRes;
}
void ScVbaControl::setLocked( sal_Bool bLocked ) throw (uno::RuntimeException)
{
m_xProps->setPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("ReadOnly") ), uno::makeAny( bLocked ) );
}
typedef cppu::WeakImplHelper1< XControlProvider > ControlProvider_BASE;
class ControlProviderImpl : public ControlProvider_BASE
{

View file

@ -114,6 +114,14 @@ public:
//XHelperInterface
virtual rtl::OUString& getServiceImplName();
virtual css::uno::Sequence<rtl::OUString> getServiceNames();
//General helper methods for properties ( may or maynot be relevant for all
//controls
sal_Int32 getBackColor() throw (css::uno::RuntimeException);
void setBackColor( sal_Int32 nBackColor ) throw (css::uno::RuntimeException);
sal_Bool getAutoSize() throw (css::uno::RuntimeException);
void setAutoSize( sal_Bool bAutoSize ) throw (css::uno::RuntimeException);
sal_Bool getLocked() throw (css::uno::RuntimeException);
void setLocked( sal_Bool bAutoSize ) throw (css::uno::RuntimeException);
};

View file

@ -56,4 +56,14 @@ ScVbaImage::getServiceNames()
return aServiceNames;
}
sal_Int32 SAL_CALL ScVbaImage::getBackColor() throw (uno::RuntimeException)
{
return ScVbaControl::getBackColor();
}
void SAL_CALL ScVbaImage::setBackColor( sal_Int32 nBackColor ) throw (uno::RuntimeException)
{
ScVbaControl::setBackColor( nBackColor );
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */

View file

@ -39,6 +39,8 @@ class ScVbaImage : public ImageImpl_BASE
{
public:
ScVbaImage( const css::uno::Reference< ov::XHelperInterface >& xParent, const css::uno::Reference< css::uno::XComponentContext >& xContext, const css::uno::Reference< css::uno::XInterface >& xControl, const css::uno::Reference< css::frame::XModel >& xModel, ov::AbstractGeometryAttributes* pGeomHelper );
virtual sal_Int32 getBackColor() throw (css::uno::RuntimeException);
virtual void SAL_CALL setBackColor( sal_Int32 nBackColor ) throw (css::uno::RuntimeException);
//XHelperInterface
virtual rtl::OUString& getServiceImplName();
virtual css::uno::Sequence<rtl::OUString> getServiceNames();

View file

@ -90,6 +90,26 @@ rtl::OUString& ScVbaLabel::getServiceImplName()
return sImplName;
}
sal_Int32 SAL_CALL ScVbaLabel::getBackColor() throw (uno::RuntimeException)
{
return ScVbaControl::getBackColor();
}
void SAL_CALL ScVbaLabel::setBackColor( sal_Int32 nBackColor ) throw (uno::RuntimeException)
{
ScVbaControl::setBackColor( nBackColor );
}
sal_Bool SAL_CALL ScVbaLabel::getAutoSize() throw (uno::RuntimeException)
{
return ScVbaControl::getAutoSize();
}
void SAL_CALL ScVbaLabel::setAutoSize( sal_Bool bAutoSize ) throw (uno::RuntimeException)
{
ScVbaControl::setAutoSize( bAutoSize );
}
uno::Sequence< rtl::OUString >
ScVbaLabel::getServiceNames()
{

View file

@ -48,6 +48,10 @@ public:
virtual rtl::OUString SAL_CALL getAccelerator() throw (css::uno::RuntimeException);
virtual void SAL_CALL setAccelerator( const rtl::OUString& _accelerator ) throw (css::uno::RuntimeException);
virtual css::uno::Reference< ov::msforms::XNewFont > SAL_CALL getFont() throw (css::uno::RuntimeException);
virtual sal_Int32 getBackColor() throw (css::uno::RuntimeException);
virtual void SAL_CALL setBackColor( sal_Int32 nBackColor ) throw (css::uno::RuntimeException);
virtual sal_Bool SAL_CALL getAutoSize() throw (css::uno::RuntimeException);
virtual void SAL_CALL setAutoSize( sal_Bool bAutoSize ) throw (css::uno::RuntimeException);
//XHelperInterface
virtual rtl::OUString& getServiceImplName();
virtual css::uno::Sequence<rtl::OUString> getServiceNames();

View file

@ -152,6 +152,36 @@ uno::Reference< msforms::XNewFont > SAL_CALL ScVbaTextBox::getFont() throw (uno:
return new VbaNewFont( this, mxContext, m_xProps );
}
sal_Int32 SAL_CALL ScVbaTextBox::getBackColor() throw (uno::RuntimeException)
{
return ScVbaControl::getBackColor();
}
void SAL_CALL ScVbaTextBox::setBackColor( sal_Int32 nBackColor ) throw (uno::RuntimeException)
{
ScVbaControl::setBackColor( nBackColor );
}
sal_Bool SAL_CALL ScVbaTextBox::getAutoSize() throw (uno::RuntimeException)
{
return ScVbaControl::getAutoSize();
}
void SAL_CALL ScVbaTextBox::setAutoSize( sal_Bool bAutoSize ) throw (uno::RuntimeException)
{
ScVbaControl::setAutoSize( bAutoSize );
}
sal_Bool SAL_CALL ScVbaTextBox::getLocked() throw (uno::RuntimeException)
{
return ScVbaControl::getLocked();
}
void SAL_CALL ScVbaTextBox::setLocked( sal_Bool bLocked ) throw (uno::RuntimeException)
{
ScVbaControl::setLocked( bLocked );
}
rtl::OUString&
ScVbaTextBox::getServiceImplName()
{

View file

@ -54,6 +54,13 @@ public:
virtual void SAL_CALL setBorderStyle( sal_Int32 nBorderStyle ) throw (css::uno::RuntimeException);
virtual sal_Int32 SAL_CALL getTextLength() throw (css::uno::RuntimeException);
virtual css::uno::Reference< ov::msforms::XNewFont > SAL_CALL getFont() throw (css::uno::RuntimeException);
virtual sal_Int32 getBackColor() throw (css::uno::RuntimeException);
virtual void SAL_CALL setBackColor( sal_Int32 nBackColor ) throw (css::uno::RuntimeException);
virtual sal_Bool SAL_CALL getAutoSize() throw (css::uno::RuntimeException);
virtual void SAL_CALL setAutoSize( sal_Bool bAutoSize ) throw (css::uno::RuntimeException);
virtual sal_Bool SAL_CALL getLocked() throw (css::uno::RuntimeException);
virtual void SAL_CALL setLocked( sal_Bool bAutoSize ) throw (css::uno::RuntimeException);
// XDefaultProperty
rtl::OUString SAL_CALL getDefaultPropertyName( ) throw (css::uno::RuntimeException) { return ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Value")); }
//XHelperInterface

View file

@ -99,11 +99,12 @@ ScVbaToggleButton::setValue( const uno::Any& _value ) throw (uno::RuntimeExcepti
sal_Bool SAL_CALL ScVbaToggleButton::getAutoSize() throw (uno::RuntimeException)
{
return sal_False;
return ScVbaControl::getAutoSize();
}
void SAL_CALL ScVbaToggleButton::setAutoSize( sal_Bool /*bAutoSize*/ ) throw (uno::RuntimeException)
void SAL_CALL ScVbaToggleButton::setAutoSize( sal_Bool bAutoSize ) throw (uno::RuntimeException)
{
ScVbaControl::setAutoSize( bAutoSize );
}
sal_Bool SAL_CALL ScVbaToggleButton::getCancel() throw (uno::RuntimeException)
@ -126,11 +127,12 @@ void SAL_CALL ScVbaToggleButton::setDefault( sal_Bool /*bDefault*/ ) throw (uno:
sal_Int32 SAL_CALL ScVbaToggleButton::getBackColor() throw (uno::RuntimeException)
{
return 0;
return ScVbaControl::getBackColor();
}
void SAL_CALL ScVbaToggleButton::setBackColor( sal_Int32 /*nBackColor*/ ) throw (uno::RuntimeException)
void SAL_CALL ScVbaToggleButton::setBackColor( sal_Int32 nBackColor ) throw (uno::RuntimeException)
{
ScVbaControl::setBackColor( nBackColor );
}
sal_Int32 SAL_CALL ScVbaToggleButton::getForeColor() throw (uno::RuntimeException)
@ -147,6 +149,16 @@ uno::Reference< msforms::XNewFont > SAL_CALL ScVbaToggleButton::getFont() throw
return new VbaNewFont( this, mxContext, m_xProps );
}
sal_Bool SAL_CALL ScVbaToggleButton::getLocked() throw (uno::RuntimeException)
{
return ScVbaControl::getLocked();
}
void SAL_CALL ScVbaToggleButton::setLocked( sal_Bool bLocked ) throw (uno::RuntimeException)
{
ScVbaControl::setLocked( bLocked );
}
rtl::OUString&
ScVbaToggleButton::getServiceImplName()
{

View file

@ -56,6 +56,8 @@ public:
virtual void SAL_CALL setBackColor( sal_Int32 nBackColor ) throw (css::uno::RuntimeException);
virtual sal_Int32 SAL_CALL getForeColor() throw (css::uno::RuntimeException);
virtual void SAL_CALL setForeColor( sal_Int32 nForeColor ) throw (css::uno::RuntimeException);
virtual sal_Bool SAL_CALL getLocked() throw (css::uno::RuntimeException);
virtual void SAL_CALL setLocked( sal_Bool bAutoSize ) throw (css::uno::RuntimeException);
virtual css::uno::Reference< ov::msforms::XNewFont > SAL_CALL getFont() throw (css::uno::RuntimeException);
//XHelperInterface
virtual rtl::OUString& getServiceImplName();