Lines 187-194
Link Here
|
187 |
#ifndef SC_XICHART_HXX |
187 |
#ifndef SC_XICHART_HXX |
188 |
#include "xichart.hxx" |
188 |
#include "xichart.hxx" |
189 |
#endif |
189 |
#endif |
190 |
|
190 |
#include "xicontent.hxx" |
191 |
#include "excform.hxx" |
191 |
#include "excform.hxx" |
|
|
192 |
#include "userdat.hxx" |
192 |
|
193 |
|
193 |
using ::rtl::OUString; |
194 |
using ::rtl::OUString; |
194 |
using ::rtl::OUStringBuffer; |
195 |
using ::rtl::OUStringBuffer; |
Lines 403-408
XclImpDrawObjRef XclImpDrawObjBase::Read
Link Here
|
403 |
|
404 |
|
404 |
void XclImpDrawObjBase::ReadSubRecord( XclImpStream& rStrm, sal_uInt16 nSubRecId, sal_uInt16 nSubRecSize ) |
405 |
void XclImpDrawObjBase::ReadSubRecord( XclImpStream& rStrm, sal_uInt16 nSubRecId, sal_uInt16 nSubRecSize ) |
405 |
{ |
406 |
{ |
|
|
407 |
switch( nSubRecId ) |
408 |
{ |
409 |
case EXC_ID_OBJ_FTMACRO: |
410 |
ReadMacro( rStrm ); |
411 |
break; |
412 |
} |
413 |
|
406 |
} |
414 |
} |
407 |
|
415 |
|
408 |
Rectangle XclImpDrawObjBase::ReadClientAnchor( SvStream& rEscherStrm, const DffRecordHeader& rHeader ) |
416 |
Rectangle XclImpDrawObjBase::ReadClientAnchor( SvStream& rEscherStrm, const DffRecordHeader& rHeader ) |
Lines 484-489
void XclImpDrawObjBase::DoProcessSdrObj(
Link Here
|
484 |
if( !IsPrintable() ) |
492 |
if( !IsPrintable() ) |
485 |
GetTracer().TraceObjectNotPrintable(); |
493 |
GetTracer().TraceObjectNotPrintable(); |
486 |
} |
494 |
} |
|
|
495 |
void XclImpDrawObjBase::ReadMacro( XclImpStream& rStrm ) |
496 |
{ |
497 |
maMacroName.Erase(); |
498 |
if( rStrm.GetRecLeft() > 6 ) |
499 |
{ |
500 |
// macro is stored in a tNameXR token containing a link to a defined name |
501 |
sal_uInt16 nFmlaSize; |
502 |
rStrm >> nFmlaSize; |
503 |
rStrm.Ignore( 4 ); |
504 |
DBG_ASSERT( nFmlaSize == 7, "XclImpDrawObjBase::ReadMacro - unexpected formula size" ); |
505 |
if( nFmlaSize == 7 ) |
506 |
{ |
507 |
sal_uInt8 nTokenId; |
508 |
sal_uInt16 nExtSheet, nExtName; |
509 |
rStrm >> nTokenId >> nExtSheet >> nExtName; |
510 |
DBG_ASSERT( nTokenId == XclTokenArrayHelper::GetTokenId( EXC_TOKID_NAMEX, EXC_TOKCLASS_REF ), |
511 |
"XclImpDrawObjBase::ReadMacro - tNameXR token expected" ); |
512 |
if( nTokenId == XclTokenArrayHelper::GetTokenId( EXC_TOKID_NAMEX, EXC_TOKCLASS_REF ) ) |
513 |
{ |
514 |
maMacroName = GetLinkManager().GetMacroName( nExtSheet, nExtName ); |
515 |
// #i38718# missing module name - try to find the macro in the imported modules |
516 |
if( maMacroName.Len() && (maMacroName.Search( '.' ) == STRING_NOTFOUND) ) |
517 |
if( SfxObjectShell* pDocShell = GetDocShell() ) |
518 |
if( StarBASIC* pBasic = pDocShell->GetBasic() ) |
519 |
if( SbMethod* pMethod = dynamic_cast< SbMethod* >( pBasic->Find( maMacroName, SbxCLASS_METHOD ) ) ) |
520 |
if( SbModule* pModule = pMethod->GetModule() ) |
521 |
maMacroName.Insert( '.', 0 ).Insert( pModule->GetName(), 0 ); |
522 |
} |
523 |
} |
524 |
} |
525 |
} |
526 |
|
487 |
|
527 |
|
488 |
// ---------------------------------------------------------------------------- |
528 |
// ---------------------------------------------------------------------------- |
489 |
|
529 |
|
Lines 644-652
void XclImpTbxControlObj::ReadSubRecord(
Link Here
|
644 |
case EXC_ID_OBJ_FTGBODATA: |
684 |
case EXC_ID_OBJ_FTGBODATA: |
645 |
ReadGboData( rStrm ); |
685 |
ReadGboData( rStrm ); |
646 |
break; |
686 |
break; |
647 |
case EXC_ID_OBJ_FTMACRO: |
|
|
648 |
ReadMacro( rStrm ); |
649 |
break; |
650 |
default: |
687 |
default: |
651 |
XclImpDrawObjBase::ReadSubRecord( rStrm, nSubRecId, nSubRecSize ); |
688 |
XclImpDrawObjBase::ReadSubRecord( rStrm, nSubRecId, nSubRecSize ); |
652 |
} |
689 |
} |
Lines 823-829
void XclImpTbxControlObj::WriteToPropert
Link Here
|
823 |
|
860 |
|
824 |
bool XclImpTbxControlObj::FillMacroDescriptor( ScriptEventDescriptor& rEvent ) const |
861 |
bool XclImpTbxControlObj::FillMacroDescriptor( ScriptEventDescriptor& rEvent ) const |
825 |
{ |
862 |
{ |
826 |
if( maMacroName.Len() ) |
863 |
if( GetMacroName().Len() ) |
827 |
{ |
864 |
{ |
828 |
// type of action is dependent on control type |
865 |
// type of action is dependent on control type |
829 |
rEvent.ListenerType = XclTbxControlHelper::GetListenerType( GetObjType() ); |
866 |
rEvent.ListenerType = XclTbxControlHelper::GetListenerType( GetObjType() ); |
Lines 832-838
bool XclImpTbxControlObj::FillMacroDescr
Link Here
|
832 |
{ |
869 |
{ |
833 |
// set the macro name |
870 |
// set the macro name |
834 |
rEvent.ScriptType = XclTbxControlHelper::GetScriptType(); |
871 |
rEvent.ScriptType = XclTbxControlHelper::GetScriptType(); |
835 |
rEvent.ScriptCode = XclTbxControlHelper::GetScMacroName( maMacroName ); |
872 |
rEvent.ScriptCode = XclTbxControlHelper::GetScMacroName( GetMacroName() ); |
836 |
return true; |
873 |
return true; |
837 |
} |
874 |
} |
838 |
} |
875 |
} |
Lines 914-951
void XclImpTbxControlObj::ReadGboData( X
Link Here
|
914 |
mbFlatBorder = ::get_flag( nStyle, EXC_OBJ_GBO_FLAT ); |
951 |
mbFlatBorder = ::get_flag( nStyle, EXC_OBJ_GBO_FLAT ); |
915 |
} |
952 |
} |
916 |
|
953 |
|
917 |
void XclImpTbxControlObj::ReadMacro( XclImpStream& rStrm ) |
|
|
918 |
{ |
919 |
maMacroName.Erase(); |
920 |
if( rStrm.GetRecLeft() > 6 ) |
921 |
{ |
922 |
// macro is stored in a tNameXR token containing a link to a defined name |
923 |
sal_uInt16 nFmlaSize; |
924 |
rStrm >> nFmlaSize; |
925 |
rStrm.Ignore( 4 ); |
926 |
DBG_ASSERT( nFmlaSize == 7, "XclImpTbxControlObj::ReadMacro - unexpected formula size" ); |
927 |
if( nFmlaSize == 7 ) |
928 |
{ |
929 |
sal_uInt8 nTokenId; |
930 |
sal_uInt16 nExtSheet, nExtName; |
931 |
rStrm >> nTokenId >> nExtSheet >> nExtName; |
932 |
DBG_ASSERT( nTokenId == XclTokenArrayHelper::GetTokenId( EXC_TOKID_NAMEX, EXC_TOKCLASS_REF ), |
933 |
"XclImpTbxControlObj::ReadMacro - tNameXR token expected" ); |
934 |
if( nTokenId == XclTokenArrayHelper::GetTokenId( EXC_TOKID_NAMEX, EXC_TOKCLASS_REF ) ) |
935 |
{ |
936 |
maMacroName = GetLinkManager().GetMacroName( nExtSheet, nExtName ); |
937 |
// #i38718# missing module name - try to find the macro in the imported modules |
938 |
if( maMacroName.Len() && (maMacroName.Search( '.' ) == STRING_NOTFOUND) ) |
939 |
if( SfxObjectShell* pDocShell = GetDocShell() ) |
940 |
if( StarBASIC* pBasic = pDocShell->GetBasic() ) |
941 |
if( SbMethod* pMethod = dynamic_cast< SbMethod* >( pBasic->Find( maMacroName, SbxCLASS_METHOD ) ) ) |
942 |
if( SbModule* pModule = pMethod->GetModule() ) |
943 |
maMacroName.Insert( '.', 0 ).Insert( pModule->GetName(), 0 ); |
944 |
} |
945 |
} |
946 |
} |
947 |
} |
948 |
|
949 |
// ---------------------------------------------------------------------------- |
954 |
// ---------------------------------------------------------------------------- |
950 |
|
955 |
|
951 |
XclImpOleObj::XclImpOleObj( const XclImpRoot& rRoot ) : |
956 |
XclImpOleObj::XclImpOleObj( const XclImpRoot& rRoot ) : |
Lines 1381-1387
SdrObject* XclImpDffManager::ProcessObj(
Link Here
|
1381 |
|
1386 |
|
1382 |
/* Connect textbox data (string, alignment, text orientation) to object. |
1387 |
/* Connect textbox data (string, alignment, text orientation) to object. |
1383 |
#98132# don't ask for a text-ID, Escher export doesn't set one. */ |
1388 |
#98132# don't ask for a text-ID, Escher export doesn't set one. */ |
1384 |
if( XclImpDrawingObj* pDrawingObj = dynamic_cast< XclImpDrawingObj* >( xDrawObj.get() ) ) |
1389 |
XclImpDrawingObj* pDrawingObj = dynamic_cast< XclImpDrawingObj* >( xDrawObj.get() ); |
|
|
1390 |
if( pDrawingObj ) |
1385 |
pDrawingObj->SetTxoData( mrObjManager.FindTxoData( rObjData.rSpHd ) ); |
1391 |
pDrawingObj->SetTxoData( mrObjManager.FindTxoData( rObjData.rSpHd ) ); |
1386 |
|
1392 |
|
1387 |
// #118052# import internal name of a control |
1393 |
// #118052# import internal name of a control |
Lines 1391-1396
SdrObject* XclImpDffManager::ProcessObj(
Link Here
|
1391 |
if( aName.Len() ) |
1397 |
if( aName.Len() ) |
1392 |
pOleObj->SetControlName( aName ); |
1398 |
pOleObj->SetControlName( aName ); |
1393 |
} |
1399 |
} |
|
|
1400 |
else |
1401 |
{ |
1402 |
// its a drawing object or form control |
1403 |
if ( pDrawingObj && xSdrObj.get() ) |
1404 |
{ |
1405 |
if ( pDrawingObj->GetMacroName().Len() ) // has associated macro |
1406 |
{ |
1407 |
ScMacroInfo* pInfo = ScDrawLayer::GetMacroInfo( xSdrObj.get(), TRUE ); |
1408 |
DBG_ASSERT( pInfo, "shape macro info could not be created!" ); |
1409 |
|
1410 |
if ( pInfo ) |
1411 |
pInfo->SetMacro( XclTbxControlHelper::GetScMacroName(pDrawingObj->GetMacroName() ) ); |
1412 |
} |
1413 |
} |
1414 |
} |
1394 |
|
1415 |
|
1395 |
// try to create a custom SdrObject that overwrites the passed object |
1416 |
// try to create a custom SdrObject that overwrites the passed object |
1396 |
SdrObjectPtr xNewSdrObj( CreateCustomSdrObject( *xDrawObj, rAnchorRect ) ); |
1417 |
SdrObjectPtr xNewSdrObj( CreateCustomSdrObject( *xDrawObj, rAnchorRect ) ); |