| /************************************************************** |
| * |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, |
| * software distributed under the License is distributed on an |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| * KIND, either express or implied. See the License for the |
| * specific language governing permissions and limitations |
| * under the License. |
| * |
| *************************************************************/ |
| |
| #include "precompiled_svx.hxx" |
| |
| #include "TextPropertyPanel.hrc" |
| #include "TextPropertyPanel.hxx" |
| #include "SvxSBFontNameBox.hxx" |
| |
| #include "svx/dialmgr.hxx" |
| |
| #include <editeng/brshitem.hxx> |
| #include <editeng/colritem.hxx> |
| #include <editeng/crsditem.hxx> |
| #include <editeng/escpitem.hxx> |
| #include <editeng/flstitem.hxx> |
| #include <editeng/fontitem.hxx> |
| #include <editeng/kernitem.hxx> |
| #include <editeng/postitem.hxx> |
| #include <editeng/shdditem.hxx> |
| #include <editeng/udlnitem.hxx> |
| #include <editeng/wghtitem.hxx> |
| #include <rtl/ref.hxx> |
| #include <sfx2/dispatch.hxx> |
| #include <sfx2/objsh.hxx> |
| #include <sfx2/viewsh.hxx> |
| #include <sfx2/sidebar/ResourceDefinitions.hrc> |
| #include <sfx2/sidebar/ControlFactory.hxx> |
| #include <sfx2/sidebar/ControllerFactory.hxx> |
| #include <sfx2/sidebar/Layouter.hxx> |
| #include <sfx2/sidebar/Theme.hxx> |
| #include <sfx2/sidebar/SidebarToolBox.hxx> |
| #include "sfx2/imagemgr.hxx" |
| #include <svtools/ctrltool.hxx> |
| #include <svtools/unitconv.hxx> |
| |
| #include <vcl/gradient.hxx> |
| #include <vcl/svapp.hxx> |
| #include <vcl/toolbox.hxx> |
| #include "TextCharacterSpacingControl.hxx" |
| #include "TextCharacterSpacingPopup.hxx" |
| #include "TextUnderlineControl.hxx" |
| #include "TextUnderlinePopup.hxx" |
| #include <svx/sidebar/ColorControl.hxx> |
| #include <svx/sidebar/PopupContainer.hxx> |
| |
| #include <boost/bind.hpp> |
| |
| using namespace css; |
| using namespace cssu; |
| using namespace ::sfx2::sidebar; |
| using ::sfx2::sidebar::Theme; |
| using ::sfx2::sidebar::ControlFactory; |
| using ::sfx2::sidebar::Layouter; |
| |
| #define A2S(pString) (::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(pString))) |
| |
| |
| |
| |
| namespace svx { namespace sidebar { |
| |
| #undef HAS_IA2 |
| |
| |
| |
| PopupControl* TextPropertyPanel::CreateCharacterSpacingControl (PopupContainer* pParent) |
| { |
| return new TextCharacterSpacingControl(pParent, *this, mpBindings); |
| } |
| |
| PopupControl* TextPropertyPanel::CreateUnderlinePopupControl (PopupContainer* pParent) |
| { |
| return new TextUnderlineControl(pParent, *this, mpBindings); |
| } |
| |
| namespace |
| { |
| Color GetAutomaticColor(void) |
| { |
| return COL_AUTO; |
| } |
| } // end of anonymous namespace |
| |
| long TextPropertyPanel::GetSelFontSize() |
| { |
| long nH = 240; |
| SfxMapUnit eUnit = maSpacingControl.GetCoreMetric(); |
| if (mpHeightItem) |
| nH = LogicToLogic( mpHeightItem->GetHeight(), (MapUnit)eUnit, MAP_TWIP ); |
| return nH; |
| } |
| |
| |
| TextPropertyPanel* TextPropertyPanel::Create ( |
| Window* pParent, |
| const cssu::Reference<css::frame::XFrame>& rxFrame, |
| SfxBindings* pBindings, |
| const ::sfx2::sidebar::EnumContext& rContext) |
| { |
| if (pParent == NULL) |
| throw lang::IllegalArgumentException(A2S("no parent Window given to TextPropertyPanel::Create"), NULL, 0); |
| if ( ! rxFrame.is()) |
| throw lang::IllegalArgumentException(A2S("no XFrame given to TextPropertyPanel::Create"), NULL, 1); |
| if (pBindings == NULL) |
| throw lang::IllegalArgumentException(A2S("no SfxBindings given to TextPropertyPanel::Create"), NULL, 2); |
| |
| return new TextPropertyPanel( |
| pParent, |
| rxFrame, |
| pBindings, |
| rContext); |
| } |
| |
| |
| ::sfx2::sidebar::ControllerItem& TextPropertyPanel::GetSpaceController() |
| { |
| return maSpacingControl; |
| } |
| |
| TextPropertyPanel::TextPropertyPanel ( |
| Window* pParent, |
| const cssu::Reference<css::frame::XFrame>& rxFrame, |
| SfxBindings* pBindings, |
| const ::sfx2::sidebar::EnumContext& rContext) |
| : Control(pParent, SVX_RES(RID_SIDEBAR_TEXT_PANEL)), |
| mpFontNameBox (new SvxSBFontNameBox(this, SVX_RES(CB_SBFONT_FONT))), |
| maFontSizeBox (this, SVX_RES(MB_SBFONT_FONTSIZE)), |
| mpToolBoxFontBackground(ControlFactory::CreateToolBoxBackground(this)), |
| mpToolBoxFont(ControlFactory::CreateToolBox( |
| mpToolBoxFontBackground.get(), |
| SVX_RES(TB_FONT))), |
| mpToolBoxIncDecBackground(ControlFactory::CreateToolBoxBackground(this)), |
| mpToolBoxIncDec(ControlFactory::CreateToolBox( |
| mpToolBoxIncDecBackground.get(), |
| SVX_RES(TB_INCREASE_DECREASE))), |
| mpToolBoxScriptBackground(ControlFactory::CreateToolBoxBackground(this)), |
| mpToolBoxScript(ControlFactory::CreateToolBox( |
| mpToolBoxScriptBackground.get(), |
| SVX_RES(TB_SCRIPT))), |
| mpToolBoxScriptSwBackground(ControlFactory::CreateToolBoxBackground(this)), |
| mpToolBoxScriptSw(ControlFactory::CreateToolBox( |
| mpToolBoxScriptSwBackground.get(), |
| SVX_RES(TB_SCRIPT_SW))), |
| mpToolBoxSpacingBackground(ControlFactory::CreateToolBoxBackground(this)), |
| mpToolBoxSpacing(ControlFactory::CreateToolBox( |
| mpToolBoxSpacingBackground.get(), |
| SVX_RES(TB_SPACING))), |
| mpToolBoxFontColorBackground(ControlFactory::CreateToolBoxBackground(this)), |
| mpToolBoxFontColor(ControlFactory::CreateToolBox( |
| mpToolBoxFontColorBackground.get(), |
| SVX_RES(TB_FONTCOLOR), |
| rxFrame)), |
| mpToolBoxFontColorBackgroundSW(ControlFactory::CreateToolBoxBackground(this)), |
| mpToolBoxFontColorSW(ControlFactory::CreateToolBox( |
| mpToolBoxFontColorBackgroundSW.get(), |
| SVX_RES(TB_FONTCOLOR_SW), |
| rxFrame)), |
| mpToolBoxHighlightBackground(ControlFactory::CreateToolBoxBackground(this)), |
| mpToolBoxHighlight(ControlFactory::CreateToolBox( |
| mpToolBoxHighlightBackground.get(), |
| SVX_RES(TB_HIGHLIGHT), |
| rxFrame)), |
| mpFontColorUpdater(), |
| mpHighlightUpdater(), |
| |
| maFontNameControl (SID_ATTR_CHAR_FONT, *pBindings, *this, A2S("CharFontName"), rxFrame), |
| maFontSizeControl (SID_ATTR_CHAR_FONTHEIGHT, *pBindings, *this, A2S("FontHeight"), rxFrame), |
| maWeightControl (SID_ATTR_CHAR_WEIGHT, *pBindings, *this, A2S("Bold"), rxFrame), |
| maItalicControl (SID_ATTR_CHAR_POSTURE, *pBindings, *this, A2S("Italic"), rxFrame), |
| maUnderlineControl (SID_ATTR_CHAR_UNDERLINE, *pBindings, *this, A2S("Underline"), rxFrame), |
| maStrikeControl (SID_ATTR_CHAR_STRIKEOUT, *pBindings, *this, A2S("Strikeout"), rxFrame), |
| maShadowControl (SID_ATTR_CHAR_SHADOWED, *pBindings, *this, A2S("Shadowed"), rxFrame), |
| maScriptControlSw (SID_ATTR_CHAR_ESCAPEMENT, *pBindings, *this, A2S("Escapement"), rxFrame), |
| maSuperScriptControl(SID_SET_SUPER_SCRIPT, *pBindings, *this, A2S("SuperScript"), rxFrame), |
| maSubScriptControl (SID_SET_SUB_SCRIPT, *pBindings, *this, A2S("SubScript"), rxFrame), |
| maSpacingControl (SID_ATTR_CHAR_KERNING, *pBindings, *this, A2S("Spacing"), rxFrame), |
| maSDFontGrow (SID_GROW_FONT_SIZE, *pBindings, *this, A2S("Grow"), rxFrame), |
| maSDFontShrink (SID_SHRINK_FONT_SIZE, *pBindings, *this, A2S("Shrink"), rxFrame), |
| |
| mpFontList (NULL), |
| mbMustDelete (false), |
| mbFocusOnFontSizeCtrl(false), |
| maCharSpacePopup(this, ::boost::bind(&TextPropertyPanel::CreateCharacterSpacingControl, this, _1)), |
| maUnderlinePopup(this, ::boost::bind(&TextPropertyPanel::CreateUnderlinePopupControl, this, _1)), |
| mxFrame(rxFrame), |
| maContext(), |
| mpBindings(pBindings), |
| maLayouter(*this) |
| { |
| Initialize(); |
| |
| FreeResource(); |
| |
| UpdateFontColorToolbox(rContext); |
| |
| // Setup the grid layouter. |
| maLayouter.GetCell(0,0).SetControl(*mpFontNameBox).SetMinimumWidth(Layouter::MapWidth(*this,FONTNAME_WIDTH)); |
| maLayouter.GetCell(0,2).SetControl(maFontSizeBox).SetFixedWidth(); |
| |
| maLayouter.GetCell(1,0).SetControl(*mpToolBoxFontBackground).SetFixedWidth(); |
| maLayouter.GetCell(1,2).SetControl(*mpToolBoxIncDecBackground).SetFixedWidth(); |
| |
| maLayouter.GetColumn(0) |
| .SetWeight(1) |
| .SetLeftPadding(Layouter::MapWidth(*this,SECTIONPAGE_MARGIN_HORIZONTAL)); |
| maLayouter.GetColumn(1) |
| .SetWeight(0) |
| .SetMinimumWidth(Layouter::MapWidth(*this, CONTROL_SPACING_HORIZONTAL)); |
| maLayouter.GetColumn(2) |
| .SetWeight(0) |
| .SetRightPadding(Layouter::MapWidth(*this,SECTIONPAGE_MARGIN_HORIZONTAL)); |
| } |
| |
| |
| |
| |
| TextPropertyPanel::~TextPropertyPanel (void) |
| { |
| if(mbMustDelete) |
| delete mpFontList; |
| |
| // Destroy the toolbox windows. |
| mpToolBoxIncDec.reset(); |
| mpToolBoxFont.reset(); |
| mpToolBoxFontColor.reset(); |
| mpToolBoxFontColorSW.reset(); |
| mpToolBoxScript.reset(); |
| mpToolBoxScriptSw.reset(); |
| mpToolBoxSpacing.reset(); |
| mpToolBoxHighlight.reset(); |
| |
| // Destroy the background windows of the toolboxes. |
| mpToolBoxIncDecBackground.reset(); |
| mpToolBoxFontBackground.reset(); |
| mpToolBoxFontColorBackground.reset(); |
| mpToolBoxFontColorBackgroundSW.reset(); |
| mpToolBoxScriptBackground.reset(); |
| mpToolBoxScriptSwBackground.reset(); |
| mpToolBoxSpacingBackground.reset(); |
| mpToolBoxHighlightBackground.reset(); |
| } |
| |
| |
| |
| |
| void TextPropertyPanel::SetSpacing(long nKern) |
| { |
| mlKerning = nKern; |
| } |
| |
| |
| void TextPropertyPanel::HandleContextChange ( |
| const ::sfx2::sidebar::EnumContext aContext) |
| { |
| if (maContext == aContext) |
| { |
| // Nothing to do. |
| return; |
| } |
| |
| maContext = aContext; |
| switch (maContext.GetCombinedContext_DI()) |
| { |
| case CombinedEnumContext(Application_Calc, Context_Cell): |
| case CombinedEnumContext(Application_Calc, Context_Pivot): |
| mpToolBoxScriptSw->Hide(); |
| mpToolBoxHighlight->Hide(); |
| mpToolBoxScript->Disable(); |
| mpToolBoxSpacing->Disable(); |
| break; |
| |
| case CombinedEnumContext(Application_Calc, Context_EditCell): |
| case CombinedEnumContext(Application_Calc, Context_DrawText): |
| mpToolBoxScriptSw->Hide(); |
| mpToolBoxHighlight->Hide(); |
| mpToolBoxScript->Enable(); |
| mpToolBoxSpacing->Enable(); |
| break; |
| |
| case CombinedEnumContext(Application_WriterVariants, Context_Text): |
| case CombinedEnumContext(Application_WriterVariants, Context_Table): |
| mpToolBoxScriptSw->Show(); |
| mpToolBoxScript->Hide(); |
| mpToolBoxHighlight->Show(); |
| mpToolBoxSpacing->Show(); |
| break; |
| |
| case CombinedEnumContext(Application_WriterVariants, Context_DrawText): |
| case CombinedEnumContext(Application_WriterVariants, Context_Annotation): |
| mpToolBoxScriptSw->Show(); |
| mpToolBoxScript->Hide(); |
| mpToolBoxSpacing->Show(); |
| mpToolBoxHighlight->Hide(); |
| break; |
| |
| 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): |
| mpToolBoxScriptSw->Hide(); |
| mpToolBoxScript->Show(); |
| mpToolBoxSpacing->Show(); |
| mpToolBoxHighlight->Hide(); |
| break; |
| |
| default: |
| break; |
| } |
| |
| UpdateFontColorToolbox(aContext); |
| } |
| |
| |
| |
| |
| void TextPropertyPanel::UpdateFontColorToolbox ( |
| const ::sfx2::sidebar::EnumContext /* aContext */) |
| { |
| bool bIsWriterFontColor (false); |
| if (maContext.GetApplication_DI() == sfx2::sidebar::EnumContext::Application_WriterVariants) |
| if (maContext.GetContext() != sfx2::sidebar::EnumContext::Context_DrawText) |
| bIsWriterFontColor = true; |
| if (bIsWriterFontColor) |
| { |
| mpToolBoxFontColor->Hide(); |
| mpToolBoxFontColorSW->Show(); |
| } |
| else |
| { |
| mpToolBoxFontColor->Show(); |
| mpToolBoxFontColorSW->Hide(); |
| } |
| } |
| |
| |
| |
| |
| void TextPropertyPanel::DataChanged (const DataChangedEvent& rEvent) |
| { |
| (void)rEvent; |
| |
| SetupToolboxItems(); |
| } |
| |
| |
| |
| |
| void TextPropertyPanel::Initialize (void) |
| { |
| //<<modify fill font list |
| SfxObjectShell* pDocSh = SfxObjectShell::Current(); |
| const SfxPoolItem* pItem = NULL; |
| |
| if (pDocSh != NULL) |
| pItem = pDocSh->GetItem( SID_ATTR_CHAR_FONTLIST ); |
| if (pItem != NULL) |
| mpFontList = ( (SvxFontListItem*)pItem )->GetFontList(); |
| else |
| { |
| mpFontList = new FontList( Application::GetDefaultDevice() ); |
| mbMustDelete = true; |
| } |
| |
| mpFontNameBox->SetAccessibleName(mpFontNameBox->GetQuickHelpText()); |
| const FontInfo aFontInfo (mpFontList->Get( String::CreateFromAscii( "" ), String::CreateFromAscii( "" ))); |
| maFontSizeBox.Fill(&aFontInfo,mpFontList); |
| maFontSizeBox.SetAccessibleName(maFontSizeBox.GetQuickHelpText()); |
| |
| //toolbox |
| SetupToolboxItems(); |
| InitToolBoxIncDec(); |
| InitToolBoxFont(); |
| InitToolBoxScript(); |
| InitToolBoxSpacing(); |
| |
| #ifdef HAS_IA2 |
| mpFontNameBox->SetAccRelationLabeledBy(&mpFontNameBox); |
| mpFontNameBox->SetMpSubEditAccLableBy(&mpFontNameBox); |
| maFontSizeBox.SetAccRelationLabeledBy(&maFontSizeBox); |
| maFontSizeBox.SetMpSubEditAccLableBy(&maFontSizeBox); |
| mpToolBoxFont.SetAccRelationLabeledBy(&mpToolBoxFont); |
| mpToolBoxIncDec.SetAccRelationLabeledBy(&mpToolBoxIncDec); |
| mpToolBoxFontColor.SetAccRelationLabeledBy(&mpToolBoxFontColor); |
| mpToolBoxScript.SetAccRelationLabeledBy(&mpToolBoxScript); |
| mpToolBoxScriptSw.SetAccRelationLabeledBy(&mpToolBoxScriptSw); |
| mpToolBoxSpacing.SetAccRelationLabeledBy(&mpToolBoxSpacing); |
| mpToolBoxHighlight.SetAccRelationLabeledBy(&mpToolBoxHighlight); |
| #endif |
| |
| //init state |
| mpHeightItem = NULL; |
| meWeight = WEIGHT_NORMAL; |
| meItalic = ITALIC_NONE; |
| mbShadow = false; |
| meStrike = STRIKEOUT_NONE; |
| mbPostureAvailable = true; |
| mbWeightAvailable = true; |
| meUnderline = UNDERLINE_NONE; |
| meUnderlineColor = COL_AUTO; |
| meEscape = SVX_ESCAPEMENT_OFF; |
| mbSuper = false; |
| mbSub = false; |
| mbKernAvailable = true; |
| mbKernLBAvailable = true; |
| mlKerning = 0; |
| |
| //set handler |
| mpFontNameBox->SetBindings(mpBindings); |
| Link aLink = LINK(this, TextPropertyPanel, FontSelHdl); |
| mpFontNameBox->SetSelectHdl(aLink); |
| aLink = LINK(this, TextPropertyPanel, FontSizeModifyHdl); |
| maFontSizeBox.SetModifyHdl(aLink); |
| aLink = LINK(this, TextPropertyPanel, FontSizeSelHdl); |
| maFontSizeBox.SetSelectHdl(aLink); |
| aLink = LINK(this, TextPropertyPanel, FontSizeLoseFocus); |
| maFontSizeBox.SetLoseFocusHdl(aLink); |
| } |
| |
| void TextPropertyPanel::EndSpacingPopupMode (void) |
| { |
| maCharSpacePopup.Hide(); |
| } |
| |
| void TextPropertyPanel::EndUnderlinePopupMode (void) |
| { |
| maUnderlinePopup.Hide(); |
| } |
| |
| |
| void TextPropertyPanel::InitToolBoxFont() |
| { |
| mpToolBoxFont->SetBackground(Wallpaper()); |
| mpToolBoxFont->SetPaintTransparent(true); |
| |
| Size aTbxSize( mpToolBoxFont->CalcWindowSizePixel() ); |
| mpToolBoxFont->SetOutputSizePixel( aTbxSize ); |
| |
| Link aLink = LINK(this, TextPropertyPanel, ToolboxFontSelectHandler); |
| mpToolBoxFont->SetSelectHdl ( aLink ); |
| aLink = LINK(this, TextPropertyPanel, ToolBoxUnderlineClickHdl); |
| mpToolBoxFont->SetDropdownClickHdl(aLink); |
| } |
| |
| |
| |
| |
| void TextPropertyPanel::InitToolBoxIncDec() |
| { |
| Size aTbxSize( mpToolBoxIncDec->CalcWindowSizePixel() ); |
| mpToolBoxIncDec->SetOutputSizePixel( aTbxSize ); |
| |
| Link aLink = LINK(this, TextPropertyPanel, ToolboxIncDecSelectHdl); |
| mpToolBoxIncDec->SetSelectHdl ( aLink ); |
| } |
| |
| |
| |
| |
| void TextPropertyPanel::InitToolBoxScript() |
| { |
| Size aTbxSize( mpToolBoxScriptSw->CalcWindowSizePixel() ); |
| mpToolBoxScriptSw->SetOutputSizePixel( aTbxSize ); |
| |
| Link aLink = LINK(this, TextPropertyPanel, ToolBoxSwScriptSelectHdl); |
| mpToolBoxScriptSw->SetSelectHdl ( aLink ); |
| |
| aTbxSize = mpToolBoxScript->CalcWindowSizePixel() ; |
| mpToolBoxScript->SetOutputSizePixel( aTbxSize ); |
| |
| aLink = LINK(this, TextPropertyPanel, ToolBoxScriptSelectHdl); |
| mpToolBoxScript->SetSelectHdl ( aLink ); |
| } |
| void TextPropertyPanel::InitToolBoxSpacing() |
| { |
| Size aTbxSize( mpToolBoxSpacing->CalcWindowSizePixel() ); |
| mpToolBoxSpacing->SetOutputSizePixel( aTbxSize ); |
| mpToolBoxSpacing->SetItemBits( TBI_SPACING, mpToolBoxSpacing->GetItemBits( TBI_SPACING ) | TIB_DROPDOWNONLY ); |
| |
| Link aLink = LINK(this, TextPropertyPanel, SpacingClickHdl); |
| mpToolBoxSpacing->SetDropdownClickHdl ( aLink ); |
| mpToolBoxSpacing->SetSelectHdl( aLink ); |
| } |
| |
| |
| |
| |
| void TextPropertyPanel::SetupToolboxItems (void) |
| { |
| maSDFontGrow.SetupToolBoxItem(*mpToolBoxIncDec, TBI_INCREASE); |
| maSDFontShrink.SetupToolBoxItem(*mpToolBoxIncDec, TBI_DECREASE); |
| |
| maWeightControl.SetupToolBoxItem(*mpToolBoxFont, TBI_BOLD); |
| maItalicControl.SetupToolBoxItem(*mpToolBoxFont, TBI_ITALIC); |
| maUnderlineControl.SetupToolBoxItem(*mpToolBoxFont, TBI_UNDERLINE); |
| maStrikeControl.SetupToolBoxItem(*mpToolBoxFont, TBI_STRIKEOUT); |
| maShadowControl.SetupToolBoxItem(*mpToolBoxFont, TBI_SHADOWED); |
| |
| //for sw |
| maSuperScriptControl.SetupToolBoxItem(*mpToolBoxScriptSw, TBI_SUPER_SW); |
| maSubScriptControl.SetupToolBoxItem(*mpToolBoxScriptSw, TBI_SUB_SW); |
| //for sc and sd |
| maSuperScriptControl.SetupToolBoxItem(*mpToolBoxScript, TBI_SUPER); |
| maSubScriptControl.SetupToolBoxItem(*mpToolBoxScript, TBI_SUB); |
| maSpacingControl.SetupToolBoxItem(*mpToolBoxSpacing, TBI_SPACING); |
| } |
| |
| |
| |
| |
| IMPL_LINK( TextPropertyPanel, FontSelHdl, FontNameBox*, pBox ) |
| { |
| if ( !pBox->IsTravelSelect() ) |
| { |
| if( SfxViewShell::Current() ) |
| { |
| Window* pShellWnd = SfxViewShell::Current()->GetWindow(); |
| |
| if ( pShellWnd ) |
| pShellWnd->GrabFocus(); |
| } |
| } |
| return 0; |
| } |
| |
| IMPL_LINK( TextPropertyPanel, FontSizeModifyHdl, FontSizeBox*, pSizeBox ) |
| { |
| if (pSizeBox == &maFontSizeBox) |
| { |
| long nSize = pSizeBox->GetValue(); |
| mbFocusOnFontSizeCtrl = true; |
| |
| float fSize = (float)nSize / 10; |
| SfxMapUnit eUnit = maFontSizeControl.GetCoreMetric(); |
| SvxFontHeightItem aItem( CalcToUnit( fSize, eUnit ), 100, SID_ATTR_CHAR_FONTHEIGHT ) ; |
| |
| mpBindings->GetDispatcher()->Execute( SID_ATTR_CHAR_FONTHEIGHT, SFX_CALLMODE_RECORD, &aItem, 0L ); |
| mpBindings->Invalidate(SID_ATTR_CHAR_FONTHEIGHT,true,false); |
| } |
| return 0; |
| } |
| |
| IMPL_LINK( TextPropertyPanel, FontSizeSelHdl, FontSizeBox*, pSizeBox ) |
| { |
| if ( !pSizeBox->IsTravelSelect() ) |
| { |
| if( SfxViewShell::Current() ) |
| { |
| Window* pShellWnd = SfxViewShell::Current()->GetWindow(); |
| |
| if ( pShellWnd ) |
| pShellWnd->GrabFocus(); |
| } |
| } |
| |
| return 0; |
| } |
| |
| IMPL_LINK(TextPropertyPanel, FontSizeLoseFocus, FontSizeBox*, pSizeBox) |
| { |
| if(pSizeBox == &maFontSizeBox) |
| { |
| mbFocusOnFontSizeCtrl = false; |
| } |
| return 0; |
| } |
| |
| IMPL_LINK(TextPropertyPanel, ToolboxFontSelectHandler, ToolBox*, pToolBox) |
| { |
| const sal_uInt16 nId = pToolBox->GetCurItemId(); |
| |
| switch (nId) |
| { |
| case TBI_BOLD: |
| { |
| EndTracking(); |
| if(meWeight != WEIGHT_BOLD) |
| meWeight = WEIGHT_BOLD; |
| else |
| meWeight = WEIGHT_NORMAL; |
| SvxWeightItem aWeightItem(meWeight, SID_ATTR_CHAR_WEIGHT); |
| mpBindings->GetDispatcher()->Execute(SID_ATTR_CHAR_WEIGHT, SFX_CALLMODE_RECORD, &aWeightItem, 0L); |
| UpdateItem(SID_ATTR_CHAR_WEIGHT); |
| break; |
| } |
| case TBI_ITALIC: |
| { |
| EndTracking(); |
| if(meItalic != ITALIC_NORMAL) |
| meItalic = ITALIC_NORMAL; |
| else |
| meItalic = ITALIC_NONE; |
| SvxPostureItem aPostureItem(meItalic, SID_ATTR_CHAR_POSTURE); |
| mpBindings->GetDispatcher()->Execute(SID_ATTR_CHAR_POSTURE, SFX_CALLMODE_RECORD, &aPostureItem, 0L); |
| UpdateItem(SID_ATTR_CHAR_POSTURE); |
| break; |
| } |
| case TBI_UNDERLINE: |
| { |
| EndTracking(); |
| if(meUnderline == UNDERLINE_NONE) |
| { |
| meUnderline = UNDERLINE_SINGLE; |
| SvxUnderlineItem aLineItem(meUnderline, SID_ATTR_CHAR_UNDERLINE); |
| aLineItem.SetColor(meUnderlineColor); |
| mpBindings->GetDispatcher()->Execute(SID_ATTR_CHAR_UNDERLINE, SFX_CALLMODE_RECORD, &aLineItem, 0L); |
| } |
| else |
| { |
| meUnderline = UNDERLINE_NONE; |
| SvxUnderlineItem aLineItem(meUnderline, SID_ATTR_CHAR_UNDERLINE); |
| mpBindings->GetDispatcher()->Execute(SID_ATTR_CHAR_UNDERLINE, SFX_CALLMODE_RECORD, &aLineItem, 0L); |
| } |
| UpdateItem(SID_ATTR_CHAR_UNDERLINE); |
| break; |
| } |
| case TBI_STRIKEOUT: |
| { |
| EndTracking(); |
| if(meStrike != STRIKEOUT_NONE && meStrike != STRIKEOUT_DONTKNOW) |
| meStrike = STRIKEOUT_NONE; |
| else |
| meStrike = STRIKEOUT_SINGLE; |
| SvxCrossedOutItem aStrikeItem(meStrike,SID_ATTR_CHAR_STRIKEOUT); |
| mpBindings->GetDispatcher()->Execute(SID_ATTR_CHAR_STRIKEOUT, SFX_CALLMODE_RECORD, &aStrikeItem, 0L); |
| UpdateItem(SID_ATTR_CHAR_STRIKEOUT); |
| break; |
| } |
| case TBI_SHADOWED: |
| { |
| EndTracking(); |
| mbShadow = !mbShadow; |
| SvxShadowedItem aShadowItem(mbShadow, SID_ATTR_CHAR_SHADOWED); |
| mpBindings->GetDispatcher()->Execute(SID_ATTR_CHAR_SHADOWED, SFX_CALLMODE_RECORD, &aShadowItem, 0L); |
| UpdateItem(SID_ATTR_CHAR_SHADOWED); |
| break; |
| } |
| } |
| return 0; |
| } |
| |
| |
| |
| |
| IMPL_LINK(TextPropertyPanel, ToolboxIncDecSelectHdl, ToolBox*, pToolBox) |
| { |
| const sal_uInt16 nId = pToolBox->GetCurItemId(); |
| |
| // 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): |
| if(nId == TBI_INCREASE) |
| { |
| EndTracking(); |
| SfxVoidItem aItem(SID_GROW_FONT_SIZE); |
| mpBindings->GetDispatcher()->Execute( SID_GROW_FONT_SIZE, SFX_CALLMODE_RECORD, &aItem, 0L ); |
| } |
| else if(nId == TBI_DECREASE) |
| { |
| EndTracking(); |
| SfxVoidItem aItem(SID_SHRINK_FONT_SIZE); |
| mpBindings->GetDispatcher()->Execute( SID_SHRINK_FONT_SIZE, SFX_CALLMODE_RECORD, &aItem, 0L ); |
| } |
| break; |
| |
| default: |
| if(nId == TBI_INCREASE) |
| { |
| EndTracking(); |
| mbFocusOnFontSizeCtrl = false; |
| sal_Int64 iValue = maFontSizeBox.GetValue(); |
| int iPos = maFontSizeBox.GetValuePos(iValue, FUNIT_NONE); |
| long nSize = iValue; |
| if(iPos != LISTBOX_ENTRY_NOTFOUND) |
| nSize = maFontSizeBox.GetValue(iPos+1 , FUNIT_NONE); |
| else if(iValue >= 100 && iValue < 105) |
| nSize = 105; |
| else if(iValue >= 105 && iValue < 110) |
| nSize = 110; |
| else if(iValue < 960) |
| { |
| nSize = (nSize / 10) * 10 + 10; |
| while(maFontSizeBox.GetValuePos(nSize, FUNIT_NONE) == LISTBOX_ENTRY_NOTFOUND) |
| nSize += 10; |
| } |
| else |
| { |
| nSize = iValue; |
| } |
| |
| float fSize = (float)nSize / 10; |
| |
| SfxMapUnit eUnit = maFontSizeControl.GetCoreMetric(); |
| SvxFontHeightItem aItem( CalcToUnit( fSize, eUnit ), 100, SID_ATTR_CHAR_FONTHEIGHT ) ; |
| |
| mpBindings->GetDispatcher()->Execute( SID_ATTR_CHAR_FONTHEIGHT, SFX_CALLMODE_RECORD, &aItem, 0L ); |
| mpBindings->Invalidate(SID_ATTR_CHAR_FONTHEIGHT,true,false); |
| maFontSizeBox.SetValue( nSize ); |
| } |
| else if(nId == TBI_DECREASE) |
| { |
| EndTracking(); |
| mbFocusOnFontSizeCtrl = false; |
| sal_Int64 iValue = maFontSizeBox.GetValue(); |
| int iPos = maFontSizeBox.GetValuePos(iValue, FUNIT_NONE); |
| long nSize = iValue; |
| if(iPos != LISTBOX_ENTRY_NOTFOUND) |
| nSize = maFontSizeBox.GetValue(iPos-1 , FUNIT_NONE); |
| else if(iValue > 100 && iValue <= 105) |
| nSize = 100; |
| else if(iValue > 105 && iValue <= 110) |
| nSize = 105; |
| else if(iValue > 960) |
| { |
| nSize = 960; |
| } |
| else if(iValue > 60) |
| { |
| nSize = (nSize / 10) * 10 ; |
| while(maFontSizeBox.GetValuePos(nSize, FUNIT_NONE) == LISTBOX_ENTRY_NOTFOUND) |
| nSize -= 10; |
| } |
| else |
| { |
| nSize = iValue; |
| } |
| |
| float fSize = (float)nSize / 10; |
| |
| SfxMapUnit eUnit = maFontSizeControl.GetCoreMetric(); |
| SvxFontHeightItem aItem( CalcToUnit( fSize, eUnit ), 100, SID_ATTR_CHAR_FONTHEIGHT ) ; |
| |
| mpBindings->GetDispatcher()->Execute( SID_ATTR_CHAR_FONTHEIGHT, SFX_CALLMODE_RECORD, &aItem, 0L ); |
| mpBindings->Invalidate(SID_ATTR_CHAR_FONTHEIGHT,true,false); |
| maFontSizeBox.SetValue( nSize ); |
| } |
| } |
| UpdateItem(SID_ATTR_CHAR_FONTHEIGHT); |
| |
| return 0; |
| } |
| |
| |
| |
| IMPL_LINK(TextPropertyPanel, ToolBoxUnderlineClickHdl, ToolBox*, pToolBox) |
| { |
| const sal_uInt16 nId = pToolBox->GetCurItemId(); |
| OSL_ASSERT(nId == TBI_UNDERLINE); |
| if(nId == TBI_UNDERLINE) |
| { |
| pToolBox->SetItemDown( nId, true ); |
| maUnderlinePopup.Rearrange(meUnderline); |
| maUnderlinePopup.Show(*pToolBox); |
| |
| } |
| return 0L; |
| } |
| |
| |
| |
| |
| IMPL_LINK(TextPropertyPanel, ToolBoxSwScriptSelectHdl, ToolBox*, pToolBox) |
| { |
| const sal_uInt16 nId = pToolBox->GetCurItemId(); |
| if( nId == TBI_SUPER_SW ) |
| { |
| if(meEscape != SVX_ESCAPEMENT_SUPERSCRIPT) |
| { |
| meEscape = SVX_ESCAPEMENT_SUPERSCRIPT; |
| SvxEscapementItem aSupItem(DFLT_ESC_SUPER, DFLT_ESC_PROP, SID_ATTR_CHAR_ESCAPEMENT); |
| mpBindings->GetDispatcher()->Execute( SID_ATTR_CHAR_ESCAPEMENT, SFX_CALLMODE_RECORD, &aSupItem, 0L ); |
| } |
| else |
| { |
| meEscape = SVX_ESCAPEMENT_OFF; |
| SvxEscapementItem aNoneItem(0, 100, SID_ATTR_CHAR_ESCAPEMENT); |
| mpBindings->GetDispatcher()->Execute( SID_ATTR_CHAR_ESCAPEMENT, SFX_CALLMODE_RECORD, &aNoneItem, 0L ); |
| } |
| } |
| else if(TBI_SUB_SW == nId) |
| { |
| if(meEscape != SVX_ESCAPEMENT_SUBSCRIPT) |
| { |
| meEscape = (SvxEscapement)SVX_ESCAPEMENT_SUBSCRIPT; |
| SvxEscapementItem aSubItem(DFLT_ESC_SUB, DFLT_ESC_PROP, SID_ATTR_CHAR_ESCAPEMENT); |
| mpBindings->GetDispatcher()->Execute( SID_ATTR_CHAR_ESCAPEMENT, SFX_CALLMODE_RECORD, &aSubItem, 0L ); |
| } |
| else |
| { |
| meEscape = SVX_ESCAPEMENT_OFF; |
| SvxEscapementItem aNoneItem(0, 100, SID_ATTR_CHAR_ESCAPEMENT); |
| mpBindings->GetDispatcher()->Execute( SID_ATTR_CHAR_ESCAPEMENT, SFX_CALLMODE_RECORD, &aNoneItem, 0L ); |
| } |
| } |
| UpdateItem(SID_ATTR_CHAR_ESCAPEMENT); |
| |
| return 0; |
| } |
| |
| |
| |
| |
| IMPL_LINK(TextPropertyPanel, ToolBoxScriptSelectHdl, ToolBox*, pToolBox) |
| { |
| const sal_uInt16 nId = pToolBox->GetCurItemId(); |
| if( nId == TBI_SUPER ) |
| { |
| mbSuper = !mbSuper; |
| SfxBoolItem aSupItem(SID_SET_SUPER_SCRIPT, mbSuper); |
| mpBindings->GetDispatcher()->Execute( SID_SET_SUPER_SCRIPT, SFX_CALLMODE_RECORD, &aSupItem, 0L ); |
| UpdateItem(SID_SET_SUPER_SCRIPT); |
| } |
| else if(TBI_SUB == nId) |
| { |
| |
| mbSub = !mbSub; |
| SfxBoolItem aSubItem(SID_SET_SUB_SCRIPT, mbSub ); |
| mpBindings->GetDispatcher()->Execute( SID_SET_SUB_SCRIPT, SFX_CALLMODE_RECORD, &aSubItem, 0L ); |
| UpdateItem(SID_SET_SUB_SCRIPT); |
| } |
| return 0; |
| } |
| |
| |
| |
| |
| IMPL_LINK(TextPropertyPanel, SpacingClickHdl, ToolBox*, pToolBox) |
| { |
| const sal_uInt16 nId = pToolBox->GetCurItemId(); |
| OSL_ASSERT(nId == TBI_SPACING); |
| if(nId == TBI_SPACING) |
| { |
| pToolBox->SetItemDown( nId, true ); |
| maCharSpacePopup.Rearrange(mbKernLBAvailable,mbKernAvailable,mlKerning); |
| maCharSpacePopup.Show(*pToolBox); |
| |
| } |
| return 0L; |
| } |
| |
| |
| |
| |
| 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 diabled when multi-seletion 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; |
| } |
| } |
| |
| |
| |
| |
| void TextPropertyPanel::Resize (void) |
| { |
| maLayouter.Layout(); |
| } |
| |
| |
| |
| |
| void TextPropertyPanel::UpdateItem (const sal_uInt16 nSlotId) |
| { |
| switch (nSlotId) |
| { |
| case SID_ATTR_CHAR_FONT: |
| maFontNameControl.RequestUpdate(); |
| break; |
| case SID_ATTR_CHAR_FONTHEIGHT: |
| maFontSizeControl.RequestUpdate(); |
| break; |
| case SID_ATTR_CHAR_WEIGHT: |
| maWeightControl.RequestUpdate(); |
| break; |
| case SID_ATTR_CHAR_POSTURE: |
| maItalicControl.RequestUpdate(); |
| break; |
| case SID_ATTR_CHAR_UNDERLINE: |
| maUnderlineControl.RequestUpdate(); |
| break; |
| case SID_ATTR_CHAR_STRIKEOUT: |
| maStrikeControl.RequestUpdate(); |
| break; |
| case SID_ATTR_CHAR_SHADOWED: |
| maShadowControl.RequestUpdate(); |
| break; |
| case SID_ATTR_CHAR_ESCAPEMENT: |
| maScriptControlSw.RequestUpdate(); |
| break; |
| case SID_SET_SUPER_SCRIPT: |
| maSuperScriptControl.RequestUpdate(); |
| break; |
| case SID_SET_SUB_SCRIPT: |
| maSubScriptControl.RequestUpdate(); |
| break; |
| case SID_ATTR_CHAR_KERNING: |
| maSpacingControl.RequestUpdate(); |
| break; |
| case SID_GROW_FONT_SIZE: |
| maSDFontGrow.RequestUpdate(); |
| break; |
| case SID_SHRINK_FONT_SIZE: |
| maSDFontShrink.RequestUpdate(); |
| break; |
| } |
| } |
| |
| |
| |
| |
| |
| Color& TextPropertyPanel::GetUnderlineColor() |
| { |
| return meUnderlineColor; |
| } |
| |
| void TextPropertyPanel::SetUnderline(FontUnderline eUnderline) |
| { |
| meUnderline = eUnderline; |
| } |
| |
| |
| |
| } } // end of namespace svx::sidebar |