in main/svx/source/sidebar/text/TextPropertyPanel.cxx [872:1191]
void TextPropertyPanel::NotifyItemUpdate (
const sal_uInt16 nSID,
const SfxItemState eState,
const SfxPoolItem* pState,
const bool bIsEnabled)
{
switch(nSID)
{
case SID_ATTR_CHAR_FONT:
{
bool bIsControlEnabled (bIsEnabled);
if ( eState >= SFX_ITEM_DEFAULT && pState->ISA(SvxFontItem) )
{
const SvxFontItem* pFontItem = (const SvxFontItem*)pState;
mpFontNameBox->SetText( pFontItem->GetFamilyName() );
}
else
{
mpFontNameBox->SetText( String() );
if (SFX_ITEM_DISABLED == eState)
bIsControlEnabled = false;
}
mpFontNameBox->Enable(bIsControlEnabled);
break;
}
case SID_ATTR_CHAR_FONTHEIGHT:
{
bool bIsControlEnabled (bIsEnabled);
if ( eState >= SFX_ITEM_DEFAULT && pState->ISA(SvxFontHeightItem) )
{
mpHeightItem = (SvxFontHeightItem*)pState;//const SvxFontHeightItem*
SfxMapUnit eUnit = maFontSizeControl.GetCoreMetric();
const sal_Int64 nValue (CalcToPoint(mpHeightItem->GetHeight(), eUnit, 10 ));
mpToolBoxIncDec->Enable();
mpToolBoxIncDec->SetItemState(TBI_INCREASE, STATE_NOCHECK);
mpToolBoxIncDec->SetItemState(TBI_DECREASE, STATE_NOCHECK);
// For Writer we have to update the states of the
// increase and decrease buttons here, because we have
// no access to the slots used by Writer.
switch(maContext.GetCombinedContext_DI())
{
case CombinedEnumContext(Application_DrawImpress, Context_DrawText):
case CombinedEnumContext(Application_DrawImpress, Context_Text):
case CombinedEnumContext(Application_DrawImpress, Context_Table):
case CombinedEnumContext(Application_DrawImpress, Context_OutlineText):
case CombinedEnumContext(Application_DrawImpress, Context_Draw):
case CombinedEnumContext(Application_DrawImpress, Context_TextObject):
case CombinedEnumContext(Application_DrawImpress, Context_Graphic):
break;
default:
{
mpToolBoxIncDec->EnableItem(TBI_INCREASE, bIsEnabled && nValue<960);
mpToolBoxIncDec->EnableItem(TBI_DECREASE, bIsEnabled && nValue>60);
break;
}
}
if( mbFocusOnFontSizeCtrl )
return;
maFontSizeBox.SetValue(nValue);
maFontSizeBox.LoseFocus();
UpdateItem(SID_SHRINK_FONT_SIZE);
UpdateItem(SID_GROW_FONT_SIZE);
}
else
{
mpHeightItem = NULL;
maFontSizeBox.SetText( String() );
//increase decrease disabled when multi-selection have different font size
// font size +/- enhancement in sd
switch(maContext.GetCombinedContext_DI())
{
case CombinedEnumContext(Application_DrawImpress, Context_DrawText):
case CombinedEnumContext(Application_DrawImpress, Context_Text):
case CombinedEnumContext(Application_DrawImpress, Context_Table):
case CombinedEnumContext(Application_DrawImpress, Context_OutlineText):
case CombinedEnumContext(Application_DrawImpress, Context_Draw):
case CombinedEnumContext(Application_DrawImpress, Context_TextObject):
case CombinedEnumContext(Application_DrawImpress, Context_Graphic):
break;
default:
mpToolBoxIncDec->Disable();
}
if ( eState <= SFX_ITEM_READONLY )
bIsControlEnabled = false;
}
maFontSizeBox.Enable(bIsControlEnabled);
break;
}
case SID_ATTR_CHAR_WEIGHT:
mbWeightAvailable = (eState >= SFX_ITEM_DONTCARE);
if( eState >= SFX_ITEM_DEFAULT && pState->ISA(SvxWeightItem))
{
const SvxWeightItem* pItem = (const SvxWeightItem*)pState;
meWeight = (FontWeight)pItem->GetValue();
}
else
{
meWeight = WEIGHT_NORMAL;
}
mpToolBoxFont->EnableItem(TBI_BOLD, mbWeightAvailable && bIsEnabled);
mpToolBoxFont->SetItemState(TBI_BOLD, meWeight==WEIGHT_BOLD ? STATE_CHECK : STATE_NOCHECK);
break;
case SID_ATTR_CHAR_POSTURE:
mbPostureAvailable = (eState >= SFX_ITEM_DONTCARE);
if( eState >= SFX_ITEM_DEFAULT && pState->ISA(SvxPostureItem))
{
const SvxPostureItem* pItem = (const SvxPostureItem*)pState;
meItalic = (FontItalic)pItem->GetValue();
}
else
{
meItalic = ITALIC_NONE;
}
mpToolBoxFont->EnableItem(TBI_ITALIC, mbPostureAvailable && bIsEnabled);
mpToolBoxFont->SetItemState(TBI_ITALIC, meItalic==ITALIC_NORMAL ? STATE_CHECK : STATE_NOCHECK);
break;
case SID_ATTR_CHAR_UNDERLINE:
if( eState >= SFX_ITEM_DEFAULT)
{
if(pState->ISA(SvxUnderlineItem))
{
const SvxUnderlineItem* pItem = (const SvxUnderlineItem*)pState;
meUnderline = (FontUnderline)pItem->GetValue();
meUnderlineColor = pItem->GetColor();
}
}
else
{
meUnderline = UNDERLINE_NONE;
}
mpToolBoxFont->EnableItem(TBI_UNDERLINE, bIsEnabled);
mpToolBoxFont->SetItemState(TBI_UNDERLINE, meUnderline==UNDERLINE_NONE ? STATE_NOCHECK : STATE_CHECK);
break;
case SID_ATTR_CHAR_SHADOWED:
if( eState >= SFX_ITEM_DEFAULT && pState->ISA(SvxShadowedItem))
{
const SvxShadowedItem* pItem = (const SvxShadowedItem*)pState;
mbShadow = pItem->GetValue();
}
else
{
mbShadow = false;
}
mpToolBoxFont->EnableItem(TBI_SHADOWED, bIsEnabled);
mpToolBoxFont->SetItemState(TBI_SHADOWED, mbShadow ? STATE_CHECK : STATE_NOCHECK);
break;
case SID_ATTR_CHAR_STRIKEOUT:
if( eState >= SFX_ITEM_DEFAULT && pState->ISA(SvxCrossedOutItem))
{
const SvxCrossedOutItem* pItem = (const SvxCrossedOutItem*)pState;
meStrike = (FontStrikeout)pItem->GetValue();
}
else
{
meStrike = STRIKEOUT_NONE;
}
mpToolBoxFont->EnableItem(TBI_STRIKEOUT, bIsEnabled);
mpToolBoxFont->SetItemState(TBI_STRIKEOUT,
meStrike!=STRIKEOUT_NONE && meStrike!=STRIKEOUT_DONTKNOW
? STATE_CHECK
: STATE_NOCHECK);
break;
case SID_ATTR_CHAR_ESCAPEMENT:
{
bool bIsItemEnabled (true);
if (eState == SFX_ITEM_AVAILABLE)
{
if (pState->ISA(SvxEscapementItem))
{
const SvxEscapementItem* pItem = (const SvxEscapementItem *)pState;
short nEsc = pItem->GetEsc();
if(nEsc == 0)
{
meEscape = SVX_ESCAPEMENT_OFF;
mpToolBoxScriptSw->SetItemState(TBI_SUPER_SW, STATE_NOCHECK);
mpToolBoxScriptSw->SetItemState(TBI_SUB_SW, STATE_NOCHECK);
}
else if(nEsc > 0)
{
meEscape = SVX_ESCAPEMENT_SUPERSCRIPT;
mpToolBoxScriptSw->SetItemState(TBI_SUPER_SW, STATE_CHECK);
mpToolBoxScriptSw->SetItemState(TBI_SUB_SW, STATE_NOCHECK);
}
else
{
meEscape = SVX_ESCAPEMENT_SUBSCRIPT;
mpToolBoxScriptSw->SetItemState(TBI_SUPER_SW, STATE_NOCHECK);
mpToolBoxScriptSw->SetItemState(TBI_SUB_SW, STATE_CHECK);
}
}
else
{
meEscape = SVX_ESCAPEMENT_OFF;
mpToolBoxScriptSw->SetItemState(TBI_SUPER_SW, STATE_NOCHECK);
mpToolBoxScriptSw->SetItemState(TBI_SUB_SW, STATE_NOCHECK);
}
}
else if (eState == SFX_ITEM_DISABLED)
{
bIsItemEnabled = false;
}
else
{
meEscape = SVX_ESCAPEMENT_OFF;
}
mpToolBoxScriptSw->EnableItem(TBI_SUPER_SW, bIsItemEnabled && bIsEnabled);
mpToolBoxScriptSw->EnableItem(TBI_SUB_SW, bIsItemEnabled && bIsEnabled);
break;
}
case SID_SET_SUB_SCRIPT:
if( eState >= SFX_ITEM_DEFAULT && pState->ISA(SfxBoolItem))
{
const SfxBoolItem* pItem = (const SfxBoolItem*)pState;
mbSub = pItem->GetValue();
}
else
{
mbSub = false;
}
mpToolBoxScript->EnableItem(TBI_SUB, bIsEnabled);
mpToolBoxScript->SetItemState(TBI_SUB, mbSub ? STATE_CHECK : STATE_NOCHECK);
break;
case SID_SET_SUPER_SCRIPT:
if( eState >= SFX_ITEM_DEFAULT && pState->ISA(SfxBoolItem))
{
const SfxBoolItem* pItem = (const SfxBoolItem*)pState;
mbSuper = pItem->GetValue();
}
else
{
mbSuper = false;
}
mpToolBoxScript->EnableItem(TBI_SUPER, bIsEnabled);
mpToolBoxScript->SetItemState(TBI_SUPER, mbSuper ? STATE_CHECK : STATE_NOCHECK);
break;
case SID_ATTR_CHAR_KERNING:
if ( SFX_ITEM_AVAILABLE == eState )
{
mbKernLBAvailable = true;
if(pState->ISA(SvxKerningItem))
{
const SvxKerningItem* pKerningItem = (const SvxKerningItem*)pState;
mlKerning = (long)pKerningItem->GetValue();
mbKernAvailable = true;
}
else
{
mlKerning = 0;
mbKernAvailable =false;
}
}
else if (SFX_ITEM_DISABLED == eState)
{
mbKernLBAvailable = false;
mbKernAvailable = false;
mlKerning = 0;
}
else
{
mbKernLBAvailable = true;
mbKernAvailable = false;
mlKerning = 0;
}
mpToolBoxSpacing->EnableItem(TBI_SPACING, bIsEnabled);
break;
// font size +/- enhancement in sd
case SID_SHRINK_FONT_SIZE:
case SID_GROW_FONT_SIZE:
switch(maContext.GetCombinedContext_DI())
{
case CombinedEnumContext(Application_DrawImpress, Context_DrawText):
case CombinedEnumContext(Application_DrawImpress, Context_Text):
case CombinedEnumContext(Application_DrawImpress, Context_Table):
case CombinedEnumContext(Application_DrawImpress, Context_OutlineText):
case CombinedEnumContext(Application_DrawImpress, Context_Draw):
case CombinedEnumContext(Application_DrawImpress, Context_TextObject):
case CombinedEnumContext(Application_DrawImpress, Context_Graphic):
{
if(eState == SFX_ITEM_DISABLED)
mpToolBoxIncDec->Disable();
else
mpToolBoxIncDec->Enable();
const sal_Int64 nSize (maFontSizeBox.GetValue());
switch(nSID)
{
case SID_GROW_FONT_SIZE:
mpToolBoxIncDec->EnableItem(TBI_INCREASE, bIsEnabled && nSize<960);
break;
case SID_SHRINK_FONT_SIZE:
mpToolBoxIncDec->EnableItem(TBI_DECREASE, bIsEnabled && nSize>60);
break;
default:
break;
}
}
}
break;
}
}