summaryrefslogtreecommitdiff
path: root/sc/source/ui/drawfunc/drtxtob.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'sc/source/ui/drawfunc/drtxtob.cxx')
-rw-r--r--sc/source/ui/drawfunc/drtxtob.cxx239
1 files changed, 227 insertions, 12 deletions
diff --git a/sc/source/ui/drawfunc/drtxtob.cxx b/sc/source/ui/drawfunc/drtxtob.cxx
index fa22a356a711..f8c2981546f7 100644
--- a/sc/source/ui/drawfunc/drtxtob.cxx
+++ b/sc/source/ui/drawfunc/drtxtob.cxx
@@ -42,6 +42,9 @@
#include <editeng/flditem.hxx>
#include <editeng/fontitem.hxx>
#include <editeng/frmdiritem.hxx>
+#include <editeng/lrspitem.hxx>
+#include <editeng/lspcitem.hxx>
+#include <editeng/ulspitem.hxx>
#include <svx/hlnkitem.hxx>
#include <editeng/lspcitem.hxx>
#include <svx/svdoutl.hxx>
@@ -68,6 +71,7 @@
#include <svx/svxdlg.hxx>
#include <svx/dialogs.hrc>
+#include <sfx2/sidebar/EnumContext.hxx>
#include "sc.hrc"
#include "globstr.hrc"
@@ -132,6 +136,7 @@ ScDrawTextObjectBar::ScDrawTextObjectBar(ScViewData* pData) :
SetHelpId( HID_SCSHELL_DRTXTOB );
SetName(String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM("DrawText")));
+ SfxShell::SetContextName(sfx2::sidebar::EnumContext::GetContextName(sfx2::sidebar::EnumContext::Context_DrawText));
}
__EXPORT ScDrawTextObjectBar::~ScDrawTextObjectBar()
@@ -643,7 +648,7 @@ void lcl_RemoveFields( OutlinerView& rOutView )
{
SvUShorts aPortions;
rEditEng.GetPortions( (sal_uInt16)nPar, aPortions );
- //! GetPortions should use xub_StrLen instead of USHORT
+ //! GetPortions should use xub_StrLen instead of sal_uInt16
for ( sal_uInt16 nPos = aPortions.Count(); nPos; )
{
@@ -731,10 +736,11 @@ void __EXPORT ScDrawTextObjectBar::ExecuteAttr( SfxRequest &rReq )
}
break;
+ case SID_CHAR_DLG_EFFECT:
case SID_CHAR_DLG: // Dialog-Button
case SID_ATTR_CHAR_FONT: // Controller nicht angezeigt
case SID_ATTR_CHAR_FONTHEIGHT:
- bDone = ExecuteCharDlg( aEditAttr, aNewAttr );
+ bDone = ExecuteCharDlg( aEditAttr, aNewAttr , nSlot);
break;
case SID_PARA_DLG:
@@ -851,6 +857,11 @@ void __EXPORT ScDrawTextObjectBar::ExecuteAttr( SfxRequest &rReq )
aNewAttr.Put( *pDlg->GetOutputItemSet() );
delete pDlg;
+
+ SfxBindings& rBindings = pViewData->GetBindings();
+ rBindings.Invalidate( SID_TABLE_VERT_NONE );
+ rBindings.Invalidate( SID_TABLE_VERT_CENTER );
+ rBindings.Invalidate( SID_TABLE_VERT_BOTTOM );
}
break;
}
@@ -882,6 +893,122 @@ void __EXPORT ScDrawTextObjectBar::ExecuteAttr( SfxRequest &rReq )
pView->SetAttributes( aSetItem.GetItemSet() );
}
+ else if( nSlot == SID_ATTR_PARA_LRSPACE )
+ {
+ sal_uInt16 nId = SID_ATTR_PARA_LRSPACE;
+ const SvxLRSpaceItem& rItem = (const SvxLRSpaceItem&)
+ pArgs->Get( nId );
+ SfxItemSet aEditAttr( GetPool(), EE_PARA_LRSPACE, EE_PARA_LRSPACE );
+ nId = EE_PARA_LRSPACE;
+ SvxLRSpaceItem aLRSpaceItem( rItem.GetLeft(),
+ rItem.GetRight(), rItem.GetTxtLeft(),
+ rItem.GetTxtFirstLineOfst(), nId );
+ aEditAttr.Put( aLRSpaceItem );
+// rReq.Done( aEditAttr );
+// pArgs = rReq.GetArgs();
+// pView->SetAttributes( *pArgs );
+ pView->SetAttributes( aEditAttr );
+// Invalidate(SID_ATTR_PARA_LRSPACE);
+ }
+ else if( nSlot == SID_ATTR_PARA_LINESPACE )
+ {
+ sal_uInt16 nId = SID_ATTR_PARA_LINESPACE;
+ SvxLineSpacingItem aLineSpaceItem = (const SvxLineSpacingItem&)pArgs->Get(
+ GetPool().GetWhich(nSlot));
+ SfxItemSet aEditAttr( GetPool(), EE_PARA_SBL, EE_PARA_SBL );
+ aEditAttr.Put( aLineSpaceItem );
+// rReq.Done( aEditAttr );
+// pArgs = rReq.GetArgs();
+// pView->SetAttributes( *pArgs );
+ pView->SetAttributes( aEditAttr );
+// Invalidate(SID_ATTR_PARA_LINESPACE);
+ }
+ else if( nSlot == SID_ATTR_PARA_ULSPACE )
+ {
+ sal_uInt16 nId = SID_ATTR_PARA_ULSPACE;
+ SvxULSpaceItem aULSpaceItem = (const SvxULSpaceItem&)pArgs->Get(
+ GetPool().GetWhich(nSlot));
+ SfxItemSet aEditAttr( GetPool(), EE_PARA_ULSPACE, EE_PARA_ULSPACE );
+ aULSpaceItem.SetWhich(EE_PARA_ULSPACE);
+ aEditAttr.Put( aULSpaceItem );
+// rReq.Done( aEditAttr );
+// pArgs = rReq.GetArgs();
+// pView->SetAttributes( *pArgs );
+ pView->SetAttributes( aEditAttr );
+// Invalidate(SID_ATTR_PARA_ULSPACE);
+ }
+ else if(nSlot == SID_SET_SUPER_SCRIPT )
+ {
+ SfxItemSet aEditAttr(pView->GetModel()->GetItemPool());
+ pView->GetAttributes(aEditAttr);
+ SfxItemSet aNewAttr( *aEditAttr.GetPool(), aEditAttr.GetRanges() );
+
+ SvxEscapementItem aItem(EE_CHAR_ESCAPEMENT);
+ SvxEscapement eEsc = (SvxEscapement) ( (const SvxEscapementItem&)
+ aEditAttr.Get( EE_CHAR_ESCAPEMENT ) ).GetEnumValue();
+
+ if( eEsc == SVX_ESCAPEMENT_SUPERSCRIPT )
+ aItem.SetEscapement( SVX_ESCAPEMENT_OFF );
+ else
+ aItem.SetEscapement( SVX_ESCAPEMENT_SUPERSCRIPT );
+ aNewAttr.Put( aItem );
+ pView->SetAttributes( aNewAttr );
+ }
+ else if( nSlot == SID_SET_SUB_SCRIPT )
+ {
+ SfxItemSet aEditAttr(pView->GetModel()->GetItemPool());
+ pView->GetAttributes(aEditAttr);
+ SfxItemSet aNewAttr( *aEditAttr.GetPool(), aEditAttr.GetRanges() );
+
+ SvxEscapementItem aItem(EE_CHAR_ESCAPEMENT);
+ SvxEscapement eEsc = (SvxEscapement) ( (const SvxEscapementItem&)
+ aEditAttr.Get( EE_CHAR_ESCAPEMENT ) ).GetEnumValue();
+
+ if( eEsc == SVX_ESCAPEMENT_SUBSCRIPT )
+ aItem.SetEscapement( SVX_ESCAPEMENT_OFF );
+ else
+ aItem.SetEscapement( SVX_ESCAPEMENT_SUBSCRIPT );
+ aNewAttr.Put( aItem );
+ pView->SetAttributes( aNewAttr );
+ }
+
+ else if (bArgsInReq &&
+ ( nSlot == SID_TABLE_VERT_NONE || nSlot == SID_TABLE_VERT_CENTER ||
+ nSlot == SID_TABLE_VERT_BOTTOM ) )
+ {
+ SdrTextVertAdjust eTVA = SDRTEXTVERTADJUST_TOP;
+ if (nSlot == SID_TABLE_VERT_CENTER)
+ eTVA = SDRTEXTVERTADJUST_CENTER;
+ else if (nSlot == SID_TABLE_VERT_BOTTOM)
+ eTVA = SDRTEXTVERTADJUST_BOTTOM;
+
+ SfxItemSet aEditAttr(pView->GetModel()->GetItemPool());
+ SfxItemSet aNewAttr( *aEditAttr.GetPool(), aEditAttr.GetRanges() );
+ aNewAttr.Put(SdrTextVertAdjustItem(eTVA));
+ pView->SetAttributes(aNewAttr);
+ }
+ else if (bArgsInReq &&
+ (nSlot == SID_ATTR_PARA_ADJUST_LEFT || nSlot == SID_ATTR_PARA_ADJUST_CENTER || nSlot == SID_ATTR_PARA_ADJUST_RIGHT || nSlot == SID_ATTR_PARA_ADJUST_BLOCK ))
+ {
+ SfxItemSet aEditAttr(pView->GetModel()->GetItemPool());
+ SfxItemSet aNewAttr( *aEditAttr.GetPool(), aEditAttr.GetRanges() );
+ switch ( nSlot )
+ {
+ case SID_ATTR_PARA_ADJUST_LEFT:
+ aNewAttr.Put( SvxAdjustItem( SVX_ADJUST_LEFT, EE_PARA_JUST ) );
+ break;
+ case SID_ATTR_PARA_ADJUST_CENTER:
+ aNewAttr.Put( SvxAdjustItem( SVX_ADJUST_CENTER, EE_PARA_JUST ) );
+ break;
+ case SID_ATTR_PARA_ADJUST_RIGHT:
+ aNewAttr.Put( SvxAdjustItem( SVX_ADJUST_RIGHT, EE_PARA_JUST ) );
+ break;
+ case SID_ATTR_PARA_ADJUST_BLOCK:
+ aNewAttr.Put( SvxAdjustItem( SVX_ADJUST_BLOCK, EE_PARA_JUST ) );
+ break;
+ }
+ pView->SetAttributes(aNewAttr);
+ }
else
{
// use args directly
@@ -934,24 +1061,35 @@ void __EXPORT ScDrawTextObjectBar::GetAttrState( SfxItemSet& rDestSet )
ScViewUtil::PutItemScript( rDestSet, aAttrSet, EE_CHAR_WEIGHT, nScript );
if ( rDestSet.GetItemState( EE_CHAR_ITALIC ) != SFX_ITEM_UNKNOWN )
ScViewUtil::PutItemScript( rDestSet, aAttrSet, EE_CHAR_ITALIC, nScript );
-
// Ausrichtung
SvxAdjust eAdj = ((const SvxAdjustItem&)aAttrSet.Get(EE_PARA_JUST)).GetAdjust();
switch( eAdj )
{
- case SVX_ADJUST_LEFT:
+ case SVX_ADJUST_LEFT:
+ {
rDestSet.Put( SfxBoolItem( SID_ALIGNLEFT, sal_True ) );
- break;
- case SVX_ADJUST_CENTER:
+ rDestSet.Put( SfxBoolItem( SID_ATTR_PARA_ADJUST_LEFT, sal_True ) );
+ }
+ break;
+ case SVX_ADJUST_CENTER:
+ {
rDestSet.Put( SfxBoolItem( SID_ALIGNCENTERHOR, sal_True ) );
- break;
- case SVX_ADJUST_RIGHT:
+ rDestSet.Put( SfxBoolItem( SID_ATTR_PARA_ADJUST_CENTER, sal_True ) );
+ }
+ break;
+ case SVX_ADJUST_RIGHT:
+ {
rDestSet.Put( SfxBoolItem( SID_ALIGNRIGHT, sal_True ) );
- break;
- case SVX_ADJUST_BLOCK:
+ rDestSet.Put( SfxBoolItem( SID_ATTR_PARA_ADJUST_RIGHT, sal_True ) );
+ }
+ break;
+ case SVX_ADJUST_BLOCK:
+ {
rDestSet.Put( SfxBoolItem( SID_ALIGNBLOCK, sal_True ) );
- break;
+ rDestSet.Put( SfxBoolItem( SID_ATTR_PARA_ADJUST_BLOCK, sal_True ) );
+ }
+ break;
default:
{
// added to avoid warnings
@@ -963,6 +1101,32 @@ void __EXPORT ScDrawTextObjectBar::GetAttrState( SfxItemSet& rDestSet )
rDestSet.Put( SfxBoolItem( SID_ALIGN_ANY_RIGHT, eAdj == SVX_ADJUST_RIGHT ) );
rDestSet.Put( SfxBoolItem( SID_ALIGN_ANY_JUSTIFIED, eAdj == SVX_ADJUST_BLOCK ) );
+ SvxLRSpaceItem aLR = ((const SvxLRSpaceItem&)aAttrSet.Get( EE_PARA_LRSPACE ));
+ aLR.SetWhich(SID_ATTR_PARA_LRSPACE);
+ rDestSet.Put(aLR);
+ Invalidate( SID_ATTR_PARA_LRSPACE );
+ SfxItemState eState = aAttrSet.GetItemState( EE_PARA_LRSPACE );
+ if ( eState == SFX_ITEM_DONTCARE )
+ rDestSet.InvalidateItem(SID_ATTR_PARA_LRSPACE);
+ //xuxu for Line Space
+ SvxLineSpacingItem aLineSP = ((const SvxLineSpacingItem&)aAttrSet.
+ Get( EE_PARA_SBL ));
+ aLineSP.SetWhich(SID_ATTR_PARA_LINESPACE);
+ rDestSet.Put(aLineSP);
+ Invalidate(SID_ATTR_PARA_LINESPACE);
+ eState = aAttrSet.GetItemState( EE_PARA_SBL );
+ if ( eState == SFX_ITEM_DONTCARE )
+ rDestSet.InvalidateItem(SID_ATTR_PARA_LINESPACE);
+ //xuxu for UL Space
+ SvxULSpaceItem aULSP = ((const SvxULSpaceItem&)aAttrSet.
+ Get( EE_PARA_ULSPACE ));
+ aULSP.SetWhich(SID_ATTR_PARA_ULSPACE);
+ rDestSet.Put(aULSP);
+ Invalidate(SID_ATTR_PARA_ULSPACE);
+ eState = aAttrSet.GetItemState( EE_PARA_ULSPACE );
+ if ( eState == SFX_ITEM_DONTCARE )
+ rDestSet.InvalidateItem(SID_ATTR_PARA_ULSPACE);
+
// Zeilenabstand
sal_uInt16 nLineSpace = (sal_uInt16)
@@ -992,7 +1156,7 @@ void __EXPORT ScDrawTextObjectBar::GetAttrState( SfxItemSet& rDestSet )
// Unterstreichung
- SfxItemState eState = aAttrSet.GetItemState( EE_CHAR_UNDERLINE, sal_True );
+ eState = aAttrSet.GetItemState( EE_CHAR_UNDERLINE, sal_True );
if ( eState == SFX_ITEM_DONTCARE )
{
rDestSet.InvalidateItem( SID_ULINE_VAL_NONE );
@@ -1089,3 +1253,54 @@ void ScDrawTextObjectBar::ExecuteTrans( SfxRequest& rReq )
}
}
+void ScDrawTextObjectBar::GetStatePropPanelAttr(SfxItemSet &rSet)
+{
+ SfxWhichIter aIter( rSet );
+ sal_uInt16 nWhich = aIter.FirstWhich();
+
+ SdrView* pView = pViewData->GetScDrawView();
+
+ SfxItemSet aEditAttr(pView->GetModel()->GetItemPool());
+ pView->GetAttributes(aEditAttr);
+ //SfxItemSet aAttrs( *aEditAttr.GetPool(), aEditAttr.GetRanges() );
+
+ while ( nWhich )
+ {
+ sal_uInt16 nSlotId = SfxItemPool::IsWhich(nWhich)
+ ? GetPool().GetSlotId(nWhich)
+ : nWhich;
+ switch ( nSlotId )
+ {
+ case SID_TABLE_VERT_NONE:
+ case SID_TABLE_VERT_CENTER:
+ case SID_TABLE_VERT_BOTTOM:
+ sal_Bool bContour = sal_False;
+ SfxItemState eConState = aEditAttr.GetItemState( SDRATTR_TEXT_CONTOURFRAME );
+ if( eConState != SFX_ITEM_DONTCARE )
+ {
+ bContour = ( ( const SdrTextContourFrameItem& )aEditAttr.Get( SDRATTR_TEXT_CONTOURFRAME ) ).GetValue();
+ }
+ if (bContour) break;
+
+ SfxItemState eVState = aEditAttr.GetItemState( SDRATTR_TEXT_VERTADJUST );
+ //SfxItemState eHState = aAttrs.GetItemState( SDRATTR_TEXT_HORZADJUST );
+
+ //if(SFX_ITEM_DONTCARE != eVState && SFX_ITEM_DONTCARE != eHState)
+ if(SFX_ITEM_DONTCARE != eVState)
+ {
+ SdrTextVertAdjust eTVA = (SdrTextVertAdjust)((const SdrTextVertAdjustItem&)aEditAttr.Get(SDRATTR_TEXT_VERTADJUST)).GetValue();
+ sal_Bool bSet = nSlotId == SID_TABLE_VERT_NONE && eTVA == SDRTEXTVERTADJUST_TOP||
+ nSlotId == SID_TABLE_VERT_CENTER && eTVA == SDRTEXTVERTADJUST_CENTER ||
+ nSlotId == SID_TABLE_VERT_BOTTOM && eTVA == SDRTEXTVERTADJUST_BOTTOM;
+ rSet.Put(SfxBoolItem(nSlotId, bSet));
+ }
+ else
+ {
+ rSet.Put(SfxBoolItem(nSlotId, sal_False));
+ }
+ break;
+ }
+ nWhich = aIter.NextWhich();
+ }
+}
+