android: Update app-specific/MIME type icons
[LibreOffice.git] / sd / source / ui / view / drtxtob.cxx
blob8b6c0ff221322ecef0336808912d0cddc1c6d1fd
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /*
3 * This file is part of the LibreOffice project.
5 * This Source Code Form is subject to the terms of the Mozilla Public
6 * License, v. 2.0. If a copy of the MPL was not distributed with this
7 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
9 * This file incorporates work covered by the following license notice:
11 * Licensed to the Apache Software Foundation (ASF) under one or more
12 * contributor license agreements. See the NOTICE file distributed
13 * with this work for additional information regarding copyright
14 * ownership. The ASF licenses this file to you under the Apache
15 * License, Version 2.0 (the "License"); you may not use this file
16 * except in compliance with the License. You may obtain a copy of
17 * the License at http://www.apache.org/licenses/LICENSE-2.0 .
20 #include <TextObjectBar.hxx>
22 #include <svx/svxids.hrc>
24 #include <com/sun/star/linguistic2/XThesaurus.hpp>
26 #include <editeng/eeitem.hxx>
27 #include <editeng/udlnitem.hxx>
28 #include <editeng/ulspitem.hxx>
29 #include <editeng/lspcitem.hxx>
30 #include <editeng/adjustitem.hxx>
31 #include <editeng/editview.hxx>
32 #include <editeng/outliner.hxx>
33 #include <editeng/unolingu.hxx>
34 #include <editeng/kernitem.hxx>
35 #include <svl/whiter.hxx>
36 #include <svl/itempool.hxx>
37 #include <svl/stritem.hxx>
38 #include <svl/style.hxx>
39 #include <svl/languageoptions.hxx>
40 #include <svl/cjkoptions.hxx>
41 #include <svl/ctloptions.hxx>
42 #include <sfx2/tplpitem.hxx>
43 #include <editeng/escapementitem.hxx>
44 #include <svx/svdoutl.hxx>
45 #include <editeng/scripttypeitem.hxx>
46 #include <editeng/writingmodeitem.hxx>
47 #include <editeng/frmdiritem.hxx>
48 #include <editeng/fhgtitem.hxx>
49 #include <o3tl/temporary.hxx>
51 #include <sfx2/objface.hxx>
53 #include <drawdoc.hxx>
54 #include <DrawDocShell.hxx>
55 #include <DrawViewShell.hxx>
56 #include <OutlineViewShell.hxx>
57 #include <Window.hxx>
58 #include <OutlineView.hxx>
60 using namespace sd;
61 using namespace ::com::sun::star;
63 #define ShellClass_TextObjectBar
64 #include <sdslots.hxx>
66 namespace sd {
68 /**
69 * Declare default interface (Slotmap must not be empty, therefore enter
70 * something that (hopefully) never occurs.
72 SFX_IMPL_INTERFACE(TextObjectBar, SfxShell)
74 void TextObjectBar::InitInterface_Impl()
79 TextObjectBar::TextObjectBar (
80 ViewShell* pSdViewSh,
81 SfxItemPool& rItemPool,
82 ::sd::View* pSdView )
83 : SfxShell(pSdViewSh->GetViewShell()),
84 mpViewShell( pSdViewSh ),
85 mpView( pSdView )
87 SetPool(&rItemPool);
89 if( mpView )
91 OutlineView* pOutlinerView = dynamic_cast< OutlineView* >( mpView );
92 if( pOutlinerView )
94 SetUndoManager(&pOutlinerView->GetOutliner().GetUndoManager());
96 else
98 DrawDocShell* pDocShell = mpView->GetDoc().GetDocSh();
99 if( pDocShell )
101 SetUndoManager(pDocShell->GetUndoManager());
102 DrawViewShell* pDrawViewShell = dynamic_cast< DrawViewShell* >( pSdViewSh );
103 if ( pDrawViewShell )
104 SetRepeatTarget(pSdView);
109 SetName( "TextObjectBar");
111 // SetHelpId( SD_IF_SDDRAWTEXTOBJECTBAR );
114 TextObjectBar::~TextObjectBar()
116 SetRepeatTarget(nullptr);
119 void TextObjectBar::GetCharState( SfxItemSet& rSet )
121 SfxItemSet aCharAttrSet( mpView->GetDoc().GetPool() );
122 mpView->GetAttributes( aCharAttrSet );
124 SfxItemSetFixed<EE_ITEMS_START,EE_ITEMS_END> aNewAttr( mpViewShell->GetPool() );
126 aNewAttr.Put(aCharAttrSet, false);
127 rSet.Put(aNewAttr, false);
129 SvxKerningItem aKern = aCharAttrSet.Get( EE_CHAR_KERNING );
130 //aKern.SetWhich(SID_ATTR_CHAR_KERNING);
131 rSet.Put(aKern);
133 SfxItemState eState = aCharAttrSet.GetItemState( EE_CHAR_KERNING );
134 if ( eState == SfxItemState::DONTCARE )
136 rSet.InvalidateItem(EE_CHAR_KERNING);
141 * Status of attribute items.
143 void TextObjectBar::GetAttrState( SfxItemSet& rSet )
145 SfxWhichIter aIter( rSet );
146 sal_uInt16 nWhich = aIter.FirstWhich();
147 SfxItemSet aAttrSet( mpView->GetDoc().GetPool() );
148 bool bDisableParagraphTextDirection = !SvtCTLOptions::IsCTLFontEnabled();
149 bool bDisableVerticalText = !SvtCJKOptions::IsVerticalTextEnabled();
151 mpView->GetAttributes( aAttrSet );
153 while ( nWhich )
155 sal_uInt16 nSlotId = SfxItemPool::IsWhich(nWhich)
156 ? GetPool().GetSlotId(nWhich)
157 : nWhich;
159 switch ( nSlotId )
161 case SID_ATTR_CHAR_FONT:
162 case SID_ATTR_CHAR_FONTHEIGHT:
163 case SID_ATTR_CHAR_WEIGHT:
164 case SID_ATTR_CHAR_POSTURE:
165 case SID_ATTR_CHAR_SHADOWED:
166 case SID_ATTR_CHAR_STRIKEOUT:
167 case SID_ATTR_CHAR_CASEMAP:
169 double stretchY = 100.0;
170 SvxScriptSetItem aSetItem( nSlotId, GetPool() );
171 aSetItem.GetItemSet().Put( aAttrSet, false );
173 SvtScriptType nScriptType = mpView->GetScriptType();
175 if( (nSlotId == SID_ATTR_CHAR_FONT) || (nSlotId == SID_ATTR_CHAR_FONTHEIGHT) )
177 // input language should be preferred over
178 // current cursor position to detect script type
179 OutlinerView* pOLV = mpView->GetTextEditOutlinerView();
180 SdrOutliner *pOutliner = mpView->GetTextEditOutliner();
182 assert(mpViewShell);
184 if (OutlineView* pOView = dynamic_cast<OutlineView*>(mpView))
185 pOLV = pOView->GetViewByWindow(mpViewShell->GetActiveWindow());
187 if (pOutliner)
188 pOutliner->getGlobalScale(o3tl::temporary(double()), stretchY, o3tl::temporary(double()), o3tl::temporary(double()));
190 if(pOLV && !pOLV->GetSelection().HasRange())
192 if (mpViewShell->GetViewShell() && mpViewShell->GetViewShell()->GetWindow())
194 LanguageType nInputLang = mpViewShell->GetViewShell()->GetWindow()->GetInputLanguage();
195 if(nInputLang != LANGUAGE_DONTKNOW && nInputLang != LANGUAGE_SYSTEM)
196 nScriptType = SvtLanguageOptions::GetScriptTypeOfLanguage( nInputLang );
201 const SfxPoolItem* pI = aSetItem.GetItemOfScript( nScriptType );
202 if( pI )
204 if( nSlotId == SID_ATTR_CHAR_FONTHEIGHT )
206 SvxFontHeightItem aFontItem = dynamic_cast<const SvxFontHeightItem&>(*pI);
207 aFontItem.SetHeight(aFontItem.GetHeight() * (stretchY / 100.0), 100, aFontItem.GetPropUnit());
208 aFontItem.SetWhich(nWhich);
209 aAttrSet.Put( aFontItem );
211 else
213 aAttrSet.Put( pI->CloneSetWhich(nWhich) );
216 else
218 aAttrSet.InvalidateItem( nWhich );
221 break;
223 case SID_STYLE_APPLY:
224 case SID_STYLE_FAMILY2:
226 SfxStyleSheet* pStyleSheet = mpView->GetStyleSheetFromMarked();
227 if( pStyleSheet )
228 rSet.Put( SfxTemplateItem( nWhich, pStyleSheet->GetName() ) );
229 else
231 rSet.Put( SfxTemplateItem( nWhich, OUString() ) );
234 break;
236 case SID_OUTLINE_LEFT:
237 case SID_OUTLINE_RIGHT:
238 case SID_OUTLINE_UP:
239 case SID_OUTLINE_DOWN:
241 bool bDisableLeft = true;
242 bool bDisableRight = true;
243 bool bDisableUp = true;
244 bool bDisableDown = true;
246 //fdo#78151 it doesn't make sense to promote or demote outline levels in master view.
247 const DrawViewShell* pDrawViewShell = dynamic_cast< DrawViewShell* >(mpViewShell);
248 const bool bInMasterView = pDrawViewShell && pDrawViewShell->GetEditMode() == EditMode::MasterPage;
250 if (!bInMasterView)
252 OutlinerView* pOLV = mpView->GetTextEditOutlinerView();
254 if (OutlineView* pOView = dynamic_cast<OutlineView*>(mpView))
255 pOLV = pOView->GetViewByWindow(mpViewShell->GetActiveWindow());
257 bool bOutlineViewSh = dynamic_cast< const OutlineViewShell *>( mpViewShell ) != nullptr;
259 if (pOLV)
261 // Outliner at outline-mode
262 ::Outliner* pOutl = pOLV->GetOutliner();
264 std::vector<Paragraph*> aSelList;
265 pOLV->CreateSelectionList(aSelList);
266 Paragraph* pPara = aSelList.empty() ? nullptr : *(aSelList.begin());
268 // find out if we are an OutlineView
269 bool bIsOutlineView(OutlinerMode::OutlineView == pOLV->GetOutliner()->GetOutlinerMode());
271 // This is ONLY for OutlineViews
272 if(bIsOutlineView)
274 // allow move up if position is 2 or greater OR it
275 // is a title object (and thus depth==1)
276 if(pOutl->GetAbsPos(pPara) > 1 || ( ::Outliner::HasParaFlag(pPara,ParaFlag::ISPAGE) && pOutl->GetAbsPos(pPara) > 0 ) )
278 // not at top
279 bDisableUp = false;
282 else
284 // old behaviour for OutlinerMode::OutlineObject
285 if(pOutl->GetAbsPos(pPara) > 0)
287 // not at top
288 bDisableUp = false;
292 for (const auto& rpItem : aSelList)
294 pPara = rpItem;
296 sal_Int16 nDepth = pOutl->GetDepth( pOutl->GetAbsPos( pPara ) );
298 if (nDepth > 0 || (bOutlineViewSh && (nDepth <= 0) && !::Outliner::HasParaFlag( pPara, ParaFlag::ISPAGE )) )
300 // not minimum depth
301 bDisableLeft = false;
304 if( (nDepth < pOLV->GetOutliner()->GetMaxDepth() && ( !bOutlineViewSh || pOutl->GetAbsPos(pPara) != 0 )) ||
305 (bOutlineViewSh && (nDepth <= 0) && ::Outliner::HasParaFlag( pPara, ParaFlag::ISPAGE ) && pOutl->GetAbsPos(pPara) != 0) )
307 // not maximum depth and not at top
308 bDisableRight = false;
312 if ( ( pOutl->GetAbsPos(pPara) < pOutl->GetParagraphCount() - 1 ) &&
313 ( pOutl->GetParagraphCount() > 1 || !bOutlineViewSh) )
315 // not last paragraph
316 bDisableDown = false;
319 // disable when first para and 2nd is not a title
320 pPara = aSelList.empty() ? nullptr : *(aSelList.begin());
322 if(!bDisableDown && bIsOutlineView
323 && pPara
324 && 0 == pOutl->GetAbsPos(pPara)
325 && pOutl->GetParagraphCount() > 1
326 && !::Outliner::HasParaFlag( pOutl->GetParagraph(1), ParaFlag::ISPAGE ) )
328 // Needs to be disabled
329 bDisableDown = true;
334 if (bDisableLeft)
335 rSet.DisableItem(SID_OUTLINE_LEFT);
336 if (bDisableRight)
337 rSet.DisableItem(SID_OUTLINE_RIGHT);
338 if (bDisableUp)
339 rSet.DisableItem(SID_OUTLINE_UP);
340 if (bDisableDown)
341 rSet.DisableItem(SID_OUTLINE_DOWN);
343 break;
345 case SID_TEXTDIRECTION_LEFT_TO_RIGHT:
346 case SID_TEXTDIRECTION_TOP_TO_BOTTOM:
348 if ( bDisableVerticalText )
350 rSet.DisableItem( SID_TEXTDIRECTION_LEFT_TO_RIGHT );
351 rSet.DisableItem( SID_TEXTDIRECTION_TOP_TO_BOTTOM );
353 else
355 bool bLeftToRight = true;
357 SdrOutliner* pOutl = mpView->GetTextEditOutliner();
358 if( pOutl )
360 if( pOutl->IsVertical() )
361 bLeftToRight = false;
363 else
364 bLeftToRight = aAttrSet.Get( SDRATTR_TEXTDIRECTION ).GetValue() == css::text::WritingMode_LR_TB;
366 rSet.Put( SfxBoolItem( SID_TEXTDIRECTION_LEFT_TO_RIGHT, bLeftToRight ) );
367 rSet.Put( SfxBoolItem( SID_TEXTDIRECTION_TOP_TO_BOTTOM, !bLeftToRight ) );
369 if( !bLeftToRight )
370 bDisableParagraphTextDirection = true;
373 break;
375 case SID_ULINE_VAL_NONE:
376 case SID_ULINE_VAL_SINGLE:
377 case SID_ULINE_VAL_DOUBLE:
378 case SID_ULINE_VAL_DOTTED:
380 if( aAttrSet.GetItemState( EE_CHAR_UNDERLINE ) >= SfxItemState::DEFAULT )
382 FontLineStyle eLineStyle = aAttrSet.Get(EE_CHAR_UNDERLINE).GetLineStyle();
384 switch (nSlotId)
386 case SID_ULINE_VAL_NONE:
387 rSet.Put(SfxBoolItem(nSlotId, eLineStyle == LINESTYLE_NONE));
388 break;
389 case SID_ULINE_VAL_SINGLE:
390 rSet.Put(SfxBoolItem(nSlotId, eLineStyle == LINESTYLE_SINGLE));
391 break;
392 case SID_ULINE_VAL_DOUBLE:
393 rSet.Put(SfxBoolItem(nSlotId, eLineStyle == LINESTYLE_DOUBLE));
394 break;
395 case SID_ULINE_VAL_DOTTED:
396 rSet.Put(SfxBoolItem(nSlotId, eLineStyle == LINESTYLE_DOTTED));
397 break;
401 break;
403 case SID_GROW_FONT_SIZE:
404 case SID_SHRINK_FONT_SIZE:
406 // todo
408 break;
410 case SID_THES:
412 if (mpView->GetTextEditOutlinerView())
414 EditView & rEditView = mpView->GetTextEditOutlinerView()->GetEditView();
415 OUString aStatusVal;
416 LanguageType nLang = LANGUAGE_NONE;
417 bool bIsLookUpWord = GetStatusValueForThesaurusFromContext( aStatusVal, nLang, rEditView );
418 rSet.Put( SfxStringItem( SID_THES, aStatusVal ) );
420 // disable "Thesaurus" context menu entry if there is nothing to look up
421 uno::Reference< linguistic2::XThesaurus > xThes( LinguMgr::GetThesaurus() );
422 if (!bIsLookUpWord ||
423 !xThes.is() || nLang == LANGUAGE_NONE || !xThes->hasLocale( LanguageTag( nLang). getLocale() ))
424 rSet.DisableItem( SID_THES );
426 else
428 rSet.DisableItem( SID_THES );
431 break;
433 default:
434 break;
437 nWhich = aIter.NextWhich();
440 rSet.Put( aAttrSet, false ); // <- sal_False, so DontCare-Status gets acquired
442 // these are disabled in outline-mode
443 if (!mpViewShell || dynamic_cast< const DrawViewShell *>( mpViewShell ) == nullptr)
445 rSet.DisableItem( SID_ATTR_PARA_ADJUST_LEFT );
446 rSet.DisableItem( SID_ATTR_PARA_ADJUST_RIGHT );
447 rSet.DisableItem( SID_ATTR_PARA_ADJUST_CENTER );
448 rSet.DisableItem( SID_ATTR_PARA_ADJUST_BLOCK );
449 rSet.DisableItem( SID_ATTR_PARA_LINESPACE_10 );
450 rSet.DisableItem( SID_ATTR_PARA_LINESPACE_15 );
451 rSet.DisableItem( SID_ATTR_PARA_LINESPACE_20 );
452 rSet.DisableItem( SID_DEC_INDENT );
453 rSet.DisableItem( SID_INC_INDENT );
454 rSet.DisableItem( SID_PARASPACE_INCREASE );
455 rSet.DisableItem( SID_PARASPACE_DECREASE );
456 rSet.DisableItem( SID_TEXTDIRECTION_TOP_TO_BOTTOM );
457 rSet.DisableItem( SID_TEXTDIRECTION_LEFT_TO_RIGHT );
458 rSet.DisableItem( SID_ATTR_PARA_LEFT_TO_RIGHT );
459 rSet.DisableItem( SID_ATTR_PARA_RIGHT_TO_LEFT );
461 else
463 // paragraph spacing
464 OutlinerView* pOLV = mpView->GetTextEditOutlinerView();
465 if( pOLV )
467 ESelection aSel = pOLV->GetSelection();
468 aSel.Adjust();
469 sal_Int32 nStartPara = aSel.nStartPara;
470 sal_Int32 nEndPara = aSel.nEndPara;
471 if( !aSel.HasRange() )
473 nStartPara = 0;
474 nEndPara = pOLV->GetOutliner()->GetParagraphCount() - 1;
476 ::tools::Long nUpper = 0;
478 for( sal_Int32 nPara = nStartPara; nPara <= nEndPara; nPara++ )
480 const SfxItemSet& rItems = pOLV->GetOutliner()->GetParaAttribs( nPara );
481 const SvxULSpaceItem& rItem = rItems.Get( EE_PARA_ULSPACE );
482 nUpper = std::max( nUpper, static_cast<::tools::Long>(rItem.GetUpper()) );
484 if( nUpper == 0 )
485 rSet.DisableItem( SID_PARASPACE_DECREASE );
487 else
489 // never disabled at the moment!
490 //rSet.DisableItem( SID_PARASPACE_INCREASE );
491 //rSet.DisableItem( SID_PARASPACE_DECREASE );
494 // paragraph justification
495 const SvxLRSpaceItem& aLR = aAttrSet.Get( EE_PARA_LRSPACE );
496 rSet.Put(aLR);
497 SvxAdjust eAdj = aAttrSet.Get( EE_PARA_JUST ).GetAdjust();
498 switch( eAdj )
500 case SvxAdjust::Left:
501 rSet.Put( SfxBoolItem( SID_ATTR_PARA_ADJUST_LEFT, true ) );
502 rSet.Put( SfxBoolItem( SID_ATTR_PARA_ADJUST_CENTER, false ) );
503 rSet.Put( SfxBoolItem( SID_ATTR_PARA_ADJUST_RIGHT, false ) );
504 rSet.Put( SfxBoolItem( SID_ATTR_PARA_ADJUST_BLOCK, false ) );
505 break;
506 case SvxAdjust::Center:
507 rSet.Put( SfxBoolItem( SID_ATTR_PARA_ADJUST_CENTER, true ) );
508 rSet.Put( SfxBoolItem( SID_ATTR_PARA_ADJUST_LEFT, false ) );
509 rSet.Put( SfxBoolItem( SID_ATTR_PARA_ADJUST_RIGHT, false ) );
510 rSet.Put( SfxBoolItem( SID_ATTR_PARA_ADJUST_BLOCK, false ) );
511 break;
512 case SvxAdjust::Right:
513 rSet.Put( SfxBoolItem( SID_ATTR_PARA_ADJUST_RIGHT, true ) );
514 rSet.Put( SfxBoolItem( SID_ATTR_PARA_ADJUST_CENTER, false ) );
515 rSet.Put( SfxBoolItem( SID_ATTR_PARA_ADJUST_LEFT, false ) );
516 rSet.Put( SfxBoolItem( SID_ATTR_PARA_ADJUST_BLOCK, false ) );
517 break;
518 case SvxAdjust::Block:
519 rSet.Put( SfxBoolItem( SID_ATTR_PARA_ADJUST_BLOCK, true ) );
520 rSet.Put( SfxBoolItem( SID_ATTR_PARA_ADJUST_CENTER, false ) );
521 rSet.Put( SfxBoolItem( SID_ATTR_PARA_ADJUST_RIGHT, false ) );
522 rSet.Put( SfxBoolItem( SID_ATTR_PARA_ADJUST_LEFT, false ) );
523 break;
524 default:
525 break;
528 Invalidate(SID_ATTR_PARA_ADJUST_LEFT);
529 Invalidate(SID_ATTR_PARA_ADJUST_CENTER);
530 Invalidate(SID_ATTR_PARA_ADJUST_RIGHT);
531 Invalidate(SID_ATTR_PARA_ADJUST_BLOCK);
532 Invalidate(SID_ATTR_PARA_LINESPACE);
533 Invalidate(SID_ATTR_PARA_ULSPACE);
535 // paragraph text direction
536 if( bDisableParagraphTextDirection )
538 rSet.DisableItem( SID_ATTR_PARA_LEFT_TO_RIGHT );
539 rSet.DisableItem( SID_ATTR_PARA_RIGHT_TO_LEFT );
541 else
543 switch( aAttrSet.Get( EE_PARA_WRITINGDIR ).GetValue() )
545 case SvxFrameDirection::Vertical_LR_TB:
546 case SvxFrameDirection::Vertical_RL_TB:
548 rSet.DisableItem( SID_ATTR_PARA_LEFT_TO_RIGHT );
549 rSet.DisableItem( SID_ATTR_PARA_RIGHT_TO_LEFT );
551 break;
553 case SvxFrameDirection::Horizontal_LR_TB:
554 rSet.Put( SfxBoolItem( SID_ATTR_PARA_LEFT_TO_RIGHT, true ) );
555 rSet.Put( SfxBoolItem( SID_ATTR_PARA_RIGHT_TO_LEFT, false ) );
556 break;
558 case SvxFrameDirection::Horizontal_RL_TB:
559 rSet.Put( SfxBoolItem( SID_ATTR_PARA_LEFT_TO_RIGHT, false ) );
560 rSet.Put( SfxBoolItem( SID_ATTR_PARA_RIGHT_TO_LEFT, true ) );
561 break;
563 // The case for the superordinate object is missing.
564 case SvxFrameDirection::Environment:
566 SdDrawDocument& rDoc = mpView->GetDoc();
567 css::text::WritingMode eMode = rDoc.GetDefaultWritingMode();
568 bool bIsLeftToRight(false);
570 if(css::text::WritingMode_LR_TB == eMode
571 || css::text::WritingMode_TB_RL == eMode)
573 bIsLeftToRight = true;
576 rSet.Put( SfxBoolItem( SID_ATTR_PARA_LEFT_TO_RIGHT, bIsLeftToRight ) );
577 rSet.Put( SfxBoolItem( SID_ATTR_PARA_RIGHT_TO_LEFT, !bIsLeftToRight ) );
579 break;
580 default: break;
584 SvxLRSpaceItem aLRSpace = aAttrSet.Get( EE_PARA_LRSPACE );
585 aLRSpace.SetWhich(SID_ATTR_PARA_LRSPACE);
586 rSet.Put(aLRSpace);
587 Invalidate(SID_ATTR_PARA_LRSPACE);
589 //Added by xuxu
590 SfxItemState eState = aAttrSet.GetItemState( EE_PARA_LRSPACE );
591 if ( eState == SfxItemState::DONTCARE )
593 rSet.InvalidateItem(EE_PARA_LRSPACE);
594 rSet.InvalidateItem(SID_ATTR_PARA_LRSPACE);
596 sal_uInt16 nLineSpace = aAttrSet.Get( EE_PARA_SBL ).GetPropLineSpace();
597 switch( nLineSpace )
599 case 100:
600 rSet.Put( SfxBoolItem( SID_ATTR_PARA_LINESPACE_10, true ) );
601 rSet.Put( SfxBoolItem( SID_ATTR_PARA_LINESPACE_15, false ) );
602 rSet.Put( SfxBoolItem( SID_ATTR_PARA_LINESPACE_20, false ) );
603 break;
604 case 150:
605 rSet.Put( SfxBoolItem( SID_ATTR_PARA_LINESPACE_15, true ) );
606 rSet.Put( SfxBoolItem( SID_ATTR_PARA_LINESPACE_10, false ) );
607 rSet.Put( SfxBoolItem( SID_ATTR_PARA_LINESPACE_20, false ) );
608 break;
609 case 200:
610 rSet.Put( SfxBoolItem( SID_ATTR_PARA_LINESPACE_20, true ) );
611 rSet.Put( SfxBoolItem( SID_ATTR_PARA_LINESPACE_10, false ) );
612 rSet.Put( SfxBoolItem( SID_ATTR_PARA_LINESPACE_15, false ) );
613 break;
617 // justification (superscript, subscript) is also needed in outline-mode
618 SvxEscapement eEsc = static_cast<SvxEscapement>(aAttrSet.Get( EE_CHAR_ESCAPEMENT ).GetEnumValue());
619 rSet.Put(SfxBoolItem(SID_SET_SUPER_SCRIPT, eEsc == SvxEscapement::Superscript));
620 rSet.Put(SfxBoolItem(SID_SET_SUB_SCRIPT, eEsc == SvxEscapement::Subscript));
623 } // end of namespace sd
625 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */