LCOV - code coverage report
Current view: top level - libreoffice/sd/source/ui/view - drtxtob.cxx (source / functions) Hit Total Coverage
Test: libreoffice_filtered.info Lines: 2 213 0.9 %
Date: 2012-12-27 Functions: 3 14 21.4 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
       2             : /*
       3             :  * This file is part of the LibreOffice project.
       4             :  *
       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/.
       8             :  *
       9             :  * This file incorporates work covered by the following license notice:
      10             :  *
      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 .
      18             :  */
      19             : 
      20             : 
      21             : #include "TextObjectBar.hxx"
      22             : 
      23             : #include <svx/svxids.hrc>
      24             : 
      25             : #include <i18npool/mslangid.hxx>
      26             : #include <editeng/ulspitem.hxx>
      27             : #include <editeng/lspcitem.hxx>
      28             : #include <editeng/adjitem.hxx>
      29             : #include <editeng/editview.hxx>
      30             : #include <editeng/editeng.hxx>
      31             : #include <editeng/outliner.hxx>
      32             : #include <editeng/unolingu.hxx>
      33             : #include <vcl/vclenum.hxx>
      34             : #include <sfx2/app.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 <sfx2/tplpitem.hxx>
      41             : #include <editeng/escpitem.hxx>
      42             : #include <svx/svdoutl.hxx>
      43             : #include <svl/intitem.hxx>
      44             : #include <editeng/scripttypeitem.hxx>
      45             : #include <editeng/outlobj.hxx>
      46             : #include <editeng/writingmodeitem.hxx>
      47             : #include <editeng/frmdiritem.hxx>
      48             : 
      49             : 
      50             : #include <sfx2/objface.hxx>
      51             : 
      52             : #include "app.hrc"
      53             : #include "glob.hrc"
      54             : #include "res_bmp.hrc"
      55             : 
      56             : #include "eetext.hxx"
      57             : 
      58             : #include "drawdoc.hxx"
      59             : #include "DrawViewShell.hxx"
      60             : #include "OutlineViewShell.hxx"
      61             : #include "ViewShellBase.hxx"
      62             : #include "ToolBarManager.hxx"
      63             : #include "futempl.hxx"
      64             : #include "sdresid.hxx"
      65             : #include "Window.hxx"
      66             : #include "OutlineView.hxx"
      67             : 
      68             : 
      69             : using namespace sd;
      70             : using namespace ::com::sun::star;
      71             : 
      72             : #define TextObjectBar
      73             : #include "sdslots.hxx"
      74             : 
      75             : namespace sd {
      76             : 
      77             : /*************************************************************************
      78             : |*
      79             : |* Standardinterface deklarieren (Die Slotmap darf nicht leer sein, also
      80             : |* tragen wir etwas ein, was hier (hoffentlich) nie vorkommt).
      81             : |*
      82             : \************************************************************************/
      83             : 
      84             : 
      85           9 : SFX_IMPL_INTERFACE( TextObjectBar, SfxShell, SdResId(STR_TEXTOBJECTBARSHELL) )
      86             : {
      87           3 : }
      88             : 
      89           0 : TYPEINIT1( TextObjectBar, SfxShell );
      90             : 
      91             : /*************************************************************************
      92             : |*
      93             : |* Standard-Konstruktor
      94             : |*
      95             : \************************************************************************/
      96             : 
      97           0 : TextObjectBar::TextObjectBar (
      98             :     ViewShell* pSdViewSh,
      99             :     SfxItemPool& rItemPool,
     100             :     ::sd::View* pSdView )
     101             :     : SfxShell(pSdViewSh->GetViewShell()),
     102             :       mpViewShell( pSdViewSh ),
     103           0 :       mpView( pSdView )
     104             : {
     105           0 :     SetPool(&rItemPool);
     106             : 
     107           0 :     if( mpView )
     108             :     {
     109           0 :         OutlineView* pOutlinerView = dynamic_cast< OutlineView* >( mpView );
     110           0 :         if( pOutlinerView )
     111             :         {
     112           0 :             SetUndoManager(&pOutlinerView->GetOutliner()->GetUndoManager());
     113             :         }
     114             :         else
     115             :         {
     116           0 :             DrawDocShell* pDocShell = mpView->GetDoc().GetDocSh();
     117           0 :             if( pDocShell )
     118             :             {
     119           0 :                 SetUndoManager(pDocShell->GetUndoManager());
     120           0 :                 DrawViewShell* pDrawViewShell = dynamic_cast< DrawViewShell* >( pSdViewSh );
     121           0 :                 if ( pDrawViewShell )
     122           0 :                     SetRepeatTarget(pSdView);
     123             :             }
     124             :         }
     125             :     }
     126             : 
     127           0 :     SetName( rtl::OUString( "TextObjectBar" ));
     128             : 
     129             :     // SetHelpId( SD_IF_SDDRAWTEXTOBJECTBAR );
     130           0 : }
     131             : 
     132             : /*************************************************************************
     133             : |*
     134             : |* Destruktor
     135             : |*
     136             : \************************************************************************/
     137             : 
     138           0 : TextObjectBar::~TextObjectBar()
     139             : {
     140           0 :     SetRepeatTarget(NULL);
     141           0 : }
     142             : 
     143             : /*************************************************************************
     144             : |*
     145             : |* Status der Attribut-Items
     146             : |*
     147             : \************************************************************************/
     148             : 
     149           0 : void TextObjectBar::GetAttrState( SfxItemSet& rSet )
     150             : {
     151           0 :     SfxWhichIter        aIter( rSet );
     152           0 :     sal_uInt16              nWhich = aIter.FirstWhich();
     153           0 :     SfxItemSet          aAttrSet( mpView->GetDoc().GetPool() );
     154           0 :     SvtLanguageOptions  aLangOpt;
     155           0 :     sal_Bool            bDisableParagraphTextDirection = !aLangOpt.IsCTLFontEnabled();
     156           0 :     sal_Bool            bDisableVerticalText = !aLangOpt.IsVerticalTextEnabled();
     157             : 
     158           0 :     mpView->GetAttributes( aAttrSet );
     159             : 
     160           0 :     while ( nWhich )
     161             :     {
     162           0 :         sal_uInt16 nSlotId = SfxItemPool::IsWhich(nWhich)
     163           0 :             ? GetPool().GetSlotId(nWhich)
     164           0 :             : nWhich;
     165             : 
     166           0 :         switch ( nSlotId )
     167             :         {
     168             :             case SID_ATTR_CHAR_FONT:
     169             :             case SID_ATTR_CHAR_FONTHEIGHT:
     170             :             case SID_ATTR_CHAR_WEIGHT:
     171             :             case SID_ATTR_CHAR_POSTURE:
     172             :             {
     173           0 :                 SvxScriptSetItem aSetItem( nSlotId, GetPool() );
     174           0 :                 aSetItem.GetItemSet().Put( aAttrSet, sal_False );
     175             : 
     176           0 :                 sal_uInt16 nScriptType = mpView->GetScriptType();
     177             : 
     178           0 :                 if( (nSlotId == SID_ATTR_CHAR_FONT) || (nSlotId == SID_ATTR_CHAR_FONTHEIGHT) )
     179             :                 {
     180             :                     // input language should be preferred over
     181             :                     // current cursor position to detect script type
     182           0 :                     OutlinerView* pOLV = mpView->GetTextEditOutlinerView();
     183             : 
     184           0 :                     if (mpView->ISA(OutlineView))
     185             :                     {
     186             :                         pOLV = static_cast<OutlineView*>(mpView)->GetViewByWindow(
     187           0 :                             mpViewShell->GetActiveWindow());
     188             :                     }
     189             : 
     190           0 :                     if(pOLV && !pOLV->GetSelection().HasRange())
     191             :                     {
     192           0 :                         if( mpViewShell && mpViewShell->GetViewShell() && mpViewShell->GetViewShell()->GetWindow() )
     193             :                         {
     194           0 :                             LanguageType nInputLang = mpViewShell->GetViewShell()->GetWindow()->GetInputLanguage();
     195           0 :                             if(nInputLang != LANGUAGE_DONTKNOW && nInputLang != LANGUAGE_SYSTEM)
     196           0 :                                 nScriptType = SvtLanguageOptions::GetScriptTypeOfLanguage( nInputLang );
     197             :                         }
     198             :                     }
     199             :                 }
     200             : 
     201           0 :                 const SfxPoolItem* pI = aSetItem.GetItemOfScript( nScriptType );
     202           0 :                 if( pI )
     203           0 :                     aAttrSet.Put( *pI, nWhich );
     204             :                 else
     205           0 :                     aAttrSet.InvalidateItem( nWhich );
     206             :             }
     207           0 :             break;
     208             : 
     209             : 
     210             :             case SID_STYLE_APPLY:
     211             :             case SID_STYLE_FAMILY2:
     212             :             {
     213           0 :                 SfxStyleSheet* pStyleSheet = mpView->GetStyleSheetFromMarked();
     214           0 :                 if( pStyleSheet )
     215           0 :                     rSet.Put( SfxTemplateItem( nWhich, pStyleSheet->GetName() ) );
     216             :                 else
     217             :                 {
     218           0 :                     rSet.Put( SfxTemplateItem( nWhich, String() ) );
     219             :                 }
     220             :             }
     221           0 :             break;
     222             : 
     223             :             case SID_OUTLINE_LEFT:
     224             :             case SID_OUTLINE_RIGHT:
     225             :             case SID_OUTLINE_UP:
     226             :             case SID_OUTLINE_DOWN:
     227             :             {
     228           0 :                 sal_Bool bDisableLeft     = sal_True;
     229           0 :                 sal_Bool bDisableRight    = sal_True;
     230           0 :                 sal_Bool bDisableUp       = sal_True;
     231           0 :                 sal_Bool bDisableDown     = sal_True;
     232           0 :                 OutlinerView* pOLV = mpView->GetTextEditOutlinerView();
     233             : 
     234           0 :                 if (mpView->ISA(OutlineView))
     235             :                 {
     236             :                     pOLV = static_cast<OutlineView*>(mpView)->GetViewByWindow(
     237           0 :                         mpViewShell->GetActiveWindow());
     238             :                 }
     239             : 
     240           0 :                 sal_Bool bOutlineViewSh = mpViewShell->ISA(OutlineViewShell);
     241             : 
     242           0 :                 if (pOLV &&
     243           0 :                     ( pOLV->GetOutliner()->GetMode() == OUTLINERMODE_OUTLINEOBJECT || bOutlineViewSh ) )
     244             :                 {
     245             :                     // Outliner im Gliederungsmodus
     246           0 :                     ::Outliner* pOutl = pOLV->GetOutliner();
     247             : 
     248           0 :                     std::vector<Paragraph*> aSelList;
     249           0 :                     pOLV->CreateSelectionList(aSelList);
     250           0 :                     Paragraph* pPara = aSelList.empty() ? NULL : *(aSelList.begin());
     251             : 
     252             :                     // find out if we are a OutlineView
     253           0 :                     sal_Bool bIsOutlineView(OUTLINERMODE_OUTLINEVIEW == pOLV->GetOutliner()->GetMode());
     254             : 
     255             :                     // This is ONLY for OutlineViews
     256           0 :                     if(bIsOutlineView)
     257             :                     {
     258             :                         // allow move up if position is 2 or greater OR it
     259             :                         // is a title object (and thus depth==1)
     260           0 :                         if(pOutl->GetAbsPos(pPara) > 1 || ( pOutl->HasParaFlag(pPara,PARAFLAG_ISPAGE) && pOutl->GetAbsPos(pPara) > 0 ) )
     261             :                         {
     262             :                             // Nicht ganz oben
     263           0 :                             bDisableUp = sal_False;
     264             :                         }
     265             :                     }
     266             :                     else
     267             :                     {
     268             :                         // old behaviour for OUTLINERMODE_OUTLINEOBJECT
     269           0 :                         if(pOutl->GetAbsPos(pPara) > 0)
     270             :                         {
     271             :                             // Nicht ganz oben
     272           0 :                             bDisableUp = sal_False;
     273             :                         }
     274             :                     }
     275             : 
     276           0 :                     for (std::vector<Paragraph*>::const_iterator iter = aSelList.begin(); iter != aSelList.end(); ++iter)
     277             :                     {
     278           0 :                         pPara = *iter;
     279             : 
     280           0 :                         sal_Int16 nDepth = pOutl->GetDepth( (sal_uInt16) pOutl->GetAbsPos( pPara ) );
     281             : 
     282           0 :                         if (nDepth > 0 || (bOutlineViewSh && (nDepth <= 0) && !pOutl->HasParaFlag( pPara, PARAFLAG_ISPAGE )) )
     283             :                         {
     284             :                             // Nicht minimale Tiefe
     285           0 :                             bDisableLeft = sal_False;
     286             :                         }
     287             : 
     288           0 :                         if( (nDepth < pOLV->GetOutliner()->GetMaxDepth() && ( !bOutlineViewSh || pOutl->GetAbsPos(pPara) != 0 )) ||
     289           0 :                             (bOutlineViewSh && (nDepth <= 0) && pOutl->HasParaFlag( pPara, PARAFLAG_ISPAGE ) && pOutl->GetAbsPos(pPara) != 0) )
     290             :                         {
     291             :                             // Nicht maximale Tiefe und nicht ganz oben
     292           0 :                             bDisableRight = sal_False;
     293             :                         }
     294             :                     }
     295             : 
     296           0 :                     if ( ( pOutl->GetAbsPos(pPara) < pOutl->GetParagraphCount() - 1 ) &&
     297           0 :                          ( pOutl->GetParagraphCount() > 1 || !bOutlineViewSh) )
     298             :                     {
     299             :                         // Nicht letzter Absatz
     300           0 :                         bDisableDown = sal_False;
     301             :                     }
     302             : 
     303             :                     // disable when first para and 2nd is not a title
     304           0 :                     pPara = aSelList.empty() ? NULL : *(aSelList.begin());
     305             : 
     306           0 :                     if(!bDisableDown && bIsOutlineView
     307             :                         && pPara
     308           0 :                         && 0 == pOutl->GetAbsPos(pPara)
     309           0 :                         && pOutl->GetParagraphCount() > 1
     310           0 :                         && !pOutl->HasParaFlag( pOutl->GetParagraph(1), PARAFLAG_ISPAGE ) )
     311             :                     {
     312             :                         // Needs to be disabled
     313           0 :                         bDisableDown = sal_True;
     314           0 :                     }
     315             :                 }
     316             : 
     317           0 :                 if (bDisableLeft)
     318           0 :                     rSet.DisableItem(SID_OUTLINE_LEFT);
     319           0 :                 if (bDisableRight)
     320           0 :                     rSet.DisableItem(SID_OUTLINE_RIGHT);
     321           0 :                 if (bDisableUp)
     322           0 :                     rSet.DisableItem(SID_OUTLINE_UP);
     323           0 :                 if (bDisableDown)
     324           0 :                     rSet.DisableItem(SID_OUTLINE_DOWN);
     325             :             }
     326           0 :             break;
     327             : 
     328             :             case SID_TEXTDIRECTION_LEFT_TO_RIGHT:
     329             :             case SID_TEXTDIRECTION_TOP_TO_BOTTOM:
     330             :             {
     331           0 :                 if ( bDisableVerticalText )
     332             :                 {
     333           0 :                     rSet.DisableItem( SID_TEXTDIRECTION_LEFT_TO_RIGHT );
     334           0 :                     rSet.DisableItem( SID_TEXTDIRECTION_TOP_TO_BOTTOM );
     335             :                 }
     336             :                 else
     337             :                 {
     338           0 :                     sal_Bool bLeftToRight = sal_True;
     339             : 
     340           0 :                     SdrOutliner* pOutl = mpView->GetTextEditOutliner();
     341           0 :                     if( pOutl )
     342             :                     {
     343           0 :                         if( pOutl->IsVertical() )
     344           0 :                             bLeftToRight = sal_False;
     345             :                     }
     346             :                     else
     347           0 :                         bLeftToRight = ( (const SvxWritingModeItem&) aAttrSet.Get( SDRATTR_TEXTDIRECTION ) ).GetValue() == com::sun::star::text::WritingMode_LR_TB;
     348             : 
     349           0 :                     rSet.Put( SfxBoolItem( SID_TEXTDIRECTION_LEFT_TO_RIGHT, bLeftToRight ) );
     350           0 :                     rSet.Put( SfxBoolItem( SID_TEXTDIRECTION_TOP_TO_BOTTOM, !bLeftToRight ) );
     351             : 
     352           0 :                     if( !bLeftToRight )
     353           0 :                         bDisableParagraphTextDirection = sal_True;
     354             :                 }
     355             :             }
     356           0 :             break;
     357             : 
     358             :             case SID_GROW_FONT_SIZE:
     359             :             case SID_SHRINK_FONT_SIZE:
     360             :             {
     361             :                 // todo
     362             :             }
     363           0 :             break;
     364             : 
     365             :             case SID_THES:
     366             :             {
     367           0 :                 if( mpView && mpView->GetTextEditOutlinerView() )
     368             :                 {
     369           0 :                     EditView & rEditView = mpView->GetTextEditOutlinerView()->GetEditView();
     370           0 :                     String          aStatusVal;
     371           0 :                     LanguageType    nLang = LANGUAGE_NONE;
     372           0 :                     bool bIsLookUpWord = GetStatusValueForThesaurusFromContext( aStatusVal, nLang, rEditView );
     373           0 :                     rSet.Put( SfxStringItem( SID_THES, aStatusVal ) );
     374             : 
     375             :                     // disable "Thesaurus" context menu entry if there is nothing to look up
     376           0 :                     uno::Reference< linguistic2::XThesaurus > xThes( LinguMgr::GetThesaurus() );
     377           0 :                     if (!bIsLookUpWord ||
     378           0 :                         !xThes.is() || nLang == LANGUAGE_NONE || !xThes->hasLocale( LanguageTag( nLang). getLocale() ))
     379           0 :                         rSet.DisableItem( SID_THES );
     380             :                 }
     381             :                 else
     382             :                 {
     383           0 :                     rSet.DisableItem( SID_THES );
     384             :                 }
     385             :                 //! avoid puting the same item as SfxBoolItem at the end of this function
     386           0 :                 nSlotId = 0;
     387             :             }
     388           0 :             break;
     389             : 
     390             :             default:
     391           0 :             break;
     392             :         }
     393             : 
     394           0 :         nWhich = aIter.NextWhich();
     395             :     }
     396             : 
     397           0 :     rSet.Put( aAttrSet, sal_False ); // <- sal_False, damit DontCare-Status uebernommen wird
     398             : 
     399             : 
     400             :     // die sind im Gliederungsmodus disabled
     401           0 :     if (!mpViewShell->ISA(DrawViewShell))
     402             :     {
     403           0 :         rSet.DisableItem( SID_ATTR_PARA_ADJUST_LEFT );
     404           0 :         rSet.DisableItem( SID_ATTR_PARA_ADJUST_RIGHT );
     405           0 :         rSet.DisableItem( SID_ATTR_PARA_ADJUST_CENTER );
     406           0 :         rSet.DisableItem( SID_ATTR_PARA_ADJUST_BLOCK );
     407           0 :         rSet.DisableItem( SID_ATTR_PARA_LINESPACE_10 );
     408           0 :         rSet.DisableItem( SID_ATTR_PARA_LINESPACE_15 );
     409           0 :         rSet.DisableItem( SID_ATTR_PARA_LINESPACE_20 );
     410           0 :         rSet.DisableItem( SID_PARASPACE_INCREASE );
     411           0 :         rSet.DisableItem( SID_PARASPACE_DECREASE );
     412           0 :         rSet.DisableItem( SID_TEXTDIRECTION_TOP_TO_BOTTOM );
     413           0 :         rSet.DisableItem( SID_TEXTDIRECTION_LEFT_TO_RIGHT );
     414           0 :         rSet.DisableItem( SID_ATTR_PARA_LEFT_TO_RIGHT );
     415           0 :         rSet.DisableItem( SID_ATTR_PARA_RIGHT_TO_LEFT );
     416             :     }
     417             :     else
     418             :     {
     419             :         // Absatzabstand
     420           0 :         OutlinerView* pOLV = mpView->GetTextEditOutlinerView();
     421           0 :         if( pOLV )
     422             :         {
     423           0 :             ESelection aSel = pOLV->GetSelection();
     424           0 :             aSel.Adjust();
     425           0 :             sal_uLong nStartPara = aSel.nStartPara;
     426           0 :             sal_uLong nEndPara = aSel.nEndPara;
     427           0 :             if( !aSel.HasRange() )
     428             :             {
     429           0 :                 nStartPara = 0;
     430           0 :                 nEndPara = pOLV->GetOutliner()->GetParagraphCount() - 1;
     431             :             }
     432           0 :             long nUpper = 0L;
     433           0 :             for( sal_uLong nPara = nStartPara; nPara <= nEndPara; nPara++ )
     434             :             {
     435           0 :                 const SfxItemSet& rItems = pOLV->GetOutliner()->GetParaAttribs( (sal_uInt16)nPara );
     436           0 :                 const SvxULSpaceItem& rItem = (const SvxULSpaceItem&) rItems.Get( EE_PARA_ULSPACE );
     437           0 :                 nUpper = Max( nUpper, (long)rItem.GetUpper() );
     438           0 :             }
     439           0 :             if( nUpper == 0L )
     440           0 :                 rSet.DisableItem( SID_PARASPACE_DECREASE );
     441             :         }
     442             :         else
     443             :         {
     444             :             // Wird zur Zeit nie disabled !
     445             :             //rSet.DisableItem( SID_PARASPACE_INCREASE );
     446             :             //rSet.DisableItem( SID_PARASPACE_DECREASE );
     447             :         }
     448             : 
     449             :         // Absatzausrichtung
     450           0 :         SvxAdjust eAdj = ( (const SvxAdjustItem&) aAttrSet.Get( EE_PARA_JUST ) ).GetAdjust();
     451           0 :         switch( eAdj )
     452             :         {
     453             :             case SVX_ADJUST_LEFT:
     454           0 :                 rSet.Put( SfxBoolItem( SID_ATTR_PARA_ADJUST_LEFT, sal_True ) );
     455           0 :             break;
     456             :             case SVX_ADJUST_CENTER:
     457           0 :                 rSet.Put( SfxBoolItem( SID_ATTR_PARA_ADJUST_CENTER, sal_True ) );
     458           0 :             break;
     459             :             case SVX_ADJUST_RIGHT:
     460           0 :                 rSet.Put( SfxBoolItem( SID_ATTR_PARA_ADJUST_RIGHT, sal_True ) );
     461           0 :             break;
     462             :             case SVX_ADJUST_BLOCK:
     463           0 :                 rSet.Put( SfxBoolItem( SID_ATTR_PARA_ADJUST_BLOCK, sal_True ) );
     464           0 :             break;
     465             :             default:
     466           0 :             break;
     467             :         }
     468             : 
     469             :         // paragraph text direction
     470           0 :         if( bDisableParagraphTextDirection )
     471             :         {
     472           0 :             rSet.DisableItem( SID_ATTR_PARA_LEFT_TO_RIGHT );
     473           0 :             rSet.DisableItem( SID_ATTR_PARA_RIGHT_TO_LEFT );
     474             :         }
     475             :         else
     476             :         {
     477           0 :             switch( ( ( (SvxFrameDirectionItem&) aAttrSet.Get( EE_PARA_WRITINGDIR ) ) ).GetValue() )
     478             :             {
     479             :                 case FRMDIR_VERT_TOP_LEFT:
     480             :                 case FRMDIR_VERT_TOP_RIGHT:
     481             :                 {
     482           0 :                     rSet.DisableItem( SID_ATTR_PARA_LEFT_TO_RIGHT );
     483           0 :                     rSet.DisableItem( SID_ATTR_PARA_RIGHT_TO_LEFT );
     484             :                 }
     485           0 :                 break;
     486             : 
     487             :                 case FRMDIR_HORI_LEFT_TOP:
     488           0 :                     rSet.Put( SfxBoolItem( SID_ATTR_PARA_LEFT_TO_RIGHT, sal_True ) );
     489           0 :                     rSet.Put( SfxBoolItem( SID_ATTR_PARA_RIGHT_TO_LEFT, sal_False ) );
     490           0 :                 break;
     491             : 
     492             :                 case FRMDIR_HORI_RIGHT_TOP:
     493           0 :                     rSet.Put( SfxBoolItem( SID_ATTR_PARA_LEFT_TO_RIGHT, sal_False ) );
     494           0 :                     rSet.Put( SfxBoolItem( SID_ATTR_PARA_RIGHT_TO_LEFT, sal_True ) );
     495           0 :                 break;
     496             : 
     497             :                 // The case for the superordinate object is missing.
     498             :                 case FRMDIR_ENVIRONMENT:
     499             :                 {
     500           0 :                     SdDrawDocument& rDoc = mpView->GetDoc();
     501           0 :                     ::com::sun::star::text::WritingMode eMode = rDoc.GetDefaultWritingMode();
     502           0 :                     sal_Bool bIsLeftToRight(sal_False);
     503             : 
     504           0 :                     if(::com::sun::star::text::WritingMode_LR_TB == eMode
     505             :                         || ::com::sun::star::text::WritingMode_TB_RL == eMode)
     506             :                     {
     507           0 :                         bIsLeftToRight = sal_True;
     508             :                     }
     509             : 
     510           0 :                     rSet.Put( SfxBoolItem( SID_ATTR_PARA_LEFT_TO_RIGHT, bIsLeftToRight ) );
     511           0 :                     rSet.Put( SfxBoolItem( SID_ATTR_PARA_RIGHT_TO_LEFT, !bIsLeftToRight ) );
     512             :                 }
     513           0 :                 break;
     514             :             }
     515             :         }
     516             : 
     517             :         sal_uInt16 nLineSpace = (sal_uInt16) ( (const SvxLineSpacingItem&) aAttrSet.
     518           0 :                             Get( EE_PARA_SBL ) ).GetPropLineSpace();
     519           0 :         switch( nLineSpace )
     520             :         {
     521             :             case 100:
     522           0 :                 rSet.Put( SfxBoolItem( SID_ATTR_PARA_LINESPACE_10, sal_True ) );
     523           0 :             break;
     524             :             case 150:
     525           0 :                 rSet.Put( SfxBoolItem( SID_ATTR_PARA_LINESPACE_15, sal_True ) );
     526           0 :             break;
     527             :             case 200:
     528           0 :                 rSet.Put( SfxBoolItem( SID_ATTR_PARA_LINESPACE_20, sal_True ) );
     529           0 :             break;
     530             :         }
     531             :     }
     532             : 
     533             :     // Ausrichtung (hoch/tief) wird auch im Gliederungsmodus gebraucht
     534             :     SvxEscapement eEsc = (SvxEscapement ) ( (const SvxEscapementItem&)
     535           0 :                     aAttrSet.Get( EE_CHAR_ESCAPEMENT ) ).GetEnumValue();
     536             : 
     537           0 :     if( eEsc == SVX_ESCAPEMENT_SUPERSCRIPT )
     538           0 :         rSet.Put( SfxBoolItem( SID_SET_SUPER_SCRIPT, sal_True ) );
     539           0 :     else if( eEsc == SVX_ESCAPEMENT_SUBSCRIPT )
     540           0 :         rSet.Put( SfxBoolItem( SID_SET_SUB_SCRIPT, sal_True ) );
     541           0 : }
     542             : 
     543             : /*************************************************************************
     544             : |*
     545             : |* Command event
     546             : |*
     547             : \************************************************************************/
     548             : 
     549           0 : void TextObjectBar::Command( const CommandEvent& )
     550             : {
     551           0 : }
     552             : 
     553             : 
     554             : } // end of namespace sd
     555             : 
     556             : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.10