xref: /AOO42X/main/svx/source/sidebar/text/TextPropertyPanel.cxx (revision da72173f9f5ebf442a76a058e2275842cbc3d04e)
1 /**************************************************************
2  *
3  * Licensed to the Apache Software Foundation (ASF) under one
4  * or more contributor license agreements.  See the NOTICE file
5  * distributed with this work for additional information
6  * regarding copyright ownership.  The ASF licenses this file
7  * to you under the Apache License, Version 2.0 (the
8  * "License"); you may not use this file except in compliance
9  * with the License.  You may obtain a copy of the License at
10  *
11  *   http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing,
14  * software distributed under the License is distributed on an
15  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16  * KIND, either express or implied.  See the License for the
17  * specific language governing permissions and limitations
18  * under the License.
19  *
20  *************************************************************/
21 
22 #include "precompiled_svx.hxx"
23 
24 #include "TextPropertyPanel.hrc"
25 #include "TextPropertyPanel.hxx"
26 #include "SvxSBFontNameBox.hxx"
27 
28 #include "svx/dialmgr.hxx"
29 
30 #include <editeng/brshitem.hxx>
31 #include <editeng/colritem.hxx>
32 #include <editeng/crsditem.hxx>
33 #include <editeng/escpitem.hxx>
34 #include <editeng/flstitem.hxx>
35 #include <editeng/fontitem.hxx>
36 #include <editeng/kernitem.hxx>
37 #include <editeng/postitem.hxx>
38 #include <editeng/shdditem.hxx>
39 #include <editeng/udlnitem.hxx>
40 #include <editeng/wghtitem.hxx>
41 #include <rtl/ref.hxx>
42 #include <sfx2/dispatch.hxx>
43 #include <sfx2/objsh.hxx>
44 #include <sfx2/viewsh.hxx>
45 #include <sfx2/sidebar/propertypanel.hrc>
46 #include <sfx2/sidebar/ControlFactory.hxx>
47 #include <sfx2/sidebar/Theme.hxx>
48 #include "sfx2/imagemgr.hxx"
49 #include <svtools/ctrltool.hxx>
50 #include <svtools/unitconv.hxx>
51 
52 #include <vcl/gradient.hxx>
53 #include <vcl/svapp.hxx>
54 #include <vcl/toolbox.hxx>
55 
56 using namespace css;
57 using namespace cssu;
58 using ::sfx2::sidebar::Theme;
59 using ::sfx2::sidebar::ControlFactory;
60 
61 #define A2S(pString) (::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(pString)))
62 
63 namespace svx { namespace sidebar {
64 
65 #undef HAS_IA2
66 
67 
68 #define FONT_CONTROL_WIDTH      160
69 #define SIZE_CONTROL_WIDTH      80
70 #define CONTROL_COMBOX_HEIGHT   20
71 #define CONTROL_HEIGHT_5X       120
72 #define SIDEBAR_SPACE_NORMAL    0
73 #define SIDEBAR_SPACE_EXPAND    1
74 #define SIDEBAR_SPACE_CONDENSED 2
75 #define SIDEBAR_SPACING_GLOBAL_VALUE    String("PopupPanal_Spacing", 18, RTL_TEXTENCODING_ASCII_US)
76 #define TEXT_SECTIONPAGE_HEIGHT_S   SECTIONPAGE_MARGIN_VERTICAL_TOP + CBOX_HEIGHT  + ( TOOLBOX_ITEM_HEIGHT + 2 ) + CONTROL_SPACING_VERTICAL * 1 + SECTIONPAGE_MARGIN_VERTICAL_BOT
77 #define TEXT_SECTIONPAGE_HEIGHT     SECTIONPAGE_MARGIN_VERTICAL_TOP + CBOX_HEIGHT  + ( TOOLBOX_ITEM_HEIGHT + 2 ) * 2 + CONTROL_SPACING_VERTICAL * 2 + SECTIONPAGE_MARGIN_VERTICAL_BOT
78 
79 //
80 #define SPACING_NOCUSTOM                0
81 #define SPACING_CLOSE_BY_CLICK_ICON     -1
82 #define SPACING_CLOSE_BY_CUS_EDIT       1
83 //end
84 
85 
86 
87 
88 
89 TextPropertyPanel* TextPropertyPanel::Create (
90     Window* pParent,
91     const cssu::Reference<css::frame::XFrame>& rxFrame,
92     SfxBindings* pBindings)
93 {
94     if (pParent == NULL)
95         throw lang::IllegalArgumentException(A2S("no parent Window given to TextPropertyPanel::Create"), NULL, 0);
96     if ( ! rxFrame.is())
97         throw lang::IllegalArgumentException(A2S("no XFrame given to TextPropertyPanel::Create"), NULL, 1);
98     if (pBindings == NULL)
99         throw lang::IllegalArgumentException(A2S("no SfxBindings given to TextPropertyPanel::Create"), NULL, 2);
100 
101     return new TextPropertyPanel(
102         pParent,
103         rxFrame,
104         pBindings);
105 }
106 
107 
108 
109 
110 TextPropertyPanel::TextPropertyPanel (
111     Window* pParent,
112     const cssu::Reference<css::frame::XFrame>& rxFrame,
113     SfxBindings* pBindings)
114     :   Control(pParent, SVX_RES(RID_SIDEBAR_TEXT_PANEL)),
115         mpFontNameBox (new SvxSBFontNameBox(this, SVX_RES(CB_SBFONT_FONT))),
116         maFontSizeBox       (this, SVX_RES(MB_SBFONT_FONTSIZE)),
117         mpToolBoxIncDecBackground(ControlFactory::CreateToolBoxBackground(this)),
118         mpToolBoxIncDec(ControlFactory::CreateToolBox(
119                 mpToolBoxIncDecBackground.get(),
120                 SVX_RES(TB_INCREASE_DECREASE))),
121         mpToolBoxFontBackground(ControlFactory::CreateToolBoxBackground(this)),
122         mpToolBoxFont(ControlFactory::CreateToolBox(
123                 mpToolBoxFontBackground.get(),
124                 SVX_RES(TB_FONT))),
125         mpToolBoxFontColorBackground(ControlFactory::CreateToolBoxBackground(this)),
126         mpToolBoxFontColor(ControlFactory::CreateToolBox(
127                 mpToolBoxFontColorBackground.get(),
128                 SVX_RES(TB_FONTCOLOR))),
129         mpToolBoxScriptBackground(ControlFactory::CreateToolBoxBackground(this)),
130         mpToolBoxScript(ControlFactory::CreateToolBox(
131                 mpToolBoxScriptBackground.get(),
132                 SVX_RES(TB_SCRIPT))),
133         mpToolBoxScriptSwBackground(ControlFactory::CreateToolBoxBackground(this)),
134         mpToolBoxScriptSw(ControlFactory::CreateToolBox(
135                 mpToolBoxScriptSwBackground.get(),
136                 SVX_RES(TB_SCRIPT_SW))),
137         mpToolBoxSpacingBackground(ControlFactory::CreateToolBoxBackground(this)),
138         mpToolBoxSpacing(ControlFactory::CreateToolBox(
139                 mpToolBoxSpacingBackground.get(),
140                 SVX_RES(TB_SPACING))),
141         mpToolBoxHighlightBackground(ControlFactory::CreateToolBoxBackground(this)),
142         mpToolBoxHighlight(ControlFactory::CreateToolBox(
143                 mpToolBoxHighlightBackground.get(),
144                 SVX_RES(TB_HIGHLIGHT))),
145         mpFontColorUpdater(),
146         mpHighlightUpdater(),
147 
148         maFontNameControl   (SID_ATTR_CHAR_FONT,        *pBindings, *this),
149         maFontSizeControl   (SID_ATTR_CHAR_FONTHEIGHT,  *pBindings, *this),
150         maWeightControl     (SID_ATTR_CHAR_WEIGHT,      *pBindings, *this),
151         maItalicControl     (SID_ATTR_CHAR_POSTURE,     *pBindings, *this),
152         maUnderlineControl  (SID_ATTR_CHAR_UNDERLINE,   *pBindings, *this),
153         maStrikeControl     (SID_ATTR_CHAR_STRIKEOUT,   *pBindings, *this),
154         maShadowControl     (SID_ATTR_CHAR_SHADOWED,    *pBindings, *this),
155         maFontColorControl  (SID_ATTR_CHAR_COLOR,       *pBindings, *this),
156         maScriptControlSw   (SID_ATTR_CHAR_ESCAPEMENT,  *pBindings, *this),  //for sw
157         maSuperScriptControl (SID_SET_SUPER_SCRIPT,     *pBindings, *this),
158         maSubScriptControl  (SID_SET_SUB_SCRIPT,        *pBindings, *this),
159         maSpacingControl    (SID_ATTR_CHAR_KERNING,     *pBindings, *this),
160         maHighlightControl  (SID_ATTR_BRUSH_CHAR,       *pBindings, *this),
161         maSDFontGrow        (SID_GROW_FONT_SIZE,        *pBindings, *this),
162         maSDFontShrink      (SID_SHRINK_FONT_SIZE,      *pBindings, *this),
163 
164         maImgIncrease       (SVX_RES( IMG_INCREASE)),
165         maImgDecrease       (SVX_RES( IMG_DECREASE)),
166         maImgBold           (SVX_RES( IMG_BOLD )),
167         maImgItalic         (SVX_RES( IMG_ITALIC )),
168         maImgUnderline      (SVX_RES( IMG_UNDERLINE )),
169         maImgStrike         (SVX_RES( IMG_STRIKEOUT )),
170         maImgShadow         (SVX_RES( IMG_SHADOWED )),
171         maImgFontColor      (SVX_RES( IMG_FONTCOLOR)),
172         maImgSupScript      (SVX_RES( IMG_SUPSCRIPT)),
173         maImgSubScript      (SVX_RES( IMG_SUBSCRIPT)),
174         maImgHighlight      (SVX_RES( IMG_HIGHLIGHT)),
175 
176         maImgNormalIcon     (SVX_RES(IMG_SPACING_D)),
177 
178         maImgIncreaseHigh   (SVX_RES( IMG_INCREASE_H )),
179         maImgDecreaseHigh   (SVX_RES( IMG_DECREASE_H )),
180         maImgBoldHigh       (SVX_RES( IMG_BOLD_H )),
181         maImgItalicHigh     (SVX_RES( IMG_ITALIC_H )),
182         maImgUnderlineHigh  (SVX_RES( IMG_UNDERLINE_H )),
183         maImgStrikeHigh     (SVX_RES( IMG_STRIKEOUT_H )),
184         maImgShadowHigh     (SVX_RES( IMG_SHADOWED_H )),
185         maImgFontColorHigh  (SVX_RES( IMG_FONTCOLOR_H)),
186         maImgSupScriptHigh  (SVX_RES( IMG_SUPSCRIPT_H)),
187         maImgSubScriptHigh  (SVX_RES( IMG_SUBSCRIPT_H)),
188         maImgHighlightHigh  (SVX_RES( IMG_HIGHLIGHT_H)),
189 
190         mpFontList          (NULL),
191         mbMustDelete        (false),
192         mbFocusOnFontSizeCtrl(false),
193         /*AF
194         mpFloatWinUnderline(NULL),
195         mpPageUnderline(NULL),
196         mpFloatWinFontColor(NULL),
197         mpPageFontColor(NULL),
198         mpFloatWinSpacing(NULL),
199         mpPageSpacing(NULL)
200         */
201         mxFrame(rxFrame),
202         maContext(),
203         mpBindings(pBindings)
204 {
205     Initialize();
206     FreeResource();
207 
208     // Let the Pane draw the background.
209     SetBackground(Wallpaper());
210 }
211 
212 
213 
214 
215 TextPropertyPanel::~TextPropertyPanel (void)
216 {
217     if(mbMustDelete)
218         delete mpFontList;
219 
220     /*AF
221     delete mpPageUnderline;
222     delete mpFloatWinUnderline;
223 
224     delete mpPageFontColor;
225     delete mpFloatWinFontColor;
226 
227     delete mpPageSpacing;
228     delete mpFloatWinSpacing;
229     */
230 
231     // Destroy the toolbox windows.
232     mpToolBoxIncDec.reset();
233     mpToolBoxFont.reset();
234     mpToolBoxFontColor.reset();
235     mpToolBoxScript.reset();
236     mpToolBoxScriptSw.reset();
237     mpToolBoxSpacing.reset();
238     mpToolBoxHighlight.reset();
239 
240     // Destroy the background windows of the toolboxes.
241     mpToolBoxIncDecBackground.reset();
242     mpToolBoxFontBackground.reset();
243     mpToolBoxFontColorBackground.reset();
244     mpToolBoxScriptBackground.reset();
245     mpToolBoxScriptSwBackground.reset();
246     mpToolBoxSpacingBackground.reset();
247     mpToolBoxHighlightBackground.reset();
248 }
249 
250 
251 
252 
253 Image TextPropertyPanel::GetIcon (const ::rtl::OUString& rsURL)
254 {
255     return GetImage(mxFrame, rsURL, sal_False, Theme::IsHighContrastMode());
256 }
257 
258 
259 
260 
261 void TextPropertyPanel::HandleContextChange (
262     const ::sfx2::sidebar::EnumContext aContext)
263 {
264     if (maContext == aContext)
265     {
266         // Nothing to do.
267         return;
268     }
269 
270     maContext = aContext;
271     switch (maContext.GetCombinedContext())
272     {
273         case CombinedEnumContext(Application_Calc, Context_Cell):
274         case CombinedEnumContext(Application_Calc, Context_Pivot):
275         {
276             mpToolBoxScript->Hide();
277             mpToolBoxScriptSw->Hide();
278             mpToolBoxSpacing->Hide();
279             mpToolBoxHighlight->Hide();
280 
281             Size aSize(PROPERTYPAGE_WIDTH,TEXT_SECTIONPAGE_HEIGHT_S);
282             aSize = LogicToPixel( aSize, MapMode(MAP_APPFONT) );
283             aSize.setWidth(GetOutputSizePixel().Width());
284             SetSizePixel(aSize);
285             break;
286         }
287 
288         case CombinedEnumContext(Application_Writer, Context_Text):
289         case CombinedEnumContext(Application_Writer, Context_Table):
290         {
291             mpToolBoxScriptSw->Show();
292             mpToolBoxScript->Hide();
293             mpToolBoxHighlight->Show();
294             mpToolBoxSpacing->Show();
295 
296             Size aSize(PROPERTYPAGE_WIDTH, TEXT_SECTIONPAGE_HEIGHT);
297             aSize = LogicToPixel( aSize, MapMode(MAP_APPFONT) );
298             aSize.setWidth(GetOutputSizePixel().Width());
299             SetSizePixel(aSize);
300             break;
301         }
302 
303         case CombinedEnumContext(Application_Writer, Context_DrawText):
304         case CombinedEnumContext(Application_Writer, Context_Annotation):
305         {
306             mpToolBoxScriptSw->Show();
307             mpToolBoxScript->Hide();
308             mpToolBoxSpacing->Show();
309             mpToolBoxHighlight->Hide();
310 
311             Size aSize(PROPERTYPAGE_WIDTH,TEXT_SECTIONPAGE_HEIGHT);
312             aSize = LogicToPixel( aSize, MapMode(MAP_APPFONT) );
313             aSize.setWidth(GetOutputSizePixel().Width());
314             SetSizePixel(aSize);
315             break;
316         }
317 
318         case CombinedEnumContext(Application_Calc, Context_EditCell):
319         case CombinedEnumContext(Application_Calc, Context_DrawText):
320         case CombinedEnumContext(Application_Draw, Context_DrawText):
321         case CombinedEnumContext(Application_Draw, Context_Text):
322         case CombinedEnumContext(Application_Draw, Context_Table):
323         case CombinedEnumContext(Application_Draw, Context_OutlineText):
324         case CombinedEnumContext(Application_Draw, Context_Draw):
325         case CombinedEnumContext(Application_Draw, Context_TextObject):
326         case CombinedEnumContext(Application_Draw, Context_Graphic):
327         case CombinedEnumContext(Application_Impress, Context_DrawText):
328         case CombinedEnumContext(Application_Impress, Context_Text):
329         case CombinedEnumContext(Application_Impress, Context_Table):
330         case CombinedEnumContext(Application_Impress, Context_OutlineText):
331         case CombinedEnumContext(Application_Impress, Context_Draw):
332         case CombinedEnumContext(Application_Impress, Context_TextObject):
333         case CombinedEnumContext(Application_Impress, Context_Graphic):
334         {
335             mpToolBoxScriptSw->Hide();
336             mpToolBoxScript->Show();
337             mpToolBoxSpacing->Show();
338             mpToolBoxHighlight->Hide();
339 
340             Size aSize(PROPERTYPAGE_WIDTH,TEXT_SECTIONPAGE_HEIGHT);
341             aSize = LogicToPixel( aSize,MapMode(MAP_APPFONT) );
342             aSize.setWidth(GetOutputSizePixel().Width());
343             SetSizePixel(aSize);
344             break;
345         }
346 
347         default:
348             break;
349     }
350 }
351 
352 
353 
354 
355 void TextPropertyPanel::DataChanged (const DataChangedEvent& rEvent)
356 {
357     (void)rEvent;
358 
359     SetupIcons();
360 }
361 
362 
363 
364 void TextPropertyPanel::Initialize (void)
365 {
366     //<<modify fill font list
367     SfxObjectShell* pDocSh = SfxObjectShell::Current();
368     const SfxPoolItem* pItem = NULL;
369 
370     if (pDocSh != NULL)
371         pItem = pDocSh->GetItem( SID_ATTR_CHAR_FONTLIST );
372     if (pItem != NULL)
373         mpFontList = ( (SvxFontListItem*)pItem )->GetFontList();
374     else
375     {
376         mpFontList = new FontList( Application::GetDefaultDevice() );
377         mbMustDelete = 1;
378     }
379 
380     mpFontNameBox->SetAccessibleName(mpFontNameBox->GetQuickHelpText());
381     const FontInfo aFontInfo (mpFontList->Get( String::CreateFromAscii( "" ), String::CreateFromAscii( "" )));
382     maFontSizeBox.Fill(&aFontInfo,mpFontList);
383     maFontSizeBox.SetAccessibleName(maFontSizeBox.GetQuickHelpText());
384 
385     //toolbox
386     SetupIcons();
387     InitToolBoxIncDec();
388     InitToolBoxFont();
389     InitToolBoxFontColor();
390     InitToolBoxScript();
391     InitToolBoxSpacing();
392     InitToolBoxHighlight();
393 
394 #ifdef HAS_IA2
395     mpFontNameBox->SetAccRelationLabeledBy(&maFontNameBox);
396     mpFontNameBox->SetMpSubEditAccLableBy(&maFontNameBox);
397     maFontSizeBox.SetAccRelationLabeledBy(&maFontSizeBox);
398     maFontSizeBox.SetMpSubEditAccLableBy(&maFontSizeBox);
399     maToolBoxFont.SetAccRelationLabeledBy(&maToolBoxFont);
400     maToolBoxIncDec.SetAccRelationLabeledBy(&maToolBoxIncDec);
401     maToolBoxFontColor.SetAccRelationLabeledBy(&maToolBoxFontColor);
402     maToolBoxScript.SetAccRelationLabeledBy(&maToolBoxScript);
403     maToolBoxScriptSw.SetAccRelationLabeledBy(&maToolBoxScriptSw);
404     maToolBoxSpacing.SetAccRelationLabeledBy(&maToolBoxSpacing);
405     maToolBoxHighlight.SetAccRelationLabeledBy(&maToolBoxHighlight);
406 #endif
407 
408     //init state
409     mpHeightItem = NULL;
410     meWeight = WEIGHT_NORMAL;
411     meItalic = ITALIC_NONE;
412     mbShadow = false;
413     meStrike = STRIKEOUT_NONE;
414     mbPostureAvailable = true;
415     mbWeightAvailable = true;
416     meUnderline = UNDERLINE_NONE;
417     meUnderlineColor = COL_AUTO;   //
418     maColor = COL_BLACK;
419     mbColorAvailable = true;
420     maBackColor = COL_AUTO;
421     mbBackColorAvailable = true;
422     meColorType = FONT_COLOR;
423     meEscape = SVX_ESCAPEMENT_OFF;
424     mbSuper = false;
425     mbSub = false;
426     mbKernAvailable = true;
427     mbKernLBAvailable = true;
428     mlKerning = 0;
429     mpFontColorUpdater.reset(new ToolboxButtonColorUpdater(
430             SID_ATTR_CHAR_COLOR,
431             TBI_FONTCOLOR,
432             mpToolBoxFontColor.get(),
433             TBX_UPDATER_MODE_CHAR_COLOR_NEW));
434     mpHighlightUpdater.reset(new ToolboxButtonColorUpdater(
435             SID_ATTR_BRUSH_CHAR,
436             TBI_HIGHLIGHT,
437             mpToolBoxHighlight.get(),
438             TBX_UPDATER_MODE_CHAR_COLOR_NEW));
439 
440     //set handler
441     mpFontNameBox->SetBindings(mpBindings);
442     //add
443     Link aLink = LINK(this, TextPropertyPanel, FontSelHdl);
444     mpFontNameBox->SetSelectHdl(aLink);
445     //add end
446 
447     aLink = LINK(this, TextPropertyPanel, FontSizeModifyHdl);
448     maFontSizeBox.SetModifyHdl(aLink);
449     //add
450     aLink = LINK(this, TextPropertyPanel, FontSizeSelHdl);
451     maFontSizeBox.SetSelectHdl(aLink);
452     //add end
453     aLink = LINK(this, TextPropertyPanel, FontSizeLoseFocus);
454     maFontSizeBox.SetLoseFocusHdl(aLink);
455 
456     // add
457     long aSizeBoxHeight = maFontSizeBox.GetSizePixel().getHeight();;
458     Point aPosFontSize = maFontSizeBox.GetPosPixel();
459     long aPosY = aPosFontSize.getY();
460     Point pTBIncDec = mpToolBoxIncDec->GetPosPixel();
461     long aIncDecHeight = mpToolBoxIncDec->GetSizePixel().getHeight();
462     pTBIncDec.setY(aPosY+aSizeBoxHeight/2-aIncDecHeight/2);
463     mpToolBoxIncDec->SetPosPixel(pTBIncDec);
464     //end
465 }
466 
467 
468 
469 
470 void TextPropertyPanel::InitToolBoxFont()
471 {
472     mpToolBoxFont->SetQuickHelpText(TBI_BOLD,String(SVX_RES(STR_QH_BOLD))); //Add
473     mpToolBoxFont->SetQuickHelpText(TBI_ITALIC,String(SVX_RES(STR_QH_ITALIC))); //Add
474     mpToolBoxFont->SetQuickHelpText(TBI_UNDERLINE,String(SVX_RES(STR_QH_UNDERLINE))); //Add
475     mpToolBoxFont->SetBackground(Wallpaper());
476     mpToolBoxFont->SetPaintTransparent(true);
477 
478     Size aTbxSize( mpToolBoxFont->CalcWindowSizePixel() );
479     mpToolBoxFont->SetOutputSizePixel( aTbxSize );
480 
481     Link aLink  = LINK(this, TextPropertyPanel, ToolboxFontSelectHandler);
482     mpToolBoxFont->SetSelectHdl ( aLink );
483     aLink = LINK(this, TextPropertyPanel, ToolBoxUnderlineClickHdl);
484     mpToolBoxFont->SetDropdownClickHdl(aLink);
485 }
486 
487 
488 
489 
490 void TextPropertyPanel::InitToolBoxIncDec()
491 {
492     Size aTbxSize( mpToolBoxIncDec->CalcWindowSizePixel() );
493     mpToolBoxIncDec->SetOutputSizePixel( aTbxSize );
494 
495     Link aLink = LINK(this, TextPropertyPanel, ToolboxIncDecSelectHdl);
496     mpToolBoxIncDec->SetSelectHdl ( aLink );
497 }
498 
499 
500 
501 
502 void TextPropertyPanel::InitToolBoxFontColor()
503 {
504     Size aTbxSize( mpToolBoxFontColor->CalcWindowSizePixel() );
505     mpToolBoxFontColor->SetOutputSizePixel( aTbxSize );
506     mpToolBoxFontColor->SetItemBits( TBI_FONTCOLOR, mpToolBoxFontColor->GetItemBits( TBI_FONTCOLOR ) | TIB_DROPDOWNONLY );
507 
508     Link aLink = LINK(this, TextPropertyPanel, ToolBoxFontColorDropHdl);
509     mpToolBoxFontColor->SetDropdownClickHdl ( aLink );
510     mpToolBoxFontColor->SetSelectHdl ( aLink );
511 
512 }
513 void TextPropertyPanel::InitToolBoxScript()
514 {
515     Size aTbxSize( mpToolBoxScriptSw->CalcWindowSizePixel() );
516     mpToolBoxScriptSw->SetOutputSizePixel( aTbxSize );
517 
518     Link aLink = LINK(this, TextPropertyPanel, ToolBoxSwScriptSelectHdl);
519     mpToolBoxScriptSw->SetSelectHdl ( aLink );
520 
521     aTbxSize = mpToolBoxScript->CalcWindowSizePixel() ;
522     mpToolBoxScript->SetOutputSizePixel( aTbxSize );
523 
524     aLink = LINK(this, TextPropertyPanel, ToolBoxScriptSelectHdl);
525     mpToolBoxScript->SetSelectHdl ( aLink );
526 }
527 void TextPropertyPanel::InitToolBoxSpacing()
528 {
529     Size aTbxSize( mpToolBoxSpacing->CalcWindowSizePixel() );
530     mpToolBoxSpacing->SetOutputSizePixel( aTbxSize );
531     mpToolBoxSpacing->SetItemBits( TBI_SPACING, mpToolBoxSpacing->GetItemBits( TBI_SPACING ) | TIB_DROPDOWNONLY );
532 
533     Link aLink = LINK(this, TextPropertyPanel, SpacingClickHdl);
534     mpToolBoxSpacing->SetDropdownClickHdl ( aLink );
535     mpToolBoxSpacing->SetSelectHdl( aLink );
536 }
537 void TextPropertyPanel::InitToolBoxHighlight()
538 {
539     Size aTbxSize( mpToolBoxHighlight->CalcWindowSizePixel() );
540     mpToolBoxHighlight->SetOutputSizePixel( aTbxSize );
541     mpToolBoxHighlight->SetItemBits( TBI_HIGHLIGHT, mpToolBoxHighlight->GetItemBits( TBI_HIGHLIGHT ) | TIB_DROPDOWNONLY );
542 
543     Link aLink = LINK(this, TextPropertyPanel, ToolBoxHighlightDropHdl);
544     mpToolBoxHighlight->SetDropdownClickHdl ( aLink );
545     mpToolBoxHighlight->SetSelectHdl( aLink );
546 }
547 
548 
549 
550 
551 void TextPropertyPanel::SetupIcons (void)
552 {
553     if (Theme::GetBoolean(Theme::Bool_UseSymphonyIcons))
554     {
555         mpToolBoxIncDec->SetItemImage(TBI_INCREASE, Application::GetSettings().GetStyleSettings().GetHighContrastMode()? maImgIncreaseHigh : maImgIncrease);
556         mpToolBoxIncDec->SetItemImage(TBI_DECREASE, Application::GetSettings().GetStyleSettings().GetHighContrastMode()? maImgDecreaseHigh : maImgDecrease);
557         mpToolBoxFont->SetItemImage(TBI_BOLD, Application::GetSettings().GetStyleSettings().GetHighContrastMode()? maImgBoldHigh : maImgBold);
558         mpToolBoxFont->SetItemImage(TBI_ITALIC, Application::GetSettings().GetStyleSettings().GetHighContrastMode()? maImgItalicHigh : maImgItalic);
559         mpToolBoxFont->SetItemImage(TBI_UNDERLINE, Application::GetSettings().GetStyleSettings().GetHighContrastMode()? maImgUnderlineHigh : maImgUnderline);
560         mpToolBoxFont->SetItemImage(TBI_STRIKEOUT, Application::GetSettings().GetStyleSettings().GetHighContrastMode()? maImgStrikeHigh : maImgStrike);
561         mpToolBoxFont->SetItemImage(TBI_SHADOWED, Application::GetSettings().GetStyleSettings().GetHighContrastMode()? maImgShadowHigh : maImgShadow);
562 
563         mpToolBoxFontColor->SetItemImage(TBI_FONTCOLOR, Application::GetSettings().GetStyleSettings().GetHighContrastMode()? maImgFontColorHigh : maImgFontColor);
564         //for sw
565         mpToolBoxScriptSw->SetItemImage(TBI_SUPER_SW, Application::GetSettings().GetStyleSettings().GetHighContrastMode()? maImgSupScriptHigh : maImgSupScript);
566         mpToolBoxScriptSw->SetItemImage(TBI_SUB_SW, Application::GetSettings().GetStyleSettings().GetHighContrastMode()? maImgSubScriptHigh : maImgSubScript);
567         //for sc and sd
568         mpToolBoxScript->SetItemImage(TBI_SUPER, Application::GetSettings().GetStyleSettings().GetHighContrastMode()? maImgSupScriptHigh : maImgSupScript);
569         mpToolBoxScript->SetItemImage(TBI_SUB, Application::GetSettings().GetStyleSettings().GetHighContrastMode()? maImgSubScriptHigh : maImgSubScript);
570         mpToolBoxSpacing->SetItemImage(TBI_SPACING,  maImgNormalIcon);
571         mpToolBoxHighlight->SetItemImage(TBI_HIGHLIGHT, Application::GetSettings().GetStyleSettings().GetHighContrastMode()? maImgHighlightHigh : maImgHighlight);
572     }
573     else
574     {
575         mpToolBoxIncDec->SetItemImage(TBI_INCREASE, GetIcon(A2S(".uno:Grow")));
576         mpToolBoxIncDec->SetItemImage(TBI_DECREASE, GetIcon(A2S(".uno:Shrink")));
577         mpToolBoxFont->SetItemImage(TBI_BOLD, GetIcon(A2S(".uno:Bold")));
578         mpToolBoxFont->SetItemImage(TBI_ITALIC, GetIcon(A2S(".uno:Italic")));
579         mpToolBoxFont->SetItemImage(TBI_UNDERLINE, GetIcon(A2S(".uno:Underline")));
580         mpToolBoxFont->SetItemImage(TBI_STRIKEOUT, GetIcon(A2S(".uno:Strikeout")));
581         mpToolBoxFont->SetItemImage(TBI_SHADOWED, GetIcon(A2S(".uno:Shadowed")));
582 
583         mpToolBoxFontColor->SetItemImage(TBI_FONTCOLOR, GetIcon(A2S(".uno:FontColor")));
584         //for sw
585         mpToolBoxScriptSw->SetItemImage(TBI_SUPER_SW, GetIcon(A2S(".uno:SuperScript")));
586         mpToolBoxScriptSw->SetItemImage(TBI_SUB_SW, GetIcon(A2S(".uno:SubScript")));
587         //for sc and sd
588         mpToolBoxScript->SetItemImage(TBI_SUPER, GetIcon(A2S(".uno:SuperScript")));
589         mpToolBoxScript->SetItemImage(TBI_SUB, GetIcon(A2S(".uno:SubScript")));
590         mpToolBoxSpacing->SetItemImage(TBI_SPACING,  GetIcon(A2S(".uno:FontworkCharacterSpacingFloater")));
591         mpToolBoxHighlight->SetItemImage(TBI_HIGHLIGHT, GetIcon(A2S(".uno:BackColor")));
592     }
593 }
594 
595 
596 
597 
598 IMPL_LINK( TextPropertyPanel, FontSelHdl, FontNameBox*, pBox )
599 {
600     if ( !pBox->IsTravelSelect() )
601     {
602         if( SfxViewShell::Current() )
603         {
604             Window* pShellWnd = SfxViewShell::Current()->GetWindow();
605 
606             if ( pShellWnd )
607                 pShellWnd->GrabFocus();
608         }
609     }
610     return 0;
611 }
612 //add end
613 IMPL_LINK( TextPropertyPanel, FontSizeModifyHdl, FontSizeBox*, pSizeBox )
614 {
615     if (pSizeBox == &maFontSizeBox)
616     {
617         long nSize = pSizeBox->GetValue();
618         mbFocusOnFontSizeCtrl = true;
619 
620         float fSize = (float)nSize / 10;
621         SfxMapUnit eUnit = maFontSizeControl.GetCoreMetric();
622         SvxFontHeightItem aItem( CalcToUnit( fSize, eUnit ), 100, SID_ATTR_CHAR_FONTHEIGHT ) ;
623 
624         mpBindings->GetDispatcher()->Execute( SID_ATTR_CHAR_FONTHEIGHT, SFX_CALLMODE_RECORD, &aItem, 0L );
625         mpBindings->Invalidate(SID_ATTR_CHAR_FONTHEIGHT,true,false);
626     }
627     return 0;
628 }
629 //add
630 IMPL_LINK( TextPropertyPanel, FontSizeSelHdl, FontSizeBox*, pSizeBox )
631 {
632     if ( !pSizeBox->IsTravelSelect() )
633     {
634         if( SfxViewShell::Current() )
635         {
636             Window* pShellWnd = SfxViewShell::Current()->GetWindow();
637 
638             if ( pShellWnd )
639                 pShellWnd->GrabFocus();
640         }
641     }
642 
643     return 0;
644 }
645 //add end
646 IMPL_LINK(TextPropertyPanel, FontSizeLoseFocus, FontSizeBox*, pSizeBox)
647 {
648     if(pSizeBox == &maFontSizeBox)
649     {
650         mbFocusOnFontSizeCtrl = false;
651     }
652     return 0;
653 }
654 
655 IMPL_LINK(TextPropertyPanel, ToolboxFontSelectHandler, ToolBox*, pToolBox)
656 {
657     const sal_uInt16 nId = pToolBox->GetCurItemId();
658 
659     //Bold
660     if(nId == TBI_BOLD)
661     {
662         EndTracking();
663         if(meWeight != WEIGHT_BOLD)
664             meWeight = WEIGHT_BOLD;
665         else
666             meWeight = WEIGHT_NORMAL;
667         SvxWeightItem aWeightItem(meWeight, SID_ATTR_CHAR_WEIGHT);
668         mpBindings->GetDispatcher()->Execute(SID_ATTR_CHAR_WEIGHT, SFX_CALLMODE_RECORD, &aWeightItem, 0L);
669         UpdateFontBold();
670     }
671     //Italic
672     else if(nId == TBI_ITALIC)
673     {
674         EndTracking();
675         if(meItalic != ITALIC_NORMAL)
676             meItalic = ITALIC_NORMAL;
677         else
678             meItalic = ITALIC_NONE;
679         SvxPostureItem aPostureItem(meItalic, SID_ATTR_CHAR_POSTURE);
680         mpBindings->GetDispatcher()->Execute(SID_ATTR_CHAR_POSTURE, SFX_CALLMODE_RECORD, &aPostureItem, 0L);
681         UpdateFontItalic();
682     }
683     //underline
684     else if(nId == TBI_UNDERLINE)
685     {
686         EndTracking();
687         //add , keep underline's color
688         if(meUnderline == UNDERLINE_NONE)
689         {
690             //AF: meUnderline = GetDefaultUnderline();
691             meUnderline = UNDERLINE_SINGLE;
692             //<<modify
693             //SvxTextLineItem aLineItem(meUnderline, SID_ATTR_CHAR_UNDERLINE);
694             SvxUnderlineItem aLineItem(meUnderline, SID_ATTR_CHAR_UNDERLINE);
695             //modify end>>
696             aLineItem.SetColor(meUnderlineColor);
697             mpBindings->GetDispatcher()->Execute(SID_ATTR_CHAR_UNDERLINE, SFX_CALLMODE_RECORD, &aLineItem, 0L);
698         }
699         else
700         {
701             meUnderline = UNDERLINE_NONE;
702             //<<modify
703             //SvxTextLineItem aLineItem(meUnderline, SID_ATTR_CHAR_UNDERLINE);
704             SvxUnderlineItem aLineItem(meUnderline, SID_ATTR_CHAR_UNDERLINE);
705             //modify end>>
706             mpBindings->GetDispatcher()->Execute(SID_ATTR_CHAR_UNDERLINE, SFX_CALLMODE_RECORD, &aLineItem, 0L);
707         }
708         UpdateFontUnderline();
709         //add end
710     }
711     //strike out
712     else if(nId == TBI_STRIKEOUT)
713     {
714         EndTracking();
715         if(meStrike !=  STRIKEOUT_NONE && meStrike != STRIKEOUT_DONTKNOW)
716             meStrike = STRIKEOUT_NONE;
717         else
718             meStrike = STRIKEOUT_SINGLE;
719         SvxCrossedOutItem aStrikeItem(meStrike,SID_ATTR_CHAR_STRIKEOUT);
720         mpBindings->GetDispatcher()->Execute(SID_ATTR_CHAR_STRIKEOUT, SFX_CALLMODE_RECORD, &aStrikeItem, 0L);
721         UpdateFontStrikeOut();
722     }
723     //shadowed
724     else if(nId == TBI_SHADOWED)
725     {
726         EndTracking();
727         mbShadow = !mbShadow;
728         SvxShadowedItem aShadowItem(mbShadow, SID_ATTR_CHAR_SHADOWED);
729         mpBindings->GetDispatcher()->Execute(SID_ATTR_CHAR_SHADOWED, SFX_CALLMODE_RECORD, &aShadowItem, 0L);
730         UpdateFontShadowed();
731     }
732     return 0;
733 }
734 
735 
736 
737 
738 IMPL_LINK(TextPropertyPanel, ToolboxIncDecSelectHdl, ToolBox*, pToolBox)
739 {
740     const sal_uInt16 nId = pToolBox->GetCurItemId();
741 
742     // font size +/- enhancement in sd
743     switch (maContext.GetCombinedContext())
744     {
745         case CombinedEnumContext(Application_Draw, Context_DrawText):
746         case CombinedEnumContext(Application_Draw, Context_Text):
747         case CombinedEnumContext(Application_Draw, Context_Table):
748         case CombinedEnumContext(Application_Draw, Context_OutlineText):
749         case CombinedEnumContext(Application_Draw, Context_Draw):
750         case CombinedEnumContext(Application_Draw, Context_TextObject):
751         case CombinedEnumContext(Application_Draw, Context_Graphic):
752         case CombinedEnumContext(Application_Impress, Context_DrawText):
753         case CombinedEnumContext(Application_Impress, Context_Text):
754         case CombinedEnumContext(Application_Impress, Context_Table):
755         case CombinedEnumContext(Application_Impress, Context_OutlineText):
756         case CombinedEnumContext(Application_Impress, Context_Draw):
757         case CombinedEnumContext(Application_Impress, Context_TextObject):
758         case CombinedEnumContext(Application_Impress, Context_Graphic):
759             if(nId == TBI_INCREASE)
760             {
761                 EndTracking();
762                 SfxVoidItem aItem(SID_GROW_FONT_SIZE);
763                 mpBindings->GetDispatcher()->Execute( SID_GROW_FONT_SIZE, SFX_CALLMODE_RECORD, &aItem, 0L );
764             }
765             else if(nId == TBI_DECREASE)
766             {
767                 EndTracking();
768                 SfxVoidItem aItem(SID_SHRINK_FONT_SIZE);
769                 mpBindings->GetDispatcher()->Execute( SID_SHRINK_FONT_SIZE, SFX_CALLMODE_RECORD, &aItem, 0L );
770             }
771             break;
772 
773         default:
774             if(nId == TBI_INCREASE)
775             {
776                 EndTracking();
777                 mbFocusOnFontSizeCtrl = false;
778                 sal_Int64 iValue = maFontSizeBox.GetValue();
779                 int iPos = maFontSizeBox.GetValuePos(iValue, FUNIT_NONE);
780                 long nSize = iValue;
781                 if(iPos != LISTBOX_ENTRY_NOTFOUND)
782                     nSize = maFontSizeBox.GetValue(iPos+1 , FUNIT_NONE);
783                 else if(iValue >= 100 && iValue < 105)
784                     nSize = 105;
785                 else if(iValue >= 105 && iValue < 110)
786                     nSize = 110;
787                 else if(iValue < 960)
788                 {
789                     nSize = (nSize / 10) * 10 + 10;
790                     while(maFontSizeBox.GetValuePos(nSize, FUNIT_NONE) == LISTBOX_ENTRY_NOTFOUND)
791                         nSize += 10;
792                 }
793                 else
794                 {
795                     nSize = iValue;
796                 }
797 
798                 float fSize = (float)nSize / 10;
799 
800                 SfxMapUnit eUnit = maFontSizeControl.GetCoreMetric();
801                 SvxFontHeightItem aItem( CalcToUnit( fSize, eUnit ), 100, SID_ATTR_CHAR_FONTHEIGHT ) ;
802 
803                 mpBindings->GetDispatcher()->Execute( SID_ATTR_CHAR_FONTHEIGHT, SFX_CALLMODE_RECORD, &aItem, 0L );
804                 mpBindings->Invalidate(SID_ATTR_CHAR_FONTHEIGHT,true,false);
805                 //add  , update ASAP
806                 maFontSizeBox.SetValue( nSize );
807                 if(nSize >= 960)
808                 {
809                     mpToolBoxIncDec->EnableItem(TBI_INCREASE,false);
810                     mpToolBoxIncDec->EnableItem(TBI_DECREASE,true);
811                 }
812                 else if(nSize <= 60)
813                 {
814                     mpToolBoxIncDec->EnableItem(TBI_INCREASE,true);
815                     mpToolBoxIncDec->EnableItem(TBI_DECREASE,false);
816                 }
817                 else
818                 {
819                     mpToolBoxIncDec->EnableItem(TBI_INCREASE,true);
820                     mpToolBoxIncDec->EnableItem(TBI_DECREASE,true);
821                 }
822                 //add end
823             }
824             else if(nId == TBI_DECREASE)
825             {
826                 EndTracking();
827                 mbFocusOnFontSizeCtrl = false;
828                 sal_Int64 iValue = maFontSizeBox.GetValue();
829                 int iPos = maFontSizeBox.GetValuePos(iValue, FUNIT_NONE);
830                 long nSize = iValue;
831                 if(iPos != LISTBOX_ENTRY_NOTFOUND)
832                     nSize = maFontSizeBox.GetValue(iPos-1 , FUNIT_NONE);
833                 else if(iValue > 100 && iValue <= 105)
834                     nSize = 100;
835                 else if(iValue > 105 && iValue <= 110)
836                     nSize = 105;
837                 else if(iValue > 960)
838                 {
839                     nSize = 960;
840                 }
841                 else if(iValue > 60)
842                 {
843                     nSize = (nSize / 10) * 10 ;
844                     while(maFontSizeBox.GetValuePos(nSize, FUNIT_NONE) == LISTBOX_ENTRY_NOTFOUND)
845                         nSize -= 10;
846                 }
847                 else
848                 {
849                     nSize = iValue;
850                 }
851 
852                 float fSize = (float)nSize / 10;
853 
854                 SfxMapUnit eUnit = maFontSizeControl.GetCoreMetric();
855                 SvxFontHeightItem aItem( CalcToUnit( fSize, eUnit ), 100, SID_ATTR_CHAR_FONTHEIGHT ) ;
856 
857                 mpBindings->GetDispatcher()->Execute( SID_ATTR_CHAR_FONTHEIGHT, SFX_CALLMODE_RECORD, &aItem, 0L );
858                 mpBindings->Invalidate(SID_ATTR_CHAR_FONTHEIGHT,true,false);
859                 //add
860                 maFontSizeBox.SetValue( nSize );
861                 if(nSize >= 960)
862                 {
863                     mpToolBoxIncDec->EnableItem(TBI_INCREASE,false);
864                     mpToolBoxIncDec->EnableItem(TBI_DECREASE,true);
865                 }
866                 else if(nSize <= 60)
867                 {
868                     mpToolBoxIncDec->EnableItem(TBI_INCREASE,true);
869                     mpToolBoxIncDec->EnableItem(TBI_DECREASE,false);
870                 }
871                 else
872                 {
873                     mpToolBoxIncDec->EnableItem(TBI_INCREASE,true);
874                     mpToolBoxIncDec->EnableItem(TBI_DECREASE,true);
875                 }
876                 //add end
877             }
878     }
879     return 0;
880 }
881 
882 
883 
884 
885 IMPL_LINK(TextPropertyPanel, ToolBoxUnderlineClickHdl, ToolBox*, pToolBox)
886 {
887     const sal_uInt16 nId = pToolBox->GetCurItemId();
888     if(nId == TBI_UNDERLINE)
889     {
890         pToolBox->SetItemDown( nId, true );
891 
892         /**AF
893         SvxTextUnderlinePage* pUnderlinePage = GetUnderlinePage();
894         Size aFloatSz = pUnderlinePage->GetOutputSizePixel();
895         GetUnderlineFloatWin()->SetSizePixel( aFloatSz );
896 
897         Point aPos = mpToolBoxFont->GetPosPixel();
898         aPos = OutputToScreenPixel( aPos );
899         Size aSize = mpToolBoxFont->GetSizePixel();
900         Rectangle aRect( aPos, aSize );
901 
902         GetUnderlineFloatWin()->StartPopupMode( aRect, FLOATWIN_POPUPMODE_NOFOCUSCLOSE|FLOATWIN_POPUPMODE_DOWN );
903         GetUnderlineFloatWin()->SetPopupModeFlags(GetUnderlineFloatWin()->GetPopupModeFlags() | FLOATWIN_POPUPMODE_NOAPPFOCUSCLOSE );
904         pUnderlinePage->SetUnderlineSelect(meUnderline);
905         */
906     }
907     return 0;
908 }
909 
910 
911 
912 
913 IMPL_LINK(TextPropertyPanel, ToolBoxFontColorDropHdl,ToolBox*, pToolBox)
914 {
915     const sal_uInt16 nId = pToolBox->GetCurItemId();
916     if(nId == TBI_FONTCOLOR)
917     {
918         meColorType = FONT_COLOR;
919 
920         pToolBox->SetItemDown( nId, true );
921 
922         /*AF
923         SvxTextFontColorPage* pFontColorPage = GetFontColorPage();
924 
925         Size aFloatSz = pFontColorPage->GetOutputSizePixel();
926         GetFontColorFloatWin()->SetSizePixel( aFloatSz );
927 
928         Point aPos = mpToolBoxFontColor->GetPosPixel();
929         aPos = OutputToScreenPixel( aPos );
930         Size aSize = mpToolBoxFontColor->GetSizePixel();
931         Rectangle aRect( aPos, aSize );
932 
933         GetFontColorFloatWin()->StartPopupMode( aRect, FLOATWIN_POPUPMODE_NOFOCUSCLOSE|FLOATWIN_POPUPMODE_DOWN );
934         GetFontColorFloatWin()->SetPopupModeFlags(GetFontColorFloatWin()->GetPopupModeFlags() | FLOATWIN_POPUPMODE_NOAPPFOCUSCLOSE );
935 
936         pFontColorPage->GetFocus();
937         pFontColorPage->SetCurColorSelect(maColor, mbColorAvailable);
938         */
939     }
940     return 0;
941 }
942 
943 
944 
945 
946 IMPL_LINK(TextPropertyPanel, ToolBoxSwScriptSelectHdl, ToolBox*, pToolBox)
947 {
948     const sal_uInt16 nId = pToolBox->GetCurItemId();
949     if( nId == TBI_SUPER_SW )
950     {
951         if(meEscape != SVX_ESCAPEMENT_SUPERSCRIPT)
952         {
953             meEscape = SVX_ESCAPEMENT_SUPERSCRIPT;
954             SvxEscapementItem aSupItem(DFLT_ESC_SUPER, DFLT_ESC_PROP, SID_ATTR_CHAR_ESCAPEMENT);
955             mpBindings->GetDispatcher()->Execute( SID_ATTR_CHAR_ESCAPEMENT, SFX_CALLMODE_RECORD, &aSupItem, 0L );
956         }
957         else
958         {
959             meEscape = SVX_ESCAPEMENT_OFF;
960             SvxEscapementItem aNoneItem(0, 100, SID_ATTR_CHAR_ESCAPEMENT);
961             mpBindings->GetDispatcher()->Execute( SID_ATTR_CHAR_ESCAPEMENT, SFX_CALLMODE_RECORD, &aNoneItem, 0L );
962         }
963     }
964     else if(TBI_SUB_SW == nId)
965     {
966         if(meEscape != SVX_ESCAPEMENT_SUBSCRIPT)
967         {
968             meEscape = (SvxEscapement)SVX_ESCAPEMENT_SUBSCRIPT;
969             SvxEscapementItem aSubItem(DFLT_ESC_SUB, DFLT_ESC_PROP, SID_ATTR_CHAR_ESCAPEMENT);
970             mpBindings->GetDispatcher()->Execute( SID_ATTR_CHAR_ESCAPEMENT, SFX_CALLMODE_RECORD, &aSubItem, 0L );
971         }
972         else
973         {
974             meEscape = SVX_ESCAPEMENT_OFF;
975             SvxEscapementItem aNoneItem(0, 100, SID_ATTR_CHAR_ESCAPEMENT);
976             mpBindings->GetDispatcher()->Execute( SID_ATTR_CHAR_ESCAPEMENT, SFX_CALLMODE_RECORD, &aNoneItem, 0L );
977         }
978     }
979     UpdateFontScript();
980 
981     return 0;
982 }
983 
984 
985 
986 
987 IMPL_LINK(TextPropertyPanel, ToolBoxScriptSelectHdl, ToolBox*, pToolBox)
988 {
989     const sal_uInt16 nId = pToolBox->GetCurItemId();
990     if( nId == TBI_SUPER )
991     {
992         mbSuper = !mbSuper;
993         SfxBoolItem aSupItem(SID_SET_SUPER_SCRIPT, mbSuper);
994         mpBindings->GetDispatcher()->Execute( SID_SET_SUPER_SCRIPT, SFX_CALLMODE_RECORD, &aSupItem, 0L );
995     }
996     else if(TBI_SUB == nId)
997     {
998 
999         mbSub = !mbSub;
1000         SfxBoolItem aSubItem(SID_SET_SUB_SCRIPT, mbSub );
1001         mpBindings->GetDispatcher()->Execute( SID_SET_SUB_SCRIPT, SFX_CALLMODE_RECORD, &aSubItem, 0L );
1002     }
1003     UpdateFontScript();
1004     return 0;
1005 }
1006 
1007 
1008 
1009 
1010 IMPL_LINK(TextPropertyPanel, ToolBoxHighlightDropHdl, ToolBox*, pToolBox)
1011 {
1012     const sal_uInt16 nId = pToolBox->GetCurItemId();
1013     if(nId == TBI_HIGHLIGHT)
1014     {
1015         meColorType = BACK_COLOR;
1016 
1017         pToolBox->SetItemDown( nId, true );
1018 
1019         /*AF
1020         SvxTextFontColorPage* pFontColorPage = GetFontColorPage();
1021 
1022         Size aFloatSz = pFontColorPage->GetOutputSizePixel();
1023         GetFontColorFloatWin()->SetSizePixel( aFloatSz );
1024 
1025         Point aPos = mpToolBoxHighlight->GetPosPixel();
1026         aPos = OutputToScreenPixel( aPos );
1027         Size aSize = mpToolBoxHighlight->GetSizePixel();
1028         Rectangle aRect( aPos, aSize );
1029 
1030         GetFontColorFloatWin()->StartPopupMode( aRect, FLOATWIN_POPUPMODE_NOFOCUSCLOSE|FLOATWIN_POPUPMODE_DOWN );
1031         GetFontColorFloatWin()->SetPopupModeFlags(GetFontColorFloatWin()->GetPopupModeFlags() | FLOATWIN_POPUPMODE_NOAPPFOCUSCLOSE );
1032 
1033         pFontColorPage->GetFocus();
1034         pFontColorPage->SetCurColorSelect(maBackColor,
1035         mbBackColorAvailable);
1036         */
1037     }
1038     return 0;
1039 }
1040 
1041 
1042 
1043 
1044 IMPL_LINK(TextPropertyPanel, SpacingClickHdl, ToolBox*, pToolBox)
1045 {
1046     const sal_uInt16 nId = pToolBox->GetCurItemId();
1047     if(nId == TBI_SPACING)
1048     {
1049         pToolBox->SetItemDown( nId, true );
1050 
1051         /*AF
1052         SvxTextSpacingPage* pSpacingPage = GetSpacingPage();
1053         pSpacingPage->SetControlState(mbKernLBAvailable,mbKernAvailable,mlKerning);
1054 
1055         Size aFloatSz = pSpacingPage->GetOutputSizePixel();
1056         GetSpacingFloatWin()->SetSizePixel( aFloatSz );
1057 
1058         Point aPos = mpToolBoxSpacing->GetPosPixel();
1059         aPos = OutputToScreenPixel( aPos );
1060         Size aSize = mpToolBoxSpacing->GetSizePixel();
1061         Rectangle aRect( aPos, aSize );
1062 
1063         GetSpacingFloatWin()->StartPopupMode( aRect, FLOATWIN_POPUPMODE_NOFOCUSCLOSE|FLOATWIN_POPUPMODE_DOWN );
1064         GetSpacingFloatWin()->SetPopupModeFlags(GetSpacingFloatWin()->GetPopupModeFlags() | FLOATWIN_POPUPMODE_NOAPPFOCUSCLOSE );
1065         pSpacingPage->GetFocus();
1066         */
1067     }
1068     return 0;
1069 }
1070 
1071 
1072 
1073 
1074 IMPL_LINK( TextPropertyPanel, ImplPopupModeEndHdl, FloatingWindow*, EMPTYARG )
1075 {
1076     return 0;
1077 }
1078 
1079 
1080 
1081 
1082 IMPL_LINK( TextPropertyPanel, ImplSpacingPopupModeEndHdl, FloatingWindow*, EMPTYARG )
1083 {
1084     /*AF
1085     if(mpPageSpacing)
1086     {
1087         if( mpPageSpacing->GetLastCustomState() == SPACING_CLOSE_BY_CUS_EDIT)
1088         {
1089             SvtViewOptions aWinOpt( E_WINDOW, SIDEBAR_SPACING_GLOBAL_VALUE );
1090             ::com::sun::star::uno::Sequence < ::com::sun::star::beans::NamedValue > aSeq(1);
1091             aSeq[0].Name = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Spacing") );
1092             aSeq[0].Value <<= ::rtl::OUString( String::CreateFromInt32( mpPageSpacing->GetLastCustomValue() ));
1093             aWinOpt.SetUserData( aSeq );
1094 
1095         }
1096     }
1097     */
1098     return 0;
1099 }
1100 
1101 
1102 
1103 
1104 void TextPropertyPanel::NotifyItemUpdate (
1105     const sal_uInt16 nSID,
1106     const SfxItemState eState,
1107     const SfxPoolItem* pState)
1108 {
1109     switch(nSID)
1110     {
1111         case SID_ATTR_CHAR_FONT:
1112             if (  eState >= SFX_ITEM_DEFAULT && pState->ISA(SvxFontItem) )
1113             {
1114                 mpFontNameBox->Enable();
1115                 const SvxFontItem* pFontItem = (const SvxFontItem*)pState;
1116                 mpFontNameBox->SetText( pFontItem->GetFamilyName() );
1117             }
1118             else
1119             {
1120                 mpFontNameBox->SetText( String() );
1121                 if (SFX_ITEM_DISABLED == eState)
1122                 {
1123                     mpFontNameBox->Disable();
1124                 }
1125             }
1126             break;
1127         case SID_ATTR_CHAR_FONTHEIGHT:
1128             if (  eState >= SFX_ITEM_DEFAULT && pState->ISA(SvxFontHeightItem) )
1129             {
1130                 mpHeightItem = (SvxFontHeightItem*)pState;//const SvxFontHeightItem*
1131                 SfxMapUnit eUnit = maFontSizeControl.GetCoreMetric();
1132                 long iValue = (long)CalcToPoint( mpHeightItem->GetHeight(), eUnit, 10 );
1133                 mpToolBoxIncDec->Enable();
1134 
1135                 // font size +/- enhancement in sd
1136                 switch(maContext.GetCombinedContext())
1137                 {
1138                     case CombinedEnumContext(Application_Draw, Context_DrawText):
1139                     case CombinedEnumContext(Application_Draw, Context_Text):
1140                     case CombinedEnumContext(Application_Draw, Context_Table):
1141                     case CombinedEnumContext(Application_Draw, Context_OutlineText):
1142                     case CombinedEnumContext(Application_Draw, Context_Draw):
1143                     case CombinedEnumContext(Application_Draw, Context_TextObject):
1144                     case CombinedEnumContext(Application_Draw, Context_Graphic):
1145                     case CombinedEnumContext(Application_Impress, Context_DrawText):
1146                     case CombinedEnumContext(Application_Impress, Context_Text):
1147                     case CombinedEnumContext(Application_Impress, Context_Table):
1148                     case CombinedEnumContext(Application_Impress, Context_OutlineText):
1149                     case CombinedEnumContext(Application_Impress, Context_Draw):
1150                     case CombinedEnumContext(Application_Impress, Context_TextObject):
1151                     case CombinedEnumContext(Application_Impress, Context_Graphic):
1152                         break;
1153 
1154                     default:
1155                         if(iValue > 60 && iValue < 960 )
1156                         {
1157                             mpToolBoxIncDec->EnableItem(TBI_INCREASE,true);
1158                             mpToolBoxIncDec->EnableItem(TBI_DECREASE,true);
1159                         }
1160                         else if (iValue <= 60)
1161                         {
1162                             mpToolBoxIncDec->EnableItem(TBI_INCREASE,true);
1163                             mpToolBoxIncDec->EnableItem(TBI_DECREASE,false);
1164                         }
1165                         else if (iValue >= 960)
1166                         {
1167                             mpToolBoxIncDec->EnableItem(TBI_INCREASE,false);
1168                             mpToolBoxIncDec->EnableItem(TBI_DECREASE,true);
1169                         }
1170                 }
1171                 mpToolBoxIncDec->SetItemState(TBI_INCREASE, STATE_NOCHECK);
1172                 mpToolBoxIncDec->SetItemState(TBI_DECREASE, STATE_NOCHECK);
1173 
1174                 if( mbFocusOnFontSizeCtrl )
1175                     return;
1176 
1177                 maFontSizeBox.Enable( );
1178                 maFontSizeBox.SetValue( iValue );
1179                 maFontSizeBox.LoseFocus();
1180             }
1181             else
1182             {
1183                 mpHeightItem = NULL;
1184                 maFontSizeBox.SetText( String() );
1185                 //increase decrease diabled when multi-seletion have different font size
1186 
1187                 // font size +/- enhancement in sd
1188                 switch(maContext.GetCombinedContext())
1189                 {
1190                     case CombinedEnumContext(Application_Draw, Context_DrawText):
1191                     case CombinedEnumContext(Application_Draw, Context_Text):
1192                     case CombinedEnumContext(Application_Draw, Context_Table):
1193                     case CombinedEnumContext(Application_Draw, Context_OutlineText):
1194                     case CombinedEnumContext(Application_Draw, Context_Draw):
1195                     case CombinedEnumContext(Application_Draw, Context_TextObject):
1196                     case CombinedEnumContext(Application_Draw, Context_Graphic):
1197                     case CombinedEnumContext(Application_Impress, Context_DrawText):
1198                     case CombinedEnumContext(Application_Impress, Context_Text):
1199                     case CombinedEnumContext(Application_Impress, Context_Table):
1200                     case CombinedEnumContext(Application_Impress, Context_OutlineText):
1201                     case CombinedEnumContext(Application_Impress, Context_Draw):
1202                     case CombinedEnumContext(Application_Impress, Context_TextObject):
1203                     case CombinedEnumContext(Application_Impress, Context_Graphic):
1204                         break;
1205 
1206                     default:
1207                         mpToolBoxIncDec->Disable();
1208                 }
1209                 if ( eState <= SFX_ITEM_READONLY )
1210                 {
1211                     maFontSizeBox.Disable( );
1212                 }
1213             }
1214             break;
1215         case SID_ATTR_CHAR_WEIGHT:
1216             mbWeightAvailable = (eState >= SFX_ITEM_DONTCARE);
1217             if( eState >= SFX_ITEM_DEFAULT && pState->ISA(SvxWeightItem))
1218             {
1219                 const SvxWeightItem* pItem = (const SvxWeightItem*)pState;
1220                 meWeight = (FontWeight)pItem->GetValue();
1221                 TextStyleChanged();
1222             }
1223             else
1224             {
1225                 meWeight = WEIGHT_NORMAL;
1226                 TextStyleChanged();
1227             }
1228             break;
1229         case SID_ATTR_CHAR_POSTURE:
1230             mbPostureAvailable = (eState >= SFX_ITEM_DONTCARE);
1231             if( eState >= SFX_ITEM_DEFAULT && pState->ISA(SvxPostureItem))
1232             {
1233                 const SvxPostureItem* pItem = (const SvxPostureItem*)pState;
1234                 meItalic = (FontItalic)pItem->GetValue();
1235                 TextStyleChanged();
1236             }
1237             else
1238             {
1239                 meItalic = ITALIC_NONE;
1240                 TextStyleChanged();
1241             }
1242             break;
1243         case SID_ATTR_CHAR_UNDERLINE:
1244             if( eState >= SFX_ITEM_DEFAULT) //SvxUnderlineItem
1245             {
1246                 //<<delete
1247                 //if(pState->ISA(SvxTextLineItem))
1248                 //{
1249                 //  const SvxTextLineItem* pItem = (const SvxTextLineItem*)pState;
1250                 //  meUnderline = (FontUnderline)pItem->GetValue();
1251                 //   //add , need to record the underline's color, if not the color will turn to auto
1252                 //  meUnderlineColor = pItem->GetColor();
1253                 //  //add end
1254                 //}
1255                 //else
1256                 //delete end>>
1257                 if(pState->ISA(SvxUnderlineItem))
1258                 {
1259                     const SvxUnderlineItem* pItem = (const SvxUnderlineItem*)pState;
1260                     meUnderline = (FontUnderline)pItem->GetValue();
1261                     //add
1262                     meUnderlineColor = pItem->GetColor();
1263                     //add end
1264                 }
1265                 TextStyleChanged();
1266             }
1267             else
1268             {
1269                 meUnderline = UNDERLINE_NONE;
1270                 TextStyleChanged();
1271             }
1272             break;
1273         case SID_ATTR_CHAR_SHADOWED:
1274             if( eState >= SFX_ITEM_DEFAULT && pState->ISA(SvxShadowedItem))
1275             {
1276                 const SvxShadowedItem* pItem = (const SvxShadowedItem*)pState;
1277                 mbShadow = pItem->GetValue();
1278                 TextStyleChanged();
1279             }
1280             else
1281             {
1282                 mbShadow = false;
1283                 TextStyleChanged();
1284             }
1285             break;
1286         case SID_ATTR_CHAR_STRIKEOUT:
1287             if( eState >= SFX_ITEM_DEFAULT && pState->ISA(SvxCrossedOutItem))
1288             {
1289                 const SvxCrossedOutItem* pItem = (const SvxCrossedOutItem*)pState;
1290                 meStrike = (FontStrikeout)pItem->GetValue();
1291 
1292                 TextStyleChanged();
1293             }
1294             else
1295             {
1296                 meStrike = STRIKEOUT_NONE;
1297                 TextStyleChanged();
1298             }
1299             break;
1300         case SID_ATTR_CHAR_COLOR:
1301             if( eState >= SFX_ITEM_DEFAULT && pState->ISA(SvxColorItem))
1302             {
1303                 const SvxBrushItem* pItem =  (const SvxBrushItem*)pState;
1304                 maColor = pItem->GetColor();
1305                 mbColorAvailable = true;
1306                 if (mpFontColorUpdater)
1307                     mpFontColorUpdater->Update(maColor);
1308             }
1309             else
1310             {
1311                 mbColorAvailable = false;
1312                 maColor.SetColor(COL_AUTO);
1313                 if (mpFontColorUpdater)
1314                     mpFontColorUpdater->Update(maColor);
1315             }
1316             break;
1317         case SID_ATTR_BRUSH_CHAR:
1318             if( eState >= SFX_ITEM_DEFAULT && pState->ISA(SvxBrushItem))
1319             {
1320                 const SvxBrushItem* pItem =  (const SvxBrushItem*)pState;
1321                 maBackColor = pItem->GetColor();
1322                 mbBackColorAvailable = true;
1323                 if (mpHighlightUpdater)
1324                     mpHighlightUpdater->Update(maBackColor);
1325             }
1326             else
1327             {
1328                 mbBackColorAvailable = false;
1329                 maBackColor.SetColor(COL_AUTO);
1330                 if (mpHighlightUpdater)
1331                     mpHighlightUpdater->Update(maBackColor);
1332             }
1333             break;
1334         case SID_ATTR_CHAR_ESCAPEMENT:
1335             if( eState == SFX_ITEM_AVAILABLE)
1336             {
1337                 if( pState->ISA(SvxEscapementItem))
1338                 {
1339                     const SvxEscapementItem* pItem = (const SvxEscapementItem *)pState;
1340                     short nEsc = pItem->GetEsc();
1341                     if(nEsc == 0)
1342                         meEscape = SVX_ESCAPEMENT_OFF;
1343                     else if(nEsc > 0)
1344                         meEscape = SVX_ESCAPEMENT_SUPERSCRIPT;
1345                     else
1346                         meEscape = SVX_ESCAPEMENT_SUBSCRIPT;
1347                 }
1348                 else
1349                 {
1350                     meEscape = SVX_ESCAPEMENT_OFF;
1351                 }
1352                 TextStyleChanged();
1353             }
1354             else if(eState == SFX_ITEM_DISABLED)
1355             {
1356                 mpToolBoxScriptSw->EnableItem(TBI_SUPER,false);
1357                 mpToolBoxScriptSw->EnableItem(TBI_SUB,false);
1358             }
1359             else
1360             {
1361                 meEscape = SVX_ESCAPEMENT_OFF;
1362                 TextStyleChanged();
1363             }
1364             break;
1365         case SID_SET_SUB_SCRIPT:
1366             if( eState >= SFX_ITEM_DEFAULT && pState->ISA(SfxBoolItem))
1367             {
1368                 const SfxBoolItem* pItem = (const SfxBoolItem*)pState;
1369                 mbSub = pItem->GetValue();
1370                 TextStyleChanged();
1371             }
1372             else
1373             {
1374                 mbSub = false;
1375                 TextStyleChanged();
1376             }
1377             break;
1378         case SID_SET_SUPER_SCRIPT:
1379             if( eState >= SFX_ITEM_DEFAULT && pState->ISA(SfxBoolItem))
1380             {
1381                 const SfxBoolItem* pItem = (const SfxBoolItem*)pState;
1382                 mbSuper = pItem->GetValue();
1383                 TextStyleChanged();
1384             }
1385             else
1386             {
1387                 mbSuper = false;
1388                 TextStyleChanged();
1389             }
1390             break;
1391         case SID_ATTR_CHAR_KERNING:
1392             if ( SFX_ITEM_AVAILABLE == eState )
1393             {
1394                 mbKernLBAvailable = true;
1395 
1396                 if(pState->ISA(SvxKerningItem))
1397                 {
1398                     const SvxKerningItem* pKerningItem  = (const SvxKerningItem*)pState;
1399                     mlKerning = (long)pKerningItem->GetValue();
1400                     mbKernAvailable = true;
1401                 }
1402                 else
1403                 {
1404                     mlKerning = 0;
1405                     mbKernAvailable =false;
1406                 }
1407             }
1408             else if (SFX_ITEM_DISABLED == eState)
1409             {
1410                 mbKernLBAvailable = false;
1411                 mbKernAvailable = false;
1412                 mlKerning = 0;
1413             }
1414             else
1415             {
1416                 mbKernLBAvailable = true;
1417                 mbKernAvailable = false;
1418                 mlKerning = 0;
1419             }
1420             break;
1421 
1422             // font size +/- enhancement in sd
1423         case SID_SHRINK_FONT_SIZE:
1424         case SID_GROW_FONT_SIZE:
1425                 switch(maContext.GetCombinedContext())
1426                 {
1427                     case CombinedEnumContext(Application_Draw, Context_DrawText):
1428                     case CombinedEnumContext(Application_Draw, Context_Text):
1429                     case CombinedEnumContext(Application_Draw, Context_Table):
1430                     case CombinedEnumContext(Application_Draw, Context_OutlineText):
1431                     case CombinedEnumContext(Application_Draw, Context_Draw):
1432                     case CombinedEnumContext(Application_Draw, Context_TextObject):
1433                     case CombinedEnumContext(Application_Draw, Context_Graphic):
1434                     case CombinedEnumContext(Application_Impress, Context_DrawText):
1435                     case CombinedEnumContext(Application_Impress, Context_Text):
1436                     case CombinedEnumContext(Application_Impress, Context_Table):
1437                     case CombinedEnumContext(Application_Impress, Context_OutlineText):
1438                     case CombinedEnumContext(Application_Impress, Context_Draw):
1439                     case CombinedEnumContext(Application_Impress, Context_TextObject):
1440                     case CombinedEnumContext(Application_Impress, Context_Graphic):
1441                         if(eState == SFX_ITEM_DISABLED)
1442                         {
1443                             mpToolBoxIncDec->Disable();
1444                         }
1445                         else
1446                         {
1447                             mpToolBoxIncDec->Enable();
1448                         }
1449                     break;
1450                 }
1451                 break;
1452     }
1453 }
1454 
1455 
1456 
1457 
1458 void TextPropertyPanel::TextStyleChanged()
1459 {
1460     if( !mbWeightAvailable )
1461         mpToolBoxFont->EnableItem(TBI_BOLD,false);
1462     else
1463         mpToolBoxFont->EnableItem(TBI_BOLD,true);
1464 
1465     if(!mbPostureAvailable )
1466         mpToolBoxFont->EnableItem(TBI_ITALIC,false);
1467     else
1468         mpToolBoxFont->EnableItem(TBI_ITALIC,true);
1469 
1470     UpdateFontBold();
1471     UpdateFontItalic();
1472     UpdateFontUnderline();
1473     UpdateFontStrikeOut();
1474     UpdateFontShadowed();
1475     UpdateFontScript();
1476 }
1477 
1478 
1479 
1480 
1481 void TextPropertyPanel::UpdateFontBold()
1482 {
1483     if( meWeight == WEIGHT_BOLD )
1484     {
1485         mpToolBoxFont->SetItemState(TBI_BOLD,   STATE_CHECK);
1486     }
1487     else
1488     {
1489         mpToolBoxFont->SetItemState(TBI_BOLD,   STATE_NOCHECK);
1490     }
1491 }
1492 void TextPropertyPanel::UpdateFontItalic()
1493 {
1494     if(meItalic == ITALIC_NORMAL)
1495     {
1496         mpToolBoxFont->SetItemState(TBI_ITALIC, STATE_CHECK);
1497     }
1498     else
1499     {
1500         mpToolBoxFont->SetItemState(TBI_ITALIC, STATE_NOCHECK);
1501     }
1502 }
1503 void TextPropertyPanel::UpdateFontUnderline()
1504 {
1505     if(meUnderline == UNDERLINE_NONE)
1506     {
1507         mpToolBoxFont->SetItemState(TBI_UNDERLINE,  STATE_NOCHECK);
1508     }
1509     else
1510     {
1511         mpToolBoxFont->SetItemState(TBI_UNDERLINE,  STATE_CHECK);
1512     }
1513 }
1514 void TextPropertyPanel::UpdateFontStrikeOut()
1515 {
1516     if(meStrike !=  STRIKEOUT_NONE && meStrike != STRIKEOUT_DONTKNOW)
1517     {
1518         mpToolBoxFont->SetItemState(TBI_STRIKEOUT,  STATE_CHECK);
1519     }
1520     else
1521     {
1522         mpToolBoxFont->SetItemState(TBI_STRIKEOUT,  STATE_NOCHECK);
1523     }
1524 }
1525 void TextPropertyPanel::UpdateFontShadowed()
1526 {
1527     if(mbShadow)
1528     {
1529         mpToolBoxFont->SetItemState(TBI_SHADOWED,   STATE_CHECK);
1530     }
1531     else
1532     {
1533         mpToolBoxFont->SetItemState(TBI_SHADOWED,   STATE_NOCHECK);
1534     }
1535 }
1536 void  TextPropertyPanel::UpdateFontScript()
1537 {
1538     //script for sw
1539     mpToolBoxScriptSw->EnableItem(TBI_SUPER,true);
1540     mpToolBoxScriptSw->EnableItem(TBI_SUB,true);
1541     if(meEscape == SVX_ESCAPEMENT_SUPERSCRIPT)
1542     {
1543         mpToolBoxScriptSw->SetItemState(TBI_SUPER_SW,   STATE_CHECK);
1544         mpToolBoxScriptSw->SetItemState(TBI_SUB_SW, STATE_NOCHECK);
1545     }
1546     else if(meEscape == SVX_ESCAPEMENT_SUBSCRIPT)
1547     {
1548         mpToolBoxScriptSw->SetItemState(TBI_SUPER_SW,   STATE_NOCHECK);
1549         mpToolBoxScriptSw->SetItemState(TBI_SUB_SW, STATE_CHECK);
1550     }
1551     else
1552     {
1553         mpToolBoxScriptSw->SetItemState(TBI_SUPER_SW,   STATE_NOCHECK);
1554         mpToolBoxScriptSw->SetItemState(TBI_SUB_SW, STATE_NOCHECK);
1555     }
1556 
1557     //script for sc sd
1558     mpToolBoxScript->EnableItem(TBI_SUPER,true);
1559     mpToolBoxScript->EnableItem(TBI_SUB,true);
1560     if(mbSuper)
1561     {
1562         mpToolBoxScript->SetItemState(TBI_SUPER,    STATE_CHECK);
1563         mpToolBoxScript->SetItemState(TBI_SUB,  STATE_NOCHECK);
1564     }
1565     else if(mbSub)
1566     {
1567         mpToolBoxScript->SetItemState(TBI_SUPER,    STATE_NOCHECK);
1568         mpToolBoxScript->SetItemState(TBI_SUB,  STATE_CHECK);
1569     }
1570     else
1571     {
1572         mpToolBoxScript->SetItemState(TBI_SUPER,    STATE_NOCHECK);
1573         mpToolBoxScript->SetItemState(TBI_SUB,  STATE_NOCHECK);
1574     }
1575 }
1576 
1577 /*
1578 USHORT TextPropertyPanel::GetCurrColorType()
1579 {
1580     return meColorType;
1581 }
1582 long TextPropertyPanel::GetSelFontSize()
1583 {
1584     long nH = 240;
1585     SfxMapUnit eUnit = maSpacingControl.GetCoreMetric();
1586     if (mpHeightItem)
1587         nH = LogicToLogic(  mpHeightItem->GetHeight(), (MapUnit)eUnit, MAP_TWIP );
1588     return nH;
1589 }
1590 SfxPropertyPageController TextPropertyPanel::GetSpaceController()
1591 {
1592     return maSpacingControl;
1593 }
1594 
1595 //add
1596 Color& TextPropertyPanel::GetUnderlineColor()
1597 {
1598     return meUnderlineColor;
1599 }
1600 //add end
1601 void TextPropertyPanel::SetBackColor(Color aCol)
1602 {
1603     maBackColor = aCol;
1604 }
1605 void TextPropertyPanel::SetColor(Color aCol)
1606 {
1607     maColor = aCol;
1608 }
1609 void TextPropertyPanel::SetUnderline(FontUnderline  eUnderline)
1610 {
1611     meUnderline = eUnderline;
1612 }
1613 void TextPropertyPanel::SetSpacing(long nKern)
1614 {
1615     mlKerning = nKern;
1616 }
1617 */
1618 } } // end of namespace svx::sidebar
1619