diff options
author | Kohei Yoshida <kyoshida@novell.com> | 2011-03-15 01:58:39 -0400 |
---|---|---|
committer | Kohei Yoshida <kyoshida@novell.com> | 2011-03-15 01:58:39 -0400 |
commit | 1a5aaf0b88db4a7479eeb1893f2b8bb5ae72111f (patch) | |
tree | 88c13cad74a57b6944e8883b477d38c0eebfbe39 /sc/source/ui/vba | |
parent | 0a95ed445f71a9886fdc135b32153beda215cebc (diff) |
Some attempts to get the VBA code to build.
Diffstat (limited to 'sc/source/ui/vba')
-rw-r--r-- | sc/source/ui/vba/excelvbahelper.cxx | 16 | ||||
-rw-r--r-- | sc/source/ui/vba/excelvbahelper.hxx | 56 | ||||
-rw-r--r-- | sc/source/ui/vba/makefile.mk | 7 | ||||
-rw-r--r-- | sc/source/ui/vba/service.cxx | 10 | ||||
-rw-r--r-- | sc/source/ui/vba/vbaaxis.cxx | 2 | ||||
-rw-r--r-- | sc/source/ui/vba/vbachart.cxx | 14 | ||||
-rw-r--r-- | sc/source/ui/vba/vbaeventshelper.cxx | 8 | ||||
-rw-r--r-- | sc/source/ui/vba/vbaeventshelper.hxx | 2 | ||||
-rw-r--r-- | sc/source/ui/vba/vbaformat.cxx | 2 | ||||
-rw-r--r-- | sc/source/ui/vba/vbapagebreak.cxx | 4 | ||||
-rw-r--r-- | sc/source/ui/vba/vbarange.cxx | 97 | ||||
-rw-r--r-- | sc/source/ui/vba/vbasheetobject.cxx | 6 |
12 files changed, 107 insertions, 117 deletions
diff --git a/sc/source/ui/vba/excelvbahelper.cxx b/sc/source/ui/vba/excelvbahelper.cxx index 5ec8fd16c80d..989ca4678707 100644 --- a/sc/source/ui/vba/excelvbahelper.cxx +++ b/sc/source/ui/vba/excelvbahelper.cxx @@ -44,6 +44,10 @@ using namespace ::com::sun::star; using namespace ::ooo::vba; +namespace ooo { +namespace vba { +namespace excel { + // ============================================================================ uno::Reference< sheet::XDatabaseRanges > @@ -331,8 +335,8 @@ sal_Bool IsR1C1ReferFormat( ScDocument* pDoc, const rtl::OUString& sRangeStr ) return false; } -uno::Reference< XHelperInterface > -getUnoSheetModuleObj( const uno::Reference< table::XCellRange >& xRange ) throw ( uno::RuntimeException ) +uno::Reference< vba::XHelperInterface > +getUnoSheetModuleObj( const uno::Reference< sheet::XSpreadsheet >& xSheet ) throw ( uno::RuntimeException ) { uno::Reference< beans::XPropertySet > xProps( xSheet, uno::UNO_QUERY_THROW ); rtl::OUString sCodeName; @@ -458,8 +462,6 @@ ScVbaCellRangeAccess::GetDataSet( ScCellRangesBase* pRangeObj ) // ============================================================================ -} //excel -} //vba -} //ooo - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ +} // namespace excel +} // namespace vba +} // namespace ooo diff --git a/sc/source/ui/vba/excelvbahelper.hxx b/sc/source/ui/vba/excelvbahelper.hxx index 13e7bf985d32..4534cb1dd918 100644 --- a/sc/source/ui/vba/excelvbahelper.hxx +++ b/sc/source/ui/vba/excelvbahelper.hxx @@ -28,8 +28,8 @@ #ifndef SC_EXCEL_VBA_HELPER_HXX #define SC_EXCEL_VBA_HELPER_HXX -#include<vbahelper/vbahelper.hxx> -#include <docsh.hxx> +#include <vbahelper/vbahelper.hxx> +#include "docsh.hxx" #include <com/sun/star/sheet/XDatabaseRanges.hpp> #include <com/sun/star/sheet/XDatabaseRange.hpp> #include <com/sun/star/table/XCellRange.hpp> @@ -52,11 +52,19 @@ void implnCopy( const css::uno::Reference< css::frame::XModel>& xModel ); void implnPaste ( const css::uno::Reference< css::frame::XModel>& xModel ); void implnCut( const css::uno::Reference< css::frame::XModel>& xModel ); void implnPasteSpecial( const css::uno::Reference< css::frame::XModel>& xModel, sal_uInt16 nFlags,sal_uInt16 nFunction,sal_Bool bSkipEmpty, sal_Bool bTranspose); +void implnCopyRange( const css::uno::Reference< css::frame::XModel>& xModel, const ScRange& rRange ); ScTabViewShell* getBestViewShell( const css::uno::Reference< css::frame::XModel>& xModel ) ; ScDocShell* getDocShell( const css::uno::Reference< css::frame::XModel>& xModel ) ; ScTabViewShell* getCurrentBestViewShell( const css::uno::Reference< css::uno::XComponentContext >& xContext ); SfxViewFrame* getViewFrame( const css::uno::Reference< css::frame::XModel >& xModel ); +sal_Bool IsR1C1ReferFormat( ScDocument* pDoc, const ::rtl::OUString& sRangeStr ); +formula::FormulaGrammar::Grammar GetFormulaGrammar( ScDocument* pDoc, const ScAddress& sAddress, const css::uno::Any& aFormula ); +void CompileExcelFormulaToODF( ScDocument* pDoc, const String& rOldFormula, String& rNewFormula ); +void CompileODFFormulaToExcel( ScDocument* pDoc, const String& rOldFormula, String& rNewFormula, const formula::FormulaGrammar::Grammar eGrammar ); +css::uno::Reference< css::sheet::XDatabaseRanges > GetDataBaseRanges( ScDocShell* pShell ) throw ( css::uno::RuntimeException ); + +css::uno::Reference< css::sheet::XDatabaseRange > GetAutoFiltRange( ScDocShell* pShell, sal_Int16 nSheet, rtl::OUString& sName ) throw ( css::uno::RuntimeException ); css::uno::Reference< ooo::vba::XHelperInterface > getUnoSheetModuleObj( const css::uno::Reference< css::sheet::XSpreadsheet >& xSheet ) throw ( css::uno::RuntimeException ); css::uno::Reference< ooo::vba::XHelperInterface > getUnoSheetModuleObj( const css::uno::Reference< css::sheet::XSheetCellRangeContainer >& xRanges ) throw ( css::uno::RuntimeException ); css::uno::Reference< ooo::vba::XHelperInterface > getUnoSheetModuleObj( const css::uno::Reference< css::table::XCellRange >& xRange ) throw ( css::uno::RuntimeException ); @@ -64,6 +72,7 @@ css::uno::Reference< ooo::vba::XHelperInterface > getUnoSheetModuleObj( const cs css::uno::Reference< ooo::vba::XHelperInterface > getUnoSheetModuleObj( const css::uno::Reference< css::frame::XModel >& xModel, SCTAB nTab ) throw ( css::uno::RuntimeException ); ScDocShell* GetDocShellFromRange( const css::uno::Reference< css::uno::XInterface >& xRange ) throw ( css::uno::RuntimeException ); +ScDocShell* GetDocShellFromRanges( const css::uno::Reference< css::sheet::XSheetCellRangeContainer >& xRanges ) throw ( css::uno::RuntimeException ); ScDocument* GetDocumentFromRange( const css::uno::Reference< css::uno::XInterface >& xRange ) throw ( css::uno::RuntimeException ); css::uno::Reference< css::frame::XModel > GetModelFromRange( const css::uno::Reference< css::uno::XInterface >& xRange ) throw ( css::uno::RuntimeException ); @@ -71,43 +80,16 @@ css::uno::Reference< css::frame::XModel > GetModelFromRange( const css::uno::Ref class ScVbaCellRangeAccess { - namespace vba - { - namespace excel - { - // nTabs empty means apply zoom to all sheets - void implSetZoom( const css::uno::Reference< css::frame::XModel >& xModel, sal_Int16 nZoom, std::vector< SCTAB >& nTabs ); - void implnCopy( const css::uno::Reference< css::frame::XModel>& xModel ); - void implnPaste ( const css::uno::Reference< css::frame::XModel>& xModel ); - void implnCut( const css::uno::Reference< css::frame::XModel>& xModel ); - void implnPasteSpecial( const css::uno::Reference< css::frame::XModel>& xModel, sal_uInt16 nFlags,sal_uInt16 nFunction,sal_Bool bSkipEmpty, sal_Bool bTranspose); - void implnCopyRange( const css::uno::Reference< css::frame::XModel>& xModel, const ScRange& rRange ); - ScTabViewShell* getBestViewShell( const css::uno::Reference< css::frame::XModel>& xModel ) ; - ScDocShell* getDocShell( const css::uno::Reference< css::frame::XModel>& xModel ) ; - ScTabViewShell* getCurrentBestViewShell( const css::uno::Reference< css::uno::XComponentContext >& xContext ); - SfxViewFrame* getViewFrame( const css::uno::Reference< css::frame::XModel >& xModel ); - sal_Bool IsR1C1ReferFormat( ScDocument* pDoc, const ::rtl::OUString& sRangeStr ); - formula::FormulaGrammar::Grammar GetFormulaGrammar( ScDocument* pDoc, const ScAddress& sAddress, const css::uno::Any& aFormula ); - void CompileExcelFormulaToODF( ScDocument* pDoc, const String& rOldFormula, String& rNewFormula ); - void CompileODFFormulaToExcel( ScDocument* pDoc, const String& rOldFormula, String& rNewFormula, const formula::FormulaGrammar::Grammar eGrammar ); - css::uno::Reference< css::sheet::XDatabaseRanges > GetDataBaseRanges( ScDocShell* pShell ) throw ( css::uno::RuntimeException ); +public: + static SfxItemSet* GetDataSet( ScCellRangesBase* pRangeObj ); +}; + +// ============================================================================ - css::uno::Reference< css::sheet::XDatabaseRange > GetAutoFiltRange( ScDocShell* pShell, sal_Int16 nSheet, rtl::OUString& sName ) throw ( css::uno::RuntimeException ); - css::uno::Reference< ooo::vba::XHelperInterface > getUnoSheetModuleObj( const css::uno::Reference< css::sheet::XSheetCellRangeContainer >& xRanges ) throw ( css::uno::RuntimeException ); - css::uno::Reference< ooo::vba::XHelperInterface > getUnoSheetModuleObj( const css::uno::Reference< css::table::XCellRange >& xRange ) throw ( css::uno::RuntimeException ); - ScDocShell* GetDocShellFromRange( const css::uno::Reference< css::uno::XInterface >& xRange ) throw ( css::uno::RuntimeException ); - ScDocShell* GetDocShellFromRanges( const css::uno::Reference< css::sheet::XSheetCellRangeContainer >& xRanges ) throw ( css::uno::RuntimeException ); - ScDocument* GetDocumentFromRange( const css::uno::Reference< css::uno::XInterface >& xRange ) throw ( css::uno::RuntimeException ); - css::uno::Reference< css::frame::XModel > GetModelFromRange( const css::uno::Reference< css::uno::XInterface >& xRange ) throw ( css::uno::RuntimeException ); +} // namespace excel +} // namespace vba +} // namespace ooo - class ScVbaCellRangeAccess - { - public: - static SfxItemSet* GetDataSet( ScCellRangesBase* pRangeObj ); - }; - } - } -} #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sc/source/ui/vba/makefile.mk b/sc/source/ui/vba/makefile.mk index 67d600116b0c..bd355b184668 100644 --- a/sc/source/ui/vba/makefile.mk +++ b/sc/source/ui/vba/makefile.mk @@ -37,13 +37,6 @@ VISIBILITY_HIDDEN=TRUE .INCLUDE : settings.mk DLLPRE = -.IF "$(ENABLE_VBA)"!="YES" -dummy: - @echo "not building vba..." -.ENDIF - -CDEFS+=-DVBA_OOBUILD_HACK - .IF "$(L10N_framework)"=="" INCPRE=$(INCCOM)$/$(TARGET) diff --git a/sc/source/ui/vba/service.cxx b/sc/source/ui/vba/service.cxx index 05dc4ab91820..56ed8a38fc6f 100644 --- a/sc/source/ui/vba/service.cxx +++ b/sc/source/ui/vba/service.cxx @@ -85,16 +85,6 @@ extern "C" *ppEnvTypeName = CPPU_CURRENT_LANGUAGE_BINDING_NAME; } - SAL_DLLPUBLIC_EXPORT sal_Bool SAL_CALL component_writeInfo( - lang::XMultiServiceFactory * pServiceManager, registry::XRegistryKey * pRegistryKey ) - { - OSL_TRACE("In component_writeInfo"); - - // Component registration - return component_writeInfoHelper( pServiceManager, pRegistryKey, - range::serviceDecl, workbook::serviceDecl, worksheet::serviceDecl, globals::serviceDecl, window::serviceDecl, hyperlink::serviceDecl, application::serviceDecl ) && component_writeInfoHelper( pServiceManager, pRegistryKey, vbaeventshelper::serviceDecl, textframe::serviceDecl ); - } - SAL_DLLPUBLIC_EXPORT void * SAL_CALL component_getFactory( const sal_Char * pImplName, lang::XMultiServiceFactory * pServiceManager, registry::XRegistryKey * pRegistryKey ) diff --git a/sc/source/ui/vba/vbaaxis.cxx b/sc/source/ui/vba/vbaaxis.cxx index 3d599b25a599..843b278fcbfc 100644 --- a/sc/source/ui/vba/vbaaxis.cxx +++ b/sc/source/ui/vba/vbaaxis.cxx @@ -572,7 +572,7 @@ ScVbaAxis::setScaleType( ::sal_Int32 _nScaleType ) throw (script::BasicErrorExce switch (_nScaleType) { case xlScaleLinear: - mxPropertySet->setPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Logarithmic" ) ), uno::makeAny( false ) ); + mxPropertySet->setPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Logarithmic" ) ), uno::makeAny( sal_False ) ); break; case xlScaleLogarithmic: mxPropertySet->setPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Logarithmic" ) ), uno::makeAny( sal_True ) ); diff --git a/sc/source/ui/vba/vbachart.cxx b/sc/source/ui/vba/vbachart.cxx index 16893723a19a..1377291fcb24 100644 --- a/sc/source/ui/vba/vbachart.cxx +++ b/sc/source/ui/vba/vbachart.cxx @@ -331,7 +331,7 @@ try case xlXYScatter: case xlBubble: // not possible case xlBubble3DEffect: // not possible - mxDiagramPropertySet->setPropertyValue(LINES, uno::makeAny( false )); + mxDiagramPropertySet->setPropertyValue(LINES, uno::makeAny( sal_False )); break; case xlXYScatterLines: case xlXYScatterLinesNoMarkers: @@ -385,7 +385,7 @@ try default: if (mxDiagramPropertySet->getPropertySetInfo()->hasPropertyByName(DEEP)) { - mxDiagramPropertySet->setPropertyValue(DEEP, uno::makeAny( false)); + mxDiagramPropertySet->setPropertyValue(DEEP, uno::makeAny( sal_False)); } break; } @@ -455,7 +455,7 @@ try default: if (mxDiagramPropertySet->getPropertySetInfo()->hasPropertyByName(VERTICAL)) { - mxDiagramPropertySet->setPropertyValue(VERTICAL, uno::makeAny(false)); + mxDiagramPropertySet->setPropertyValue(VERTICAL, uno::makeAny(sal_False)); } break; } @@ -476,7 +476,7 @@ try case xlConeBarStacked: case xlPyramidColStacked: case xlPyramidBarStacked: - mxDiagramPropertySet->setPropertyValue(PERCENT, uno::makeAny( false )); + mxDiagramPropertySet->setPropertyValue(PERCENT, uno::makeAny( sal_False )); mxDiagramPropertySet->setPropertyValue(STACKED, uno::makeAny( sal_True )); break; case xlPyramidColStacked100: @@ -497,8 +497,8 @@ try mxDiagramPropertySet->setPropertyValue(PERCENT, uno::makeAny( sal_True )); break; default: - mxDiagramPropertySet->setPropertyValue(PERCENT, uno::makeAny( false)); - mxDiagramPropertySet->setPropertyValue(STACKED, uno::makeAny( false)); + mxDiagramPropertySet->setPropertyValue(PERCENT, uno::makeAny( sal_False)); + mxDiagramPropertySet->setPropertyValue(STACKED, uno::makeAny( sal_False)); break; } switch (_nChartType) @@ -542,7 +542,7 @@ try default: if (mxDiagramPropertySet->getPropertySetInfo()->hasPropertyByName(DIM3D)) { - mxDiagramPropertySet->setPropertyValue(DIM3D, uno::makeAny( false)); + mxDiagramPropertySet->setPropertyValue(DIM3D, uno::makeAny( sal_False)); } break; } diff --git a/sc/source/ui/vba/vbaeventshelper.cxx b/sc/source/ui/vba/vbaeventshelper.cxx index f1c706a7a091..e22632529617 100644 --- a/sc/source/ui/vba/vbaeventshelper.cxx +++ b/sc/source/ui/vba/vbaeventshelper.cxx @@ -137,6 +137,7 @@ private: uno::Reference< awt::XWindow > getContainerWindow(); bool isMouseReleased(); DECL_LINK( fireResizeMacro, void* ); + void processWindowResizeMacro(); private: ::osl::Mutex maMutex; @@ -689,13 +690,13 @@ namespace { bool lclSelectionChanged( const ScRangeList& rLeft, const ScRangeList& rRight ) { // one of the range lists empty? -> return false, if both lists empty - bool bLeftEmpty = rLeft.Count() == 0; - bool bRightEmpty = rRight.Count() == 0; + bool bLeftEmpty = rLeft.empty(); + bool bRightEmpty = rRight.empty(); if( bLeftEmpty || bRightEmpty ) return !(bLeftEmpty && bRightEmpty); // check sheet indexes of the range lists (assuming that all ranges in a list are on the same sheet) - if( rLeft.GetObject( 0 )->aStart.Tab() != rRight.GetObject( 0 )->aStart.Tab() ) + if( rLeft.front()->aStart.Tab() != rRight.front()->aStart.Tab() ) return false; // compare all ranges @@ -706,7 +707,6 @@ bool lclSelectionChanged( const ScRangeList& rLeft, const ScRangeList& rRight ) bool ScVbaEventsHelper::isSelectionChanged( const uno::Sequence< uno::Any >& rArgs, sal_Int32 nIndex ) throw (lang::IllegalArgumentException, uno::RuntimeException) { - uno::Reference< uno::XInterface > xOldSelection( maOldSelection, uno::UNO_QUERY ); uno::Reference< uno::XInterface > xNewSelection = getXSomethingFromArgs< uno::XInterface >( rArgs, nIndex, false ); if( ScCellRangesBase* pNewCellRanges = ScCellRangesBase::getImplementation( xNewSelection ) ) { diff --git a/sc/source/ui/vba/vbaeventshelper.hxx b/sc/source/ui/vba/vbaeventshelper.hxx index f299afd7ac6c..fccbe2873f84 100644 --- a/sc/source/ui/vba/vbaeventshelper.hxx +++ b/sc/source/ui/vba/vbaeventshelper.hxx @@ -71,9 +71,9 @@ private: private: ::rtl::Reference< ScVbaEventsListener > mxListener; - css::uno::Any maOldSelection; ScDocShell* mpDocShell; ScDocument* mpDoc; + ScRangeList maOldSelection; bool mbOpened; }; diff --git a/sc/source/ui/vba/vbaformat.cxx b/sc/source/ui/vba/vbaformat.cxx index 853ddaff2484..83563e05ea02 100644 --- a/sc/source/ui/vba/vbaformat.cxx +++ b/sc/source/ui/vba/vbaformat.cxx @@ -59,7 +59,7 @@ using namespace ::com::sun::star; #define LOCALE "Locale" template< typename Ifc1 > -ScVbaFormat< Ifc1 >::ScVbaFormat( const uno::Reference< XHelperInterface >& xParent, const uno::Reference< uno::XComponentContext > & xContext, const uno::Reference< beans::XPropertySet >& _xPropertySet, const uno::Reference< frame::XModel >& xModel, bool bCheckAmbiguoity ) throw ( script::BasicErrorException ) : ScVbaFormat_BASE( xParent, xContext ), m_aDefaultLocale( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("en") ), rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "US") ), rtl::OUString() ), mxPropertySet( _xPropertySet ), mxModel( xModel ), mbCheckAmbiguoity( bCheckAmbiguoity ), mbAddIndent( false ) +ScVbaFormat< Ifc1 >::ScVbaFormat( const uno::Reference< XHelperInterface >& xParent, const uno::Reference< uno::XComponentContext > & xContext, const uno::Reference< beans::XPropertySet >& _xPropertySet, const uno::Reference< frame::XModel >& xModel, bool bCheckAmbiguoity ) throw ( script::BasicErrorException ) : ScVbaFormat_BASE( xParent, xContext ), m_aDefaultLocale( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("en") ), rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "US") ), rtl::OUString() ), mxPropertySet( _xPropertySet ), mxModel( xModel ), mbCheckAmbiguoity( bCheckAmbiguoity ), mbAddIndent( sal_False ) { try { diff --git a/sc/source/ui/vba/vbapagebreak.cxx b/sc/source/ui/vba/vbapagebreak.cxx index fa75e96f6954..3939c33128cc 100644 --- a/sc/source/ui/vba/vbapagebreak.cxx +++ b/sc/source/ui/vba/vbapagebreak.cxx @@ -70,7 +70,7 @@ void ScVbaPageBreak<Ifc1>::setType(sal_Int32 type) throw (uno::RuntimeException) if( type == excel::XlPageBreak::xlPageBreakNone ) { - mxRowColPropertySet->setPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "IsStartOfNewPage" )), uno::makeAny(false)); + mxRowColPropertySet->setPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "IsStartOfNewPage" )), uno::makeAny(sal_False)); return; } @@ -84,7 +84,7 @@ void ScVbaPageBreak<Ifc1>::setType(sal_Int32 type) throw (uno::RuntimeException) template< typename Ifc1 > void ScVbaPageBreak<Ifc1>::Delete() throw ( script::BasicErrorException, uno::RuntimeException) { - mxRowColPropertySet->setPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "IsStartOfNewPage" )), uno::makeAny(false)); + mxRowColPropertySet->setPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "IsStartOfNewPage" )), uno::makeAny(sal_False)); } template< typename Ifc1 > diff --git a/sc/source/ui/vba/vbarange.cxx b/sc/source/ui/vba/vbarange.cxx index af6336eb39ea..7a57e33be889 100644 --- a/sc/source/ui/vba/vbarange.cxx +++ b/sc/source/ui/vba/vbarange.cxx @@ -176,6 +176,7 @@ #include "dbdocfun.hxx" #include "patattr.hxx" #include "olinetab.hxx" +#include "transobj.hxx" #include <comphelper/anytostring.hxx> #include <global.hxx> @@ -539,11 +540,9 @@ public: bool setNumberFormat( const rtl::OUString& rFormat ) { - lang::Locale aLocale; - uno::Reference< beans::XPropertySet > xNumProps = getNumberProps(); - xNumProps->getPropertyValue( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "Locale" )) ) >>= aLocale; - sal_Int32 nNewIndex = mxFormats->queryKey(rFormat, aLocale, false ); - if ( nNewIndex == -1 ) // format not defined + // #163288# treat "General" as "Standard" format + sal_Int32 nNewIndex = 0; + if( !rFormat.equalsIgnoreAsciiCaseAsciiL( RTL_CONSTASCII_STRINGPARAM( "General" ) ) ) { lang::Locale aLocale; uno::Reference< beans::XPropertySet > xNumProps = getNumberProps(); @@ -1607,7 +1606,7 @@ ScVbaRange::getValue() throw (uno::RuntimeException) void -ScVbaRange::setValue( const uno::Any &aValue, ValueSetter& valueSetter ) throw (uno::RuntimeException) +ScVbaRange::setValue( const uno::Any& aValue, ValueSetter& valueSetter, bool bFireEvent ) throw (uno::RuntimeException) { uno::TypeClass aClass = aValue.getValueTypeClass(); if ( aClass == uno::TypeClass_SEQUENCE ) @@ -1657,10 +1656,12 @@ ScVbaRange::setValue( const uno::Any &aValue ) throw (uno::RuntimeException) return; } CellValueSetter valueSetter( aValue ); - setValue( aValue, valueSetter ); + setValue( aValue, valueSetter, true ); +#if 0 // TODO: Noel, do we still need this? // Fires the range change event. lcl_NotifyRangeChanges( getScDocShell()->GetModel(), getCellRangesBase() ); +#endif } void SAL_CALL @@ -1668,10 +1669,12 @@ ScVbaRange::Clear() throw (uno::RuntimeException) { using namespace ::com::sun::star::sheet::CellFlags; sal_Int32 nFlags = VALUE | DATETIME | STRING | FORMULA | HARDATTR | EDITATTR | FORMATTED; - ClearContents( nFlags ); + ClearContents( nFlags, true ); +#if 0 // TODO: do we still need this? // Fires the range change event. lcl_NotifyRangeChanges( getScDocShell()->GetModel(), getCellRangesBase() ); +#endif } //helper ClearContent @@ -1690,7 +1693,7 @@ ScVbaRange::ClearContents( sal_Int32 nFlags, bool bFireEvent ) throw (uno::Runti uno::Reference< excel::XRange > xRange( m_Areas->Item( uno::makeAny(index), uno::Any() ), uno::UNO_QUERY_THROW ); ScVbaRange* pRange = getImplementation( xRange ); if ( pRange ) - pRange->ClearContents( nFlags ); + pRange->ClearContents( nFlags, false ); // do not fire for single ranges } // fire change event for the entire range list if( bFireEvent ) fireChangeEvent(); @@ -1715,10 +1718,12 @@ ScVbaRange::ClearContents() throw (uno::RuntimeException) sal_Int32 nClearFlags = ( sheet::CellFlags::VALUE | sheet::CellFlags::STRING | sheet::CellFlags::DATETIME | sheet::CellFlags::FORMULA ); - ClearContents( nClearFlags ); + ClearContents( nClearFlags, true ); +#if 0 // TODO: do we still need this? // Fires the range change event. lcl_NotifyRangeChanges( getScDocShell()->GetModel(), getCellRangesBase() ); +#endif } void SAL_CALL @@ -1726,10 +1731,12 @@ ScVbaRange::ClearFormats() throw (uno::RuntimeException) { //FIXME: need to check if we need to combine sheet::CellFlags::FORMATTED sal_Int32 nClearFlags = sheet::CellFlags::HARDATTR | sheet::CellFlags::FORMATTED | sheet::CellFlags::EDITATTR; - ClearContents( nClearFlags ); + ClearContents( nClearFlags, false ); +#if 0 // TODO: do we still need this? // Fires the range change event. lcl_NotifyRangeChanges( getScDocShell()->GetModel(), getCellRangesBase() ); +#endif } void @@ -1744,10 +1751,12 @@ ScVbaRange::setFormulaValue( const uno::Any& rFormula, formula::FormulaGrammar:: return; } CellFormulaValueSetter formulaValueSetter( rFormula, getScDocument(), eGram ); - setValue( rFormula, formulaValueSetter ); + setValue( rFormula, formulaValueSetter, bFireEvent ); +#if 0 // TODO: ditto // Fires the range change event. lcl_NotifyRangeChanges( getScDocShell()->GetModel(), getCellRangesBase() ); +#endif } uno::Any @@ -1771,7 +1780,7 @@ void ScVbaRange::setFormula(const uno::Any &rFormula ) throw (uno::RuntimeException) { // #FIXME converting "=$a$1" e.g. CONV_XL_A1 -> CONV_OOO // results in "=$a$1:a1", temporalily disable conversion - setFormulaValue( rFormula,formula::FormulaGrammar::GRAM_NATIVE_XL_A1 );; + setFormulaValue( rFormula,formula::FormulaGrammar::GRAM_NATIVE_XL_A1, true ); } uno::Any @@ -1877,7 +1886,7 @@ ScVbaRange::HasFormula() throw (uno::RuntimeException) ScCellRangesBase* pFormulaRanges = dynamic_cast< ScCellRangesBase * > ( xRanges.get() ); // check if there are no formula cell, return false if ( pFormulaRanges->GetRangeList().empty() ) - return uno::makeAny(false); + return uno::makeAny(sal_False); // chech if there are holes (where some cells are not formulas) // or returned range is not equal to this range @@ -2125,7 +2134,7 @@ ScVbaRange::Address( const uno::Any& RowAbsolute, const uno::Any& ColumnAbsolut // force external to be false // only first address should have the // document and sheet specifications - aExternalCopy = uno::makeAny(false); + aExternalCopy = uno::makeAny(sal_False); } sAddress += xRange->Address( RowAbsolute, ColumnAbsolute, ReferenceStyle, aExternalCopy, RelativeTo ); } @@ -2273,7 +2282,7 @@ ScVbaRange::CellsHelper( const uno::Reference< ov::XHelperInterface >& xParent, { ScAddress::Details dDetails( formula::FormulaGrammar::CONV_XL_A1, 0, 0 ); ScRange tmpRange; - sal_uInt16 flags = tmpRange.ParseCols( sCol, excel::GetDocumentFromRange( mxRange ), dDetails ); + sal_uInt16 flags = tmpRange.ParseCols( sCol, excel::GetDocumentFromRange( xRange ), dDetails ); if ( ( flags & 0x200 ) != 0x200 ) throw uno::RuntimeException(); nColumn = tmpRange.aStart.Col() + 1; @@ -2290,7 +2299,7 @@ ScVbaRange::CellsHelper( const uno::Reference< ov::XHelperInterface >& xParent, } if ( !( aColumnAny >>= nColumn ) ) { - uno::Reference< script::XTypeConverter > xConverter = getTypeConverter( mxContext ); + uno::Reference< script::XTypeConverter > xConverter = getTypeConverter( xContext ); uno::Any aConverted; try { @@ -2301,7 +2310,7 @@ ScVbaRange::CellsHelper( const uno::Reference< ov::XHelperInterface >& xParent, } } } - RangeHelper thisRange( mxRange ); + RangeHelper thisRange( xRange ); table::CellRangeAddress thisRangeAddress = thisRange.getCellRangeAddressable()->getRangeAddress(); uno::Reference< table::XCellRange > xSheetRange = thisRange.getCellRangeFromSheet(); if( !bIsIndex && !bIsColumnIndex ) // .Cells @@ -2324,7 +2333,7 @@ ScVbaRange::CellsHelper( const uno::Reference< ov::XHelperInterface >& xParent, --nColumn; nRow = nRow + thisRangeAddress.StartRow; nColumn = nColumn + thisRangeAddress.StartColumn; - return new ScVbaRange( mxParent, mxContext, xSheetRange->getCellRangeByPosition( nColumn, nRow, nColumn, nRow ) ); + return new ScVbaRange( xParent, xContext, xSheetRange->getCellRangeByPosition( nColumn, nRow, nColumn, nRow ) ); } void @@ -3850,6 +3859,18 @@ double getDefaultCharWidth( const uno::Reference< frame::XModel >& xModel ) thro return lcl_TwipsToPoints( (sal_uInt16)nCharWidth ); } +double getDefaultCharWidth( ScDocShell* pDocShell ) +{ + ScDocument* pDoc = pDocShell->GetDocument(); + OutputDevice* pRefDevice = pDoc->GetRefDevice(); + ScPatternAttr* pAttr = pDoc->GetDefPattern(); + ::Font aDefFont; + pAttr->GetFont( aDefFont, SC_AUTOCOL_BLACK, pRefDevice ); + pRefDevice->SetFont( aDefFont ); + long nCharWidth = pRefDevice->GetTextWidth( String( '0' ) ); // 1/100th mm + return lcl_hmmToPoints( nCharWidth ); +} + uno::Any SAL_CALL ScVbaRange::getColumnWidth() throw (uno::RuntimeException) { @@ -3865,7 +3886,7 @@ ScVbaRange::getColumnWidth() throw (uno::RuntimeException) if ( pShell ) { uno::Reference< frame::XModel > xModel = pShell->GetModel(); - double defaultCharWidth = getDefaultCharWidth( pShell ); + double defaultCharWidth = getDefaultCharWidth( xModel ); RangeHelper thisRange( mxRange ); table::CellRangeAddress thisAddress = thisRange.getCellRangeAddressable()->getRangeAddress(); sal_Int32 nStartCol = thisAddress.StartColumn; @@ -3904,26 +3925,24 @@ ScVbaRange::setColumnWidth( const uno::Any& _columnwidth ) throw (uno::RuntimeEx double nColWidth = 0; _columnwidth >>= nColWidth; nColWidth = lcl_Round2DecPlaces( nColWidth ); - ScDocShell* pDocShell = getScDocShell(); - if ( pDocShell ) - { - uno::Reference< frame::XModel > xModel = pDocShell->GetModel(); - if ( xModel.is() ) - { - - nColWidth = ( nColWidth * getDefaultCharWidth( xModel ) ); - RangeHelper thisRange( mxRange ); - table::CellRangeAddress thisAddress = thisRange.getCellRangeAddressable()->getRangeAddress(); - sal_uInt16 nTwips = lcl_pointsToTwips( nColWidth ); + ScDocShell* pDocShell = getScDocShell(); + if ( pDocShell ) + { + if ( nColWidth != 0.0 ) + nColWidth = ( nColWidth + fExtraWidth ) * getDefaultCharWidth( pDocShell ); + RangeHelper thisRange( mxRange ); + table::CellRangeAddress thisAddress = thisRange.getCellRangeAddressable()->getRangeAddress(); + sal_uInt16 nTwips = lcl_pointsToTwips( nColWidth ); - ScDocFunc aFunc(*pDocShell); - SCCOLROW nColArr[2]; - nColArr[0] = thisAddress.StartColumn; - nColArr[1] = thisAddress.EndColumn; - aFunc.SetWidthOrHeight( true, 1, nColArr, thisAddress.Sheet, SC_SIZE_ORIGINAL, - nTwips, true, true ); + ScDocFunc aFunc(*pDocShell); + SCCOLROW nColArr[2]; + nColArr[0] = thisAddress.StartColumn; + nColArr[1] = thisAddress.EndColumn; + // #163561# use mode SC_SIZE_DIRECT: hide for width 0, show for other values + aFunc.SetWidthOrHeight( true, 1, nColArr, thisAddress.Sheet, + SC_SIZE_DIRECT, nTwips, true, true ); - } + } } uno::Any SAL_CALL @@ -4740,7 +4759,7 @@ ScVbaRange::AutoFilter( const uno::Any& Field, const uno::Any& Criteria1, const } void SAL_CALL -ScVbaRange::Insert( const uno::Any& Shift, const uno::Any& CopyOrigin ) throw (uno::RuntimeException) +ScVbaRange::Insert( const uno::Any& Shift, const uno::Any& /*CopyOrigin*/ ) throw (uno::RuntimeException) { // It appears ( from the web ) that the undocumented CopyOrigin // param should contain member of enum XlInsertFormatOrigin diff --git a/sc/source/ui/vba/vbasheetobject.cxx b/sc/source/ui/vba/vbasheetobject.cxx index f7582d9a25a2..9c8b5e2e501b 100644 --- a/sc/source/ui/vba/vbasheetobject.cxx +++ b/sc/source/ui/vba/vbasheetobject.cxx @@ -241,6 +241,7 @@ void SAL_CALL ScVbaSheetObjectBase::setName( const OUString& rName ) throw (uno: sal_Int32 SAL_CALL ScVbaSheetObjectBase::getPlacement() throw (uno::RuntimeException) { sal_Int32 nRet = excel::XlPlacement::xlMoveAndSize; +#if 0 // TODO: not working at the moment. SvxShape* pShape = SvxShape::getImplementation( mxShape ); if(pShape) { @@ -252,11 +253,13 @@ sal_Int32 SAL_CALL ScVbaSheetObjectBase::getPlacement() throw (uno::RuntimeExcep nRet = excel::XlPlacement::xlFreeFloating; } } +#endif return nRet; } -void SAL_CALL ScVbaSheetObjectBase::setPlacement( sal_Int32 nPlacement ) throw (uno::RuntimeException) +void SAL_CALL ScVbaSheetObjectBase::setPlacement( sal_Int32 /*nPlacement*/ ) throw (uno::RuntimeException) { +#if 0 // TODO: not working at the moment. SvxShape* pShape = SvxShape::getImplementation( mxShape ); if(pShape) { @@ -272,6 +275,7 @@ void SAL_CALL ScVbaSheetObjectBase::setPlacement( sal_Int32 nPlacement ) throw ( ScDrawLayer::SetAnchor(pObj, eType); } } +#endif } sal_Bool SAL_CALL ScVbaSheetObjectBase::getPrintObject() throw (uno::RuntimeException) |