ooo-build r14757 - in trunk: . patches/dev300 patches/vba



Author: noelpwer
Date: Fri Dec  5 16:28:06 2008
New Revision: 14757
URL: http://svn.gnome.org/viewvc/ooo-build?rev=14757&view=rev

Log:
2008-12-05  Noel Power  <noel power novell com>

        * patches/dev300/apply: enable radio button grouping stuff
        * patches/dev300/forms-radio-button-group-names.diff:
        * patches/dev300/dialog-groupname-persist.diff:
        * patches/dev300/xl-import-formradiobutton.diff:
        * patches/vba/vba-userform-geometry-tweak.diff:
        * patches/vba/enhanced-form-userform-controls.diff:



Modified:
   trunk/ChangeLog
   trunk/patches/dev300/apply
   trunk/patches/dev300/dialog-groupname-persist.diff
   trunk/patches/dev300/forms-radio-button-group-names.diff
   trunk/patches/dev300/xl-import-formradiobutton.diff
   trunk/patches/vba/enhanced-form-userform-controls.diff
   trunk/patches/vba/vba-userform-geometry-tweak.diff

Modified: trunk/patches/dev300/apply
==============================================================================
--- trunk/patches/dev300/apply	(original)
+++ trunk/patches/dev300/apply	Fri Dec  5 16:28:06 2008
@@ -536,8 +536,7 @@
 # FIXME 2008-11-26: partly applies to dev300-m35 with several "fuzz 2", partly not at all
 #xmloff-field-patch.diff, flr, n#248354
 
-[ RadioButtons > dev300-m99 ]
-# FIXME 2008-11-26: these don't apply in dev300-m35
+[ RadioButtons ]
 # Add a GroupName property to RadioButtons so that RadioButtons don't need to
 # share the same name to be part of the same group.
 forms-radio-button-group-names.diff, n#310052, i#30823, jonp

Modified: trunk/patches/dev300/dialog-groupname-persist.diff
==============================================================================
--- trunk/patches/dev300/dialog-groupname-persist.diff	(original)
+++ trunk/patches/dev300/dialog-groupname-persist.diff	Fri Dec  5 16:28:06 2008
@@ -1,8 +1,8 @@
 diff --git svx/inc/svx/msocximex.hxx svx/inc/svx/msocximex.hxx
-index f3bda14..c94eaeb 100644
+index 2d0827f..733304d 100644
 --- svx/inc/svx/msocximex.hxx
 +++ svx/inc/svx/msocximex.hxx
-@@ -290,6 +290,7 @@ public:
+@@ -289,6 +289,7 @@ public:
          sal_uInt16 mnTabPos;
  	UniString sName;
  	UniString msToolTip;
@@ -74,10 +74,10 @@
                  com::sun::star::container::XNameContainer > mxParent;
  	std::vector<OCX_Control*> mpControls;
 diff --git svx/source/msfilter/msocximex.cxx svx/source/msfilter/msocximex.cxx
-index ef7ca77..530a5ce 100644
+index 2aba883..617caf8 100644
 --- svx/source/msfilter/msocximex.cxx
 +++ svx/source/msfilter/msocximex.cxx
-@@ -908,176 +908,6 @@ class ContainerRecordReaderFac
+@@ -909,176 +909,6 @@ class ContainerRecordReaderFac
  
  // ============================================================================
  
@@ -254,11 +254,11 @@
  class OCX_UserFormLabel : public OCX_Label
  {
  public:
-@@ -1854,9 +1684,27 @@ sal_Bool OCX_OptionButton::Import(com::sun::star::uno::Reference<
-     aTmp <<= ::com::sun::star::style::VerticalAlignment_MIDDLE;
-     rPropSet->setPropertyValue( WW8_ASCII2STR("VerticalAlign"), aTmp );
- 
--    if ( pGroupName )
+@@ -1913,7 +1743,37 @@ sal_Bool OCX_OptionButton::Import(com::sun::star::uno::Reference<
+ 		INT16 nTmp = pValue[0]-0x30;
+ 		aTmp <<= nTmp;
+ 		rPropSet->setPropertyValue( WW8_ASCII2STR("DefaultState"), aTmp);
+ 	}
 +    // If this is a dialog control then we need to  set a groupname *always*
 +    rtl::OUString sGroupName = lclCreateOUString( pGroupName, nGroupNameLen );
 +    if ( GetInDialog() ) // Userform/Dialog
@@ -278,13 +278,21 @@
 +        sGroupName = sParentName.concat( C2U( ":" ) ).concat( sGroupName );
 +    }
 +    if ( sGroupName.getLength() > 0 )
-     {
--        aTmp <<= lclCreateOUString( pGroupName, nGroupNameLen );
-+        aTmp <<= sGroupName;
-         rPropSet->setPropertyValue( WW8_ASCII2STR("GroupName"), aTmp);
-     }
- 	uno::Reference< frame::XModel > xModel ( pDocSh ? pDocSh->GetModel() : NULL );
-@@ -3566,7 +3414,7 @@ OCX_ContainerControl::OCX_ContainerControl( SotStorageRef& parent,
++    {
++	OSL_TRACE("RadioButton %s has groupname %s", 
++		rtl::OUStringToOString( sName, RTL_TEXTENCODING_UTF8 ).getStr(),  rtl::OUStringToOString( sGroupName, RTL_TEXTENCODING_UTF8 ).getStr() );
++        try
++        {
++            rPropSet->setPropertyValue( WW8_ASCII2STR("GroupName"), aTmp);
++        }
++        catch( uno::Exception& )
++        {
++        }
++    }
+ 
+ 	if (pCaption)
+ 	{
+@@ -3656,7 +3516,7 @@ OCX_ContainerControl::OCX_ContainerControl( SotStorageRef& parent,
              const ::rtl::OUString& sN,
              const uno::Reference< container::XNameContainer >  &rParent,
              OCX_Control* pParent ) :
@@ -293,7 +301,7 @@
  {
  
      mContainerStorage = parent->OpenSotStorage(storageName,
-@@ -3800,6 +3648,7 @@ void OCX_ContainerControl::ProcessControl(OCX_Control* pControl,SvStorageStream*
+@@ -3887,6 +3747,7 @@ void OCX_ContainerControl::ProcessControl(OCX_Control* pControl,SvStorageStream*
              // applied to all containees
              pControl->mnStep = mnStep;
          }
@@ -301,7 +309,7 @@
  
          // #117490# DR: container records provide size of substream, use it here...
  
-@@ -3810,17 +3659,7 @@ void OCX_ContainerControl::ProcessControl(OCX_Control* pControl,SvStorageStream*
+@@ -3897,17 +3758,7 @@ void OCX_ContainerControl::ProcessControl(OCX_Control* pControl,SvStorageStream*
          // set stream to position behind substream of this control
          oStream->Seek( nStrmPos + rec.nSubStreamLen );
  
@@ -320,7 +328,7 @@
      }
  }
  
-@@ -3843,7 +3682,6 @@ sal_Bool OCX_ContainerControl::Read(SvStorageStream *pS)
+@@ -3930,7 +3781,6 @@ sal_Bool OCX_ContainerControl::Read(SvStorageStream *pS)
      // this ensures that the default tab index created by Star/Open office
      // reflects the "flattened" ms tab order.
      ::std::sort( mpControls.begin(), mpControls.end(), SortOrderByTabPos() );
@@ -329,10 +337,10 @@
  }
  
 diff --git xmlscript/source/xmldlg_imexp/xmldlg_expmodels.cxx xmlscript/source/xmldlg_imexp/xmldlg_expmodels.cxx
-index ac4444e..7488f94 100644
+index f864d51..4f87c16 100644
 --- xmlscript/source/xmldlg_imexp/xmldlg_expmodels.cxx
 +++ xmlscript/source/xmldlg_imexp/xmldlg_expmodels.cxx
-@@ -452,6 +452,8 @@ void ElementDescriptor::readRadioButtonModel( StyleBag * all_styles, Reference<
+@@ -458,6 +458,8 @@ void ElementDescriptor::readRadioButtonModel( StyleBag * all_styles, Reference<
                             OUString( RTL_CONSTASCII_USTRINGPARAM(XMLNS_DIALOGS_PREFIX ":image-position") ) );
      readBoolAttr( OUString( RTL_CONSTASCII_USTRINGPARAM("MultiLine") ),
                    OUString( RTL_CONSTASCII_USTRINGPARAM(XMLNS_DIALOGS_PREFIX ":multiline") ) );
@@ -342,10 +350,10 @@
      sal_Int16 nState = 0;
      if (readProp( OUString( RTL_CONSTASCII_USTRINGPARAM("State") ) ) >>= nState)
 diff --git xmlscript/source/xmldlg_imexp/xmldlg_impmodels.cxx xmlscript/source/xmldlg_imexp/xmldlg_impmodels.cxx
-index e47c033..310b3a6 100644
+index 9db354d..92c1a09 100644
 --- xmlscript/source/xmldlg_imexp/xmldlg_impmodels.cxx
 +++ xmlscript/source/xmldlg_imexp/xmldlg_impmodels.cxx
-@@ -1521,6 +1521,9 @@ void TitledBoxElement::endElement()
+@@ -1634,6 +1634,9 @@ void TitledBoxElement::endElement()
          ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("MultiLine") ),
                                     OUString( RTL_CONSTASCII_USTRINGPARAM("multiline") ),
                                     xAttributes );
@@ -355,7 +363,7 @@
  		
  		sal_Int16 nVal = 0;
  		sal_Bool bChecked = sal_False;
-@@ -1662,6 +1665,9 @@ void RadioGroupElement::endElement()
+@@ -1775,6 +1778,9 @@ void RadioGroupElement::endElement()
          ctx.importBooleanProperty( OUString( RTL_CONSTASCII_USTRINGPARAM("MultiLine") ),
                                     OUString( RTL_CONSTASCII_USTRINGPARAM("multiline") ),
                                     xAttributes );

Modified: trunk/patches/dev300/forms-radio-button-group-names.diff
==============================================================================
--- trunk/patches/dev300/forms-radio-button-group-names.diff	(original)
+++ trunk/patches/dev300/forms-radio-button-group-names.diff	Fri Dec  5 16:28:06 2008
@@ -280,7 +280,7 @@
 @@ -122,6 +123,7 @@ ORadioButtonModel::ORadioButtonModel(con
  	m_nClassId = FormComponentType::RADIOBUTTON;
  	m_aLabelServiceName = FRM_SUN_COMPONENT_GROUPBOX;
- 	initValueProperty( PROPERTY_STATE, PROPERTY_ID_STATE );
+     initValueProperty( PROPERTY_STATE, PROPERTY_ID_STATE );
 +	startAggregatePropertyListening( PROPERTY_GROUP_NAME );
  }
  
@@ -691,10 +691,10 @@
 --- toolkit/inc/toolkit/helper/property.hxx
 +++ toolkit/inc/toolkit/helper/property.hxx
 @@ -192,6 +192,7 @@ namespace rtl {
- #define BASEPROPERTY_URL                            134  // ::rtl::OUString
  #define BASEPROPERTY_UNIT                           135  // ::awt::FieldUnit
  #define BASEPROPERTY_CUSTOMUNITTEXT                 136  // ::rtl::OUString
-+#define BASEPROPERTY_GROUPNAME                      137  // ::rtl::OUString
+ #define BASEPROPERTY_ENABLEVISIBLE                  137  // sal_Bool
++#define BASEPROPERTY_GROUPNAME                      138  // ::rtl::OUString
  
  // Keine gebundenen Properties, werden immer aus der Property BASEPROPERTY_FONTDESCRIPTOR entnommen.
  #define BASEPROPERTY_FONTDESCRIPTORPART_START			1000

Modified: trunk/patches/dev300/xl-import-formradiobutton.diff
==============================================================================
--- trunk/patches/dev300/xl-import-formradiobutton.diff	(original)
+++ trunk/patches/dev300/xl-import-formradiobutton.diff	Fri Dec  5 16:28:06 2008
@@ -1,262 +1,136 @@
 diff --git sc/source/filter/excel/xiescher.cxx sc/source/filter/excel/xiescher.cxx
-index 43de9ef..749b1fd 100644
+index b19de94..1df3f38 100644
 --- sc/source/filter/excel/xiescher.cxx
 +++ sc/source/filter/excel/xiescher.cxx
-@@ -650,23 +651,31 @@ ScfPropertySet XclImpControlObjHelper::GetControlPropSet() const
-     return ScfPropertySet( mxCtrlModel );
+@@ -1709,22 +1709,15 @@ SdrObject* XclImpControlHelper::CreateSdrObjectFromShape(
+     return xSdrObj.release();
  }
  
--void XclImpControlObjHelper::ConvertSheetLinks( const XclImpRoot& rRoot, SdrObject& /* rSdrObj */ ) const
-+// get service factory from Calc document
-+Reference< XMultiServiceFactory > lclGetFactoryFromRoot( const XclImpRoot& rRoot )
+-void XclImpControlHelper::ProcessControl( const XclImpDrawObjBase& rDrawObj ) const
++void XclImpControlHelper::ApplySheetLinkProps() const
  {
-     // get service factory from Calc document
-     Reference< XMultiServiceFactory > xFactory;
-     if( SfxObjectShell* pDocShell = rRoot.GetDocShell() )
-         xFactory.set( pDocShell->GetModel(), UNO_QUERY );
-+    return xFactory;
-+}
-+
-+void XclImpControlObjHelper::ConvertSheetLinks( const XclImpRoot& rRoot, const ScfRef< ScAddress >& rxCellLink ) const
-+{
-+    Reference< XMultiServiceFactory > xFactory = lclGetFactoryFromRoot( rRoot );
 +
-     if( !mxCtrlModel.is() || !xFactory.is() )
+     Reference< XControlModel > xCtrlModel = XclControlHelper::GetControlModel( mxShape );
+     if( !xCtrlModel.is() )
          return;
+-
+     ScfPropertySet aPropSet( xCtrlModel );
  
-     // *** cell link *** ------------------------------------------------------
- 
-     Reference< XBindableValue > xBindable( mxCtrlModel, UNO_QUERY );
--    if( mxCellLink.is() && xBindable.is() )
-+    if( rxCellLink.is() && xBindable.is() )
+-    // #118053# #i51348# set object name at control model
+-    aPropSet.SetStringProperty( CREATE_OUSTRING( "Name" ), rDrawObj.GetObjName() );
+-
+-    // control visible and printable?
+-//    aPropSet.SetBoolProperty( CREATE_OUSTRING( "EnableVisible" ), rDrawObj.IsVisible() );     // waiting for #i88878#
+-    aPropSet.SetBoolProperty( CREATE_OUSTRING( "Printable" ), rDrawObj.IsPrintable() );
+-
+-    // sheet links
++   // sheet links
+     if( SfxObjectShell* pDocShell = mrRoot.GetDocShell() )
      {
-         // create argument sequence for createInstanceWithArguments()
-         CellAddress aApiAddress;
--        ScUnoConversion::FillApiAddress( aApiAddress, *mxCellLink );
-+        ScUnoConversion::FillApiAddress( aApiAddress, *rxCellLink );
- 
-         NamedValue aValue;
-         aValue.Name = CREATE_OUSTRING( SC_UNONAME_BOUNDCELL );
-@@ -703,14 +712,24 @@ void XclImpControlObjHelper::ConvertSheetLinks( const XclImpRoot& rRoot, SdrObje
-             xBindable->setValueBinding( xBinding );
+         Reference< XMultiServiceFactory > xFactory( pDocShell->GetModel(), UNO_QUERY );
+@@ -1787,7 +1780,26 @@ void XclImpControlHelper::ProcessControl( const XclImpDrawObjBase& rDrawObj ) co
+             }
+         }
      }
- 
-+
 +}
 +
-+void XclImpControlObjHelper::ConvertSheetLinks( const XclImpRoot& rRoot, const ScfRef< ScRange >& rxSrcRange ) const
++void XclImpControlHelper::ProcessControl( const XclImpDrawObjBase& rDrawObj ) const
 +{
-+    Reference< XMultiServiceFactory > xFactory = lclGetFactoryFromRoot( rRoot );
-+
-+    if( !mxCtrlModel.is() || !xFactory.is() )
++    Reference< XControlModel > xCtrlModel = XclControlHelper::GetControlModel( mxShape );
++    if( !xCtrlModel.is() )
 +        return;
 +
-     // *** source range *** ---------------------------------------------------
- 
-     Reference< XListEntrySink > xEntrySink( mxCtrlModel, UNO_QUERY );
--    if( mxSrcRange.is() && xEntrySink.is() )
-+    if( rxSrcRange.is() && xEntrySink.is() )
-     {
-         // create argument sequence for createInstanceWithArguments()
-         CellRangeAddress aApiRange;
--        ScUnoConversion::FillApiRange( aApiRange, *mxSrcRange );
-+        ScUnoConversion::FillApiRange( aApiRange, *rxSrcRange );
- 
-         NamedValue aValue;
-         aValue.Name = CREATE_OUSTRING( SC_UNONAME_CELLRANGE );
-@@ -735,13 +754,26 @@ void XclImpControlObjHelper::ConvertSheetLinks( const XclImpRoot& rRoot, SdrObje
-         if( xEntrySource.is() )
-             xEntrySink->setListEntrySource( xEntrySource );
-     }
++    ApplySheetLinkProps();
 +
-+}
-+
-+void XclImpControlObjHelper::ConvertSheetLinks( const XclImpRoot& rRoot, SdrObject& /* rSdrObj */ ) const
-+{
-+    // *** cell link *** ------------------------------------------------------
++    ScfPropertySet aPropSet( xCtrlModel );
 +
-+    ConvertSheetLinks( rRoot, mxCellLink );
++    // #118053# #i51348# set object name at control model
++    aPropSet.SetStringProperty( CREATE_OUSTRING( "Name" ), rDrawObj.GetObjName() );
 +
-+    // *** source range *** ---------------------------------------------------
-+
-+    ConvertSheetLinks( rRoot, mxSrcRange );
- }
- 
- // ----------------------------------------------------------------------------
- 
- XclImpTbxControlObj::XclImpTbxControlObj( const XclImpRoot& rRoot ) :
-     XclImpDrawingObj( rRoot, true ),
-     XclImpControlObjHelper( EXC_CTRL_BINDPOSITION ),
-+    mbGroupLeader( false ),
-     mnState( EXC_OBJ_CBLS_STATE_UNCHECK ),
-     mnSelEntry( 0 ),
-     mnSelType( EXC_OBJ_LBS_SEL_SIMPLE ),
-@@ -777,6 +810,9 @@ void XclImpTbxControlObj::ReadSubRecord( XclImpStream& rStrm, sal_uInt16 nSubRec
-         case EXC_ID_OBJ_FTGBODATA:
-             ReadGboData( rStrm );
-         break;
-+        case EXC_ID_OBJ_FTRBODATA:
-+            ReadRboData( rStrm );
-+        break;
-         default:
-             XclImpDrawObjBase::ReadSubRecord( rStrm, nSubRecId, nSubRecSize );
-     }
-@@ -815,7 +851,6 @@ void XclImpTbxControlObj::DoProcessSdrObj( SdrObject& rSdrObj ) const
- 
-     namespace AwtVisualEffect = ::com::sun::star::awt::VisualEffect;
-     namespace AwtScrollOrient = ::com::sun::star::awt::ScrollBarOrientation;
--    using ::com::sun::star::style::VerticalAlignment_MIDDLE;
++    // control visible and printable?
++//    aPropSet.SetBoolProperty( CREATE_OUSTRING( "EnableVisible" ), rDrawObj.IsVisible() );     // waiting for #i88878#
++    aPropSet.SetBoolProperty( CREATE_OUSTRING( "Printable" ), rDrawObj.IsPrintable() );
  
-     // control name, printable, sheet links -----------------------------------
- 
-@@ -856,24 +891,29 @@ void XclImpTbxControlObj::DoProcessSdrObj( SdrObject& rSdrObj ) const
-         case EXC_OBJ_CMO_CHECKBOX:
-         case EXC_OBJ_CMO_OPTIONBUTTON:
-         {
--            bool bCheckBox = GetObjType() == EXC_OBJ_CMO_CHECKBOX;
--
--            sal_Int16 nApiState = 0;
--            switch( mnState )
-+            if( GetObjType() == EXC_OBJ_CMO_CHECKBOX )
-+                SetCBRBCommonProps();
-+            else
-             {
--                case EXC_OBJ_CBLS_STATE_UNCHECK:    nApiState = 0;                  break;
--                case EXC_OBJ_CBLS_STATE_CHECK:      nApiState = 1;                  break;
--                case EXC_OBJ_CBLS_STATE_TRI:        nApiState = bCheckBox ? 2 : 1;  break;
-+                XclImpTbxControlObj* pTbxObj = dynamic_cast< XclImpTbxControlObj* >( GetObjectManager().FindDrawObj( mNextRBInGroupId ).get() );
-+                if ( ( pTbxObj && pTbxObj->mbGroupLeader ) )
-+                {
-+                    // Group has terminated
-+                    // traverse each RadioButton in group and 
-+                    //     a) apply the groupname 
-+                    //     b) propagate the linked cell from the lead radiobutton
-+                    //     c) apply the correct Ref value
-+                    XclImpTbxControlObj* pLeader = pTbxObj;
-+                    XclObjId rLeaderId = pLeader->GetObjId();
-+                    sal_Int32 nRefVal = 1;
-+                    do 
-+                    {
-+                        pTbxObj->ApplyGroupingBits( *pLeader, nRefVal++ );
-+                        pTbxObj = dynamic_cast< XclImpTbxControlObj* >( GetObjectManager().FindDrawObj( pTbxObj->mNextRBInGroupId ).get() );
-+                    } while ( pTbxObj && !pTbxObj->mbGroupLeader );
-+                } 
-+               
-             }
--            if( bCheckBox )
--                aPropSet.SetBoolProperty( CREATE_OUSTRING( "TriState" ), nApiState == 2 );
--            aPropSet.SetProperty( CREATE_OUSTRING( "DefaultState" ), nApiState );
--
--            sal_Int16 nApiBorder = mbFlatButton ? AwtVisualEffect::FLAT : AwtVisualEffect::LOOK3D;
--            aPropSet.SetProperty( CREATE_OUSTRING( "VisualEffect" ), nApiBorder );
--
--            // #i40279# always centered vertically
--            aPropSet.SetProperty( CREATE_OUSTRING( "VerticalAlign" ), VerticalAlignment_MIDDLE );
-         }
-         break;
- 
-@@ -1023,6 +1063,45 @@ void XclImpTbxControlObj::ReadLbsData( XclImpStream& rStrm )
-     }
++ 
+     // virtual call for type specific processing
+     DoProcessControl( aPropSet );
  }
- 
-+void XclImpTbxControlObj::ApplyGroupingBits( XclImpTbxControlObj& rLeadRB, sal_Int32 nRefVal )
-+{
-+    ScfPropertySet aProps = GetControlPropSet();
-+    // shape Id is formed from object id + sheet id
-+    rtl::OUString sGroupName = rtl::OUString::valueOf( static_cast< sal_Int32 >( rLeadRB.GetShapeId() ) );
-+    aProps.SetStringProperty( CREATE_OUSTRING( "GroupName" ), sGroupName );
-+    aProps.SetStringProperty( CREATE_OUSTRING( "RefValue" ), rtl::OUString::valueOf( nRefVal ) );
-+    // propagate cell link info
-+    if ( rLeadRB.HasCellLink() && !HasCellLink() )
+@@ -2118,6 +2130,45 @@ void XclImpOptionButtonObj::DoProcessControl( ScfPropertySet& rPropSet ) const
+ {
+     XclImpCheckBoxObj::DoProcessControl( rPropSet );
+     // TODO: grouping
++    XclImpOptionButtonObj* pTbxObj = dynamic_cast< XclImpOptionButtonObj* >( GetObjectManager().FindDrawObj( XclObjId( GetScTab(), mnNextInGroup ) ).get() );
++    if ( ( pTbxObj && pTbxObj->mnFirstInGroup ) )
 +    {
-+        ScfRef< ScAddress > xAddress( new ScAddress( *rLeadRB.GetCellLink() ) );
-+        ConvertSheetLinks( GetRoot(), xAddress ); 
++        // Group has terminated
++        // traverse each RadioButton in group and 
++        //     a) apply the groupname 
++        //     b) propagate the linked cell from the lead radiobutton
++        //     c) apply the correct Ref value
++        XclImpOptionButtonObj* pLeader = pTbxObj;
++ ;
++        sal_Int32 nRefVal = 1;
++        OSL_TRACE( "0x%x start group ", pLeader->GetObjId().mnObjId );
++        do 
++        {
++           
++            Reference< XControlModel > xCtrlModel = XclControlHelper::GetControlModel( pTbxObj->mxShape );
++            if ( xCtrlModel.is() )
++            {
++                ScfPropertySet aProps( xCtrlModel );
++                rtl::OUString sGroupName = rtl::OUString::valueOf( static_cast< sal_Int32 >( pLeader->GetDffShapeId() ) );
++
++                aProps.SetStringProperty( CREATE_OUSTRING( "GroupName" ), sGroupName );
++                aProps.SetStringProperty( CREATE_OUSTRING( "RefValue" ), rtl::OUString::valueOf( nRefVal++ ) );
++                if ( pLeader->HasCellLink() && !pTbxObj->HasCellLink() )
++                {
++                    // propagate cell link info
++                    pTbxObj->mxCellLink.reset( new ScAddress( *pLeader->mxCellLink.get() ) );                
++                    pTbxObj->ApplySheetLinkProps();
++                }
++                pTbxObj = dynamic_cast< XclImpOptionButtonObj* >( GetObjectManager().FindDrawObj( XclObjId( GetScTab(), pTbxObj->mnNextInGroup ) ).get() );
++            }
++            else
++                pTbxObj = NULL;
++        } while ( pTbxObj && !( pTbxObj->mnFirstInGroup == 1 ) );
 +    }
-+    SetCBRBCommonProps();
-+}
-+
-+void XclImpTbxControlObj::SetCBRBCommonProps() const
-+{
-+    sal_Int16 nApiState = 0;
-+    bool bCheckBox = ( GetObjType() == EXC_OBJ_CMO_CHECKBOX );
-+    switch( mnState )
++    else
 +    {
-+        case EXC_OBJ_CBLS_STATE_UNCHECK:    nApiState = 0;                  break;
-+        case EXC_OBJ_CBLS_STATE_CHECK:      nApiState = 1;                  break;
-+        case EXC_OBJ_CBLS_STATE_TRI:        nApiState = bCheckBox ? 2 : 1;  break;
++        // not the leader? try and find it
 +    }
-+    ScfPropertySet aPropSet = GetControlPropSet();
-+    if ( bCheckBox )
-+        aPropSet.SetBoolProperty( CREATE_OUSTRING( "TriState" ), nApiState == 2 );
-+    namespace AwtVisualEffect = ::com::sun::star::awt::VisualEffect;
-+    using ::com::sun::star::style::VerticalAlignment_MIDDLE;
-+
-+    aPropSet.SetProperty( CREATE_OUSTRING( "DefaultState" ), nApiState );
-+    sal_Int16 nApiBorder = mbFlatButton ? AwtVisualEffect::FLAT : AwtVisualEffect::LOOK3D;
-+    aPropSet.SetProperty( CREATE_OUSTRING( "VisualEffect" ), nApiBorder );
-+    // #i40279# always centered vertically
-+    aPropSet.SetProperty( CREATE_OUSTRING( "VerticalAlign" ), VerticalAlignment_MIDDLE );
-+}
-+
- void XclImpTbxControlObj::ReadSbs( XclImpStream& rStrm )
- {
-     sal_uInt16 nOrient, nStyle;
-@@ -1043,6 +1122,17 @@ void XclImpTbxControlObj::ReadGboData( XclImpStream& rStrm )
-     mbFlatBorder = ::get_flag( nStyle, EXC_OBJ_GBO_FLAT );
  }
  
-+void XclImpTbxControlObj::ReadRboData( XclImpStream& rStrm )
-+{
-+    sal_Int16 mnNextRBInGroup;
-+    rStrm >> mnNextRBInGroup;
-+    sal_uInt8 nGroupLeader;
-+    rStrm >> nGroupLeader;
-+    sal_uInt8 unknown;
-+    rStrm >> unknown;
-+    mbGroupLeader = ( nGroupLeader & 0x1 );
-+    mNextRBInGroupId = XclObjId( GetScTab(), mnNextRBInGroup );
-+}
- // ----------------------------------------------------------------------------
- 
- XclImpOleObj::XclImpOleObj( const XclImpRoot& rRoot ) :
+ OUString XclImpOptionButtonObj::DoGetServiceName() const
 diff --git sc/source/filter/inc/xiescher.hxx sc/source/filter/inc/xiescher.hxx
-index b66314b..ea8a91b 100644
+index 2296996..3e59515 100644
 --- sc/source/filter/inc/xiescher.hxx
 +++ sc/source/filter/inc/xiescher.hxx
-@@ -242,6 +242,9 @@ protected:
-     ScfPropertySet      GetControlPropSet() const;
-     /** Tries to set a spreadsheet cell link and source range link at the passed form control. */
-     void                ConvertSheetLinks( const XclImpRoot& rRoot, SdrObject& rSdrObj ) const;
-+    void                ConvertSheetLinks( const XclImpRoot& rRoot, const ScfRef< ScAddress >& rxCellLink ) const;
-+    void                ConvertSheetLinks( const XclImpRoot& rRoot, const ScfRef< ScRange >& rxSrcRange ) const;
-+    ScAddress*          GetCellLink(){ return mxCellLink.get(); }
- 
+@@ -498,6 +498,10 @@ protected:
+     /** Derived classes will set additional properties for the current form control. */
+     virtual void        DoProcessControl( ScfPropertySet& rPropSet ) const;
+ 
++    void ApplySheetLinkProps() const;
++    mutable ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape >
++                        mxShape;        /// The UNO wrapper of the control shape.
++    ScfRef< ScAddress > mxCellLink;     /// Linked cell in the Calc document.
  private:
-     XControlModelRef    mxCtrlModel;    /// Model of the created form control object.
-@@ -283,8 +286,14 @@ private:
-     void                ReadSbs( XclImpStream& rStrm );
-     /** Reads the contents of the ftGboData sub structure in an OBJ record. */
-     void                ReadGboData( XclImpStream& rStrm );
-+    /** Reads the contents of the ftRboData sub structure in an OBJ record. */
-+    void                ReadRboData( XclImpStream& rStrm );
+     /** Reads a list of cell ranges from a formula at the current stream position. */
+     void                ReadRangeList( ScRangeList& rScRanges, XclImpStream& rStrm );
+@@ -506,9 +510,6 @@ private:
  
  private:
-+    void SetCBRBCommonProps() const;
-+    void ApplyGroupingBits( XclImpTbxControlObj& rTbxObj, sal_Int32 nRefVal );
-+    bool                mbGroupLeader;  /// Identifies start of group
-+    XclObjId            mNextRBInGroupId;    /// 
-     ScfInt16Vec         maMultiSel;     /// Indexes of all selected entries in a multi selection.
-     sal_uInt16          mnState;        /// Checked/unchecked state.
-     sal_Int16           mnSelEntry;     /// Index of selected entry (1-based).
-diff --git sc/source/filter/inc/xlescher.hxx sc/source/filter/inc/xlescher.hxx
-index 4750b4a..b80eaae 100644
---- sc/source/filter/inc/xlescher.hxx
-+++ sc/source/filter/inc/xlescher.hxx
-@@ -64,6 +64,7 @@ const sal_uInt16 EXC_ID_OBJ_FTCBLS          = 0x000A;   /// Check box/radio butt
- const sal_uInt16 EXC_ID_OBJ_FTSBS           = 0x000C;   /// Scroll bar data.
- const sal_uInt16 EXC_ID_OBJ_FTSBSFMLA       = 0x000E;   /// Scroll bar/list box/combo box cell link.
- const sal_uInt16 EXC_ID_OBJ_FTGBODATA       = 0x000F;   /// Group box data.
-+const sal_uInt16 EXC_ID_OBJ_FTRBODATA       = 0x0011;   /// Radiobutton data.
- const sal_uInt16 EXC_ID_OBJ_FTLBSDATA       = 0x0013;   /// List box/combo box data.
- const sal_uInt16 EXC_ID_OBJ_FTCBLSFMLA      = 0x0014;   /// Check box/radio button cell link.
- const sal_uInt16 EXC_ID_OBJ_FTCMO           = 0x0015;   /// Common object settings.
+     const XclImpRoot&   mrRoot;         /// Not derived from XclImpRoot to allow multiple inheritance.
+-    mutable ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape >
+-                        mxShape;        /// The UNO wrapper of the control shape.
+-    ScfRef< ScAddress > mxCellLink;     /// Linked cell in the Calc document.
+     ScfRef< ScRange >   mxSrcRange;     /// Source data range in the Calc document.
+     XclCtrlBindMode     meBindMode;     /// Value binding mode.
+ };
+@@ -610,6 +611,7 @@ protected:
+     virtual XclTbxEventType DoGetEventType() const;
+ 
+ protected:
++    void ApplyGrouping( XclImpOptionButtonObj& rLeader, sal_Int32 nRefVal );
+     sal_uInt16          mnNextInGroup;      /// Next option button in a group.
+     sal_uInt16          mnFirstInGroup;     /// 1 = Button is the first in a group.
+ };

Modified: trunk/patches/vba/enhanced-form-userform-controls.diff
==============================================================================
--- trunk/patches/vba/enhanced-form-userform-controls.diff	(original)
+++ trunk/patches/vba/enhanced-form-userform-controls.diff	Fri Dec  5 16:28:06 2008
@@ -1125,10 +1125,11 @@
 index 1301975..e8f0005 100644
 --- toolkit/inc/toolkit/controls/dialogcontrol.hxx
 +++ toolkit/inc/toolkit/controls/dialogcontrol.hxx
-@@ -52,6 +52,7 @@
+@@ -52,7 +52,8 @@
  #include <cppuhelper/basemutex.hxx>
  #include <cppuhelper/basemutex.hxx>
  #include <list>
+ #include <map>
 +#include <com/sun/star/graphic/XGraphicObject.hpp>
  
  //	----------------------------------------------------

Modified: trunk/patches/vba/vba-userform-geometry-tweak.diff
==============================================================================
--- trunk/patches/vba/vba-userform-geometry-tweak.diff	(original)
+++ trunk/patches/vba/vba-userform-geometry-tweak.diff	Fri Dec  5 16:28:06 2008
@@ -288,10 +288,10 @@
 --- toolkit/inc/toolkit/helper/property.hxx
 +++ toolkit/inc/toolkit/helper/property.hxx
 @@ -190,6 +190,7 @@ namespace rtl {
- #define BASEPROPERTY_UNIT                           135  // ::awt::FieldUnit
  #define BASEPROPERTY_CUSTOMUNITTEXT                 136  // ::rtl::OUString
  #define BASEPROPERTY_ENABLEVISIBLE                  137  // sal_Bool
-+#define BASEPROPERTY_VBAFORM                      138  // sal_Bool
+ #define BASEPROPERTY_GROUPNAME                      138  // ::rtl::OUString
++#define BASEPROPERTY_VBAFORM                      139  // sal_Bool
  
  // Keine gebundenen Properties, werden immer aus der Property BASEPROPERTY_FONTDESCRIPTOR entnommen.
  #define BASEPROPERTY_FONTDESCRIPTORPART_START			1000



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]