diff options
Diffstat (limited to 'sw/source/ui/frmdlg/wrap.cxx')
-rw-r--r-- | sw/source/ui/frmdlg/wrap.cxx | 785 |
1 files changed, 785 insertions, 0 deletions
diff --git a/sw/source/ui/frmdlg/wrap.cxx b/sw/source/ui/frmdlg/wrap.cxx new file mode 100644 index 000000000000..b313ebd530eb --- /dev/null +++ b/sw/source/ui/frmdlg/wrap.cxx @@ -0,0 +1,785 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +// MARKER(update_precomp.py): autogen include statement, do not remove +#include "precompiled_sw.hxx" + +#ifdef SW_DLLIMPLEMENTATION +#undef SW_DLLIMPLEMENTATION +#endif + + +#include "hintids.hxx" +#include <vcl/graph.hxx> +#include <svx/htmlmode.hxx> +#include <sfx2/objsh.hxx> +#include <svl/intitem.hxx> +#include <editeng/opaqitem.hxx> +#include <editeng/ulspitem.hxx> +#include <editeng/lrspitem.hxx> +// OD 18.09.2003 #i18732# +#include <fmtfollowtextflow.hxx> +#include <svx/swframevalidation.hxx> + + +#include "cmdid.h" +#include "uitool.hxx" +#include "wrtsh.hxx" +#include "swmodule.hxx" +#include "viewopt.hxx" +#include "frmatr.hxx" +#include "frmmgr.hxx" +#include "globals.hrc" +#include "frmui.hrc" +#include "wrap.hrc" +#include "wrap.hxx" + +using namespace ::com::sun::star; + + +/*-------------------------------------------------------------------- + Beschreibung: + --------------------------------------------------------------------*/ + +static USHORT __FAR_DATA aWrapPageRg[] = { + RES_LR_SPACE, RES_UL_SPACE, + RES_PROTECT, RES_SURROUND, + RES_PRINT, RES_PRINT, + 0 +}; + + +/*-------------------------------------------------------------------- + Beschreibung: + --------------------------------------------------------------------*/ + + + +SwWrapDlg::SwWrapDlg(Window* pParent, SfxItemSet& rSet, SwWrtShell* pSh, BOOL bDrawMode) : + SfxSingleTabDialog(pParent, rSet, 0), + pWrtShell(pSh) + +{ + // TabPage erzeugen + SwWrapTabPage* pNewPage = (SwWrapTabPage*) SwWrapTabPage::Create(this, rSet); + pNewPage->SetFormatUsed(FALSE, bDrawMode); + pNewPage->SetShell(pWrtShell); + SetTabPage(pNewPage); + + String sTitle(SW_RES(STR_FRMUI_WRAP)); + SetText(sTitle); +} + + + +SwWrapDlg::~SwWrapDlg() +{ +} + +/*-------------------------------------------------------------------- + Beschreibung: + --------------------------------------------------------------------*/ + + + +SwWrapTabPage::SwWrapTabPage(Window *pParent, const SfxItemSet &rSet) : + SfxTabPage(pParent, SW_RES(TP_FRM_WRAP), rSet), + + aWrapFLC (this, SW_RES(C_WRAP_FL)), + aNoWrapRB (this, SW_RES(RB_NO_WRAP)), + aWrapLeftRB (this, SW_RES(RB_WRAP_LEFT)), + aWrapRightRB (this, SW_RES(RB_WRAP_RIGHT)), + aWrapParallelRB (this, SW_RES(RB_WRAP_PARALLEL)), + aWrapThroughRB (this, SW_RES(RB_WRAP_THROUGH)), + aIdealWrapRB (this, SW_RES(RB_WRAP_IDEAL)), + + aMarginFL (this, SW_RES(FL_MARGIN)), + aLeftMarginFT (this, SW_RES(FT_LEFT_MARGIN)), + aLeftMarginED (this, SW_RES(ED_LEFT_MARGIN)), + aRightMarginFT (this, SW_RES(FT_RIGHT_MARGIN)), + aRightMarginED (this, SW_RES(ED_RIGHT_MARGIN)), + aTopMarginFT (this, SW_RES(FT_TOP_MARGIN)), + aTopMarginED (this, SW_RES(ED_TOP_MARGIN)), + aBottomMarginFT (this, SW_RES(FT_BOTTOM_MARGIN)), + aBottomMarginED (this, SW_RES(ED_BOTTOM_MARGIN)), + + aOptionsSepFL (this, SW_RES(FL_OPTION_SEP)), + aOptionsFL (this, SW_RES(FL_OPTION)), + aWrapAnchorOnlyCB (this, SW_RES(CB_ANCHOR_ONLY)), + aWrapTransparentCB (this, SW_RES(CB_TRANSPARENT)), + aWrapOutlineCB (this, SW_RES(CB_OUTLINE)), + aWrapOutsideCB (this, SW_RES(CB_ONLYOUTSIDE)), + + aWrapIL (SW_RES(IL_WRAP)), + aWrapILH (SW_RES(ILH_WRAP)), + + nAnchorId(FLY_AT_PARA), + nHtmlMode(0), + + pWrtSh(0), + + bFormat(FALSE), + bNew(TRUE), + bHtmlMode(FALSE), + bContourImage(FALSE) + +{ + FreeResource(); + SetExchangeSupport(); + + Link aLk = LINK(this, SwWrapTabPage, RangeModifyHdl); + aLeftMarginED.SetUpHdl(aLk); + aLeftMarginED.SetDownHdl(aLk); + aLeftMarginED.SetFirstHdl(aLk); + aLeftMarginED.SetLastHdl(aLk); + aLeftMarginED.SetLoseFocusHdl(aLk); + + aRightMarginED.SetUpHdl(aLk); + aRightMarginED.SetDownHdl(aLk); + aRightMarginED.SetFirstHdl(aLk); + aRightMarginED.SetLastHdl(aLk); + aRightMarginED.SetLoseFocusHdl(aLk); + + aTopMarginED.SetUpHdl(aLk); + aTopMarginED.SetDownHdl(aLk); + aTopMarginED.SetFirstHdl(aLk); + aTopMarginED.SetLastHdl(aLk); + aTopMarginED.SetLoseFocusHdl(aLk); + + aBottomMarginED.SetUpHdl(aLk); + aBottomMarginED.SetDownHdl(aLk); + aBottomMarginED.SetFirstHdl(aLk); + aBottomMarginED.SetLastHdl(aLk); + aBottomMarginED.SetLoseFocusHdl(aLk); + + aLk = LINK(this, SwWrapTabPage, WrapTypeHdl); + aNoWrapRB.SetClickHdl(aLk); + aWrapLeftRB.SetClickHdl(aLk); + aWrapRightRB.SetClickHdl(aLk); + aWrapParallelRB.SetClickHdl(aLk); + aWrapThroughRB.SetClickHdl(aLk); + aIdealWrapRB.SetClickHdl(aLk); + ApplyImageList(); + aWrapOutlineCB.SetClickHdl(LINK(this, SwWrapTabPage, ContourHdl)); +} + + + +SwWrapTabPage::~SwWrapTabPage() +{ +} + + + +SfxTabPage* SwWrapTabPage::Create(Window *pParent, const SfxItemSet &rSet) +{ + return new SwWrapTabPage(pParent, rSet); +} +/*-------------------------------------------------------------------- + Beschreibung: + --------------------------------------------------------------------*/ + + + +void SwWrapTabPage::Reset(const SfxItemSet &rSet) +{ + //Contour fuer Draw, Grafik und OLE (Einfuegen/Grafik/Eigenschaften fehlt noch!) + if( bDrawMode ) + { + aWrapOutlineCB.Show(); + aWrapOutsideCB.Show(); + + aWrapTransparentCB.Check( 0 == ((const SfxInt16Item&)rSet.Get( + FN_DRAW_WRAP_DLG)).GetValue() ); + aWrapTransparentCB.SaveValue(); + } + else + { + BOOL bShowCB = bFormat; + if( !bFormat ) + { + int nSelType = pWrtSh->GetSelectionType(); + if( ( nSelType & nsSelectionType::SEL_GRF ) || + ( nSelType & nsSelectionType::SEL_OLE && GRAPHIC_NONE != + pWrtSh->GetIMapGraphic().GetType() )) + bShowCB = TRUE; + } + if( bShowCB ) + { + aWrapOutlineCB.Show(); + aWrapOutsideCB.Show(); + } + } + + nHtmlMode = ::GetHtmlMode((const SwDocShell*)SfxObjectShell::Current()); + bHtmlMode = nHtmlMode & HTMLMODE_ON ? TRUE : FALSE; + + FieldUnit aMetric = ::GetDfltMetric(bHtmlMode); + SetMetric( aLeftMarginED , aMetric ); + SetMetric( aRightMarginED , aMetric ); + SetMetric( aTopMarginED , aMetric ); + SetMetric( aBottomMarginED, aMetric ); + + const SwFmtSurround& rSurround = (const SwFmtSurround&)rSet.Get(RES_SURROUND); + + SwSurround nSur = rSurround.GetSurround(); + const SwFmtAnchor &rAnch = (const SwFmtAnchor&)rSet.Get(RES_ANCHOR); + nAnchorId = rAnch.GetAnchorId(); + + if (((nAnchorId == FLY_AT_PARA) || (nAnchorId == FLY_AT_CHAR)) + && (nSur != SURROUND_NONE)) + { + aWrapAnchorOnlyCB.Check( rSurround.IsAnchorOnly() ); + } + else + { + aWrapAnchorOnlyCB.Enable( FALSE ); + } + + BOOL bContour = rSurround.IsContour(); + aWrapOutlineCB.Check( bContour ); + aWrapOutsideCB.Check( rSurround.IsOutside() ); + aWrapThroughRB.Enable(!aWrapOutlineCB.IsChecked()); + bContourImage = !bContour; + + ImageRadioButton* pBtn = NULL; + + switch (nSur) + { + case SURROUND_NONE: + { + pBtn = &aNoWrapRB; + break; + } + + case SURROUND_THROUGHT: + { + // transparent ? + pBtn = &aWrapThroughRB; + + if (!bDrawMode) + { + const SvxOpaqueItem& rOpaque = (const SvxOpaqueItem&)rSet.Get(RES_OPAQUE); + aWrapTransparentCB.Check(!rOpaque.GetValue()); + } + break; + } + + case SURROUND_PARALLEL: + { + pBtn = &aWrapParallelRB; + break; + } + + case SURROUND_IDEAL: + { + pBtn = &aIdealWrapRB; + break; + } + + default: + { + if (nSur == SURROUND_LEFT) + pBtn = &aWrapLeftRB; + else if (nSur == SURROUND_RIGHT) + pBtn = &aWrapRightRB; + } + } + if (pBtn) + { + pBtn->Check(); + WrapTypeHdl(pBtn); + // Hier wird fuer Zeichenobjekte, die im Moment auf Durchlauf stehen, + // schon mal der Default "Kontur an" vorbereitet, falls man spaeter auf + // irgendeinen Umlauf umschaltet. + if (bDrawMode && !aWrapOutlineCB.IsEnabled()) + aWrapOutlineCB.Check(); + } + aWrapTransparentCB.Enable( pBtn == &aWrapThroughRB && !bHtmlMode ); + + const SvxULSpaceItem& rUL = (const SvxULSpaceItem&)rSet.Get(RES_UL_SPACE); + const SvxLRSpaceItem& rLR = (const SvxLRSpaceItem&)rSet.Get(RES_LR_SPACE); + + // Abstand zum Text + aLeftMarginED.SetValue(aLeftMarginED.Normalize(rLR.GetLeft()), FUNIT_TWIP); + aRightMarginED.SetValue(aRightMarginED.Normalize(rLR.GetRight()), FUNIT_TWIP); + aTopMarginED.SetValue(aTopMarginED.Normalize(rUL.GetUpper()), FUNIT_TWIP); + aBottomMarginED.SetValue(aBottomMarginED.Normalize(rUL.GetLower()), FUNIT_TWIP); + + ContourHdl(0); + ActivatePage( rSet ); +} + +/*-------------------------------------------------------------------- + Beschreibung: Attribute in den Set stopfen bei OK + --------------------------------------------------------------------*/ + + + +BOOL SwWrapTabPage::FillItemSet(SfxItemSet &rSet) +{ + BOOL bModified = FALSE; + const SfxPoolItem* pOldItem; + + const SwFmtSurround& rOldSur = (const SwFmtSurround&)GetItemSet().Get(RES_SURROUND); + SwFmtSurround aSur( rOldSur ); + + SvxOpaqueItem aOp( RES_OPAQUE); + + if (!bDrawMode) + { + const SvxOpaqueItem& rOpaque = (const SvxOpaqueItem&)GetItemSet().Get(RES_OPAQUE); + aOp = rOpaque; + aOp.SetValue(TRUE); + } + + if (aNoWrapRB.IsChecked()) + aSur.SetSurround(SURROUND_NONE); + else if (aWrapLeftRB.IsChecked()) + aSur.SetSurround(SURROUND_LEFT); + else if (aWrapRightRB.IsChecked()) + aSur.SetSurround(SURROUND_RIGHT); + else if (aWrapParallelRB.IsChecked()) + aSur.SetSurround(SURROUND_PARALLEL); + else if (aWrapThroughRB.IsChecked()) + { + aSur.SetSurround(SURROUND_THROUGHT); + if (aWrapTransparentCB.IsChecked() && !bDrawMode) + aOp.SetValue(FALSE); + } + else if (aIdealWrapRB.IsChecked()) + aSur.SetSurround(SURROUND_IDEAL); + + aSur.SetAnchorOnly( aWrapAnchorOnlyCB.IsChecked() ); + BOOL bContour = aWrapOutlineCB.IsChecked() && aWrapOutlineCB.IsEnabled(); + aSur.SetContour( bContour ); + + if ( bContour ) + aSur.SetOutside(aWrapOutsideCB.IsChecked()); + + if(0 == (pOldItem = GetOldItem( rSet, RES_SURROUND )) || + aSur != *pOldItem ) + { + rSet.Put(aSur); + bModified = TRUE; + } + + if (!bDrawMode) + { + if(0 == (pOldItem = GetOldItem( rSet, FN_OPAQUE )) || + aOp != *pOldItem ) + { + rSet.Put(aOp); + bModified = TRUE; + } + } + + BOOL bTopMod = aTopMarginED.IsValueModified(); + BOOL bBottomMod = aBottomMarginED.IsValueModified(); + + SvxULSpaceItem aUL( RES_UL_SPACE ); + aUL.SetUpper((USHORT)aTopMarginED.Denormalize(aTopMarginED.GetValue(FUNIT_TWIP))); + aUL.SetLower((USHORT)aBottomMarginED.Denormalize(aBottomMarginED.GetValue(FUNIT_TWIP))); + + if ( bTopMod || bBottomMod ) + { + if(0 == (pOldItem = GetOldItem(rSet, RES_UL_SPACE)) || + aUL != *pOldItem ) + { + rSet.Put( aUL, RES_UL_SPACE ); + bModified = TRUE; + } + } + + BOOL bLeftMod = aLeftMarginED.IsValueModified(); + BOOL bRightMod = aRightMarginED.IsValueModified(); + + SvxLRSpaceItem aLR( RES_LR_SPACE ); + aLR.SetLeft((USHORT)aLeftMarginED.Denormalize(aLeftMarginED.GetValue(FUNIT_TWIP))); + aLR.SetRight((USHORT)aRightMarginED.Denormalize(aRightMarginED.GetValue(FUNIT_TWIP))); + + if ( bLeftMod || bRightMod ) + { + if( 0 == (pOldItem = GetOldItem(rSet, RES_LR_SPACE)) || + aLR != *pOldItem ) + { + rSet.Put(aLR, RES_LR_SPACE); + bModified = TRUE; + } + } + + if ( bDrawMode ) + { + BOOL bChecked = aWrapTransparentCB.IsChecked() & aWrapTransparentCB.IsEnabled(); + if (aWrapTransparentCB.GetSavedValue() != bChecked) + bModified |= 0 != rSet.Put(SfxInt16Item(FN_DRAW_WRAP_DLG, bChecked ? 0 : 1)); + } + + return bModified; +} + +/*-------------------------------------------------------------------- + Beschreibung: Bsp - Update + --------------------------------------------------------------------*/ + + + +void SwWrapTabPage::ActivatePage(const SfxItemSet& rSet) +{ + // Anchor + const SwFmtAnchor &rAnch = (const SwFmtAnchor&)rSet.Get(RES_ANCHOR); + nAnchorId = rAnch.GetAnchorId(); + BOOL bEnable = (nAnchorId != FLY_AS_CHAR); + + if (!bDrawMode) + { + SwWrtShell* pSh = bFormat ? ::GetActiveWrtShell() : pWrtSh; + SwFlyFrmAttrMgr aMgr( bNew, pSh, (const SwAttrSet&)GetItemSet() ); + SvxSwFrameValidation aVal; + + // Size + const SwFmtFrmSize& rFrmSize = (const SwFmtFrmSize&)rSet.Get(RES_FRM_SIZE); + Size aSize = rFrmSize.GetSize(); + + // Rand + const SvxULSpaceItem& rUL = (const SvxULSpaceItem&)rSet.Get(RES_UL_SPACE); + const SvxLRSpaceItem& rLR = (const SvxLRSpaceItem&)rSet.Get(RES_LR_SPACE); + nOldLeftMargin = static_cast< USHORT >(rLR.GetLeft()); + nOldRightMargin = static_cast< USHORT >(rLR.GetRight()); + nOldUpperMargin = static_cast< USHORT >(rUL.GetUpper()); + nOldLowerMargin = static_cast< USHORT >(rUL.GetLower()); + + // Position + const SwFmtHoriOrient& rHori = (const SwFmtHoriOrient&)rSet.Get(RES_HORI_ORIENT); + const SwFmtVertOrient& rVert = (const SwFmtVertOrient&)rSet.Get(RES_VERT_ORIENT); + + aVal.nAnchorType = static_cast< sal_Int16 >(nAnchorId); + aVal.bAutoHeight = rFrmSize.GetHeightSizeType() == ATT_MIN_SIZE; + aVal.bAutoWidth = rFrmSize.GetWidthSizeType() == ATT_MIN_SIZE; + aVal.bMirror = rHori.IsPosToggle(); + // OD 18.09.2003 #i18732# + aVal.bFollowTextFlow = + static_cast<const SwFmtFollowTextFlow&>(rSet.Get(RES_FOLLOW_TEXT_FLOW)).GetValue(); + + aVal.nHoriOrient = (short)rHori.GetHoriOrient(); + aVal.nVertOrient = (short)rVert.GetVertOrient(); + + aVal.nHPos = rHori.GetPos(); + aVal.nHRelOrient = rHori.GetRelationOrient(); + aVal.nVPos = rVert.GetPos(); + aVal.nVRelOrient = rVert.GetRelationOrient(); + + if (rFrmSize.GetWidthPercent() && rFrmSize.GetWidthPercent() != 0xff) + aSize.Width() = aSize.Width() * rFrmSize.GetWidthPercent() / 100; + + if (rFrmSize.GetHeightPercent() && rFrmSize.GetHeightPercent() != 0xff) + aSize.Height() = aSize.Height() * rFrmSize.GetHeightPercent() / 100; + + aVal.nWidth = aSize.Width(); + aVal.nHeight = aSize.Height(); + aFrmSize = aSize; + + aMgr.ValidateMetrics(aVal, 0); + + SwTwips nLeft; + SwTwips nRight; + SwTwips nTop; + SwTwips nBottom; + + nLeft = aVal.nHPos - aVal.nMinHPos; + nRight = aVal.nMaxWidth - aVal.nWidth; + nTop = aVal.nVPos - aVal.nMinVPos; + nBottom = aVal.nMaxHeight - aVal.nHeight; + + if (bHtmlMode && 0 == (nHtmlMode & HTMLMODE_FULL_ABS_POS)) + { + nLeft = nRight = ( nLeft + nRight ) / 2; + nTop = nBottom = ( nTop + nBottom ) / 2; + } + else + { + if (aVal.nAnchorType == FLY_AS_CHAR) + { + nLeft = nRight; + + if (aVal.nVPos < 0) + { + if (aVal.nVPos <= aVal.nMaxHeight) + nTop = aVal.nMaxVPos - aVal.nHeight; + else + nTop = nBottom = 0; // Kein Umlauf + } + else + nTop = aVal.nMaxVPos - aVal.nHeight - aVal.nVPos; + } + else + { + nLeft += nRight; + nTop += nBottom; + } + + nBottom = nTop; + nRight = nLeft; + } + + aLeftMarginED.SetMax(aLeftMarginED.Normalize(nLeft), FUNIT_TWIP); + aRightMarginED.SetMax(aRightMarginED.Normalize(nRight), FUNIT_TWIP); + + aTopMarginED.SetMax(aTopMarginED.Normalize(nTop), FUNIT_TWIP); + aBottomMarginED.SetMax(aBottomMarginED.Normalize(nBottom), FUNIT_TWIP); + + RangeModifyHdl(&aLeftMarginED); + RangeModifyHdl(&aTopMarginED); + } + + const SwFmtSurround& rSurround = (const SwFmtSurround&)rSet.Get(RES_SURROUND); + SwSurround nSur = rSurround.GetSurround(); + + aWrapTransparentCB.Enable( bEnable && !bHtmlMode && nSur == SURROUND_THROUGHT ); + if(bHtmlMode) + { + BOOL bSomeAbsPos = 0 != (nHtmlMode & HTMLMODE_SOME_ABS_POS); + const SwFmtHoriOrient& rHori = (const SwFmtHoriOrient&)rSet.Get(RES_HORI_ORIENT); + sal_Int16 eHOrient = rHori.GetHoriOrient(); + sal_Int16 eHRelOrient = rHori.GetRelationOrient(); + aWrapOutlineCB.Hide(); + const bool bAllHtmlModes = + ((nAnchorId == FLY_AT_PARA) || (nAnchorId == FLY_AT_CHAR)) && + (eHOrient == text::HoriOrientation::RIGHT || eHOrient == text::HoriOrientation::LEFT); + aWrapAnchorOnlyCB.Enable( bAllHtmlModes && nSur != SURROUND_NONE ); + aWrapOutsideCB.Hide(); + aIdealWrapRB.Enable( FALSE ); + + + aWrapTransparentCB.Enable( FALSE ); + aNoWrapRB.Enable( FLY_AT_PARA == nAnchorId ); + aWrapParallelRB.Enable( FALSE ); + aWrapLeftRB .Enable + ( (FLY_AT_PARA == nAnchorId) + || ( (FLY_AT_CHAR == nAnchorId) + && (eHOrient == text::HoriOrientation::RIGHT) + && (eHRelOrient == text::RelOrientation::PRINT_AREA))); + aWrapRightRB .Enable + ( (FLY_AT_PARA == nAnchorId) + || ( (FLY_AT_CHAR == nAnchorId) + && (eHOrient == text::HoriOrientation::LEFT) + && (eHRelOrient == text::RelOrientation::PRINT_AREA))); + + aWrapThroughRB.Enable + ( ( (FLY_AT_PAGE == nAnchorId) + || ( (FLY_AT_CHAR == nAnchorId) + && (eHRelOrient != text::RelOrientation::PRINT_AREA)) + || (FLY_AT_PARA == nAnchorId)) + && bSomeAbsPos + && (eHOrient != text::HoriOrientation::RIGHT)); + if(aNoWrapRB.IsChecked() && !aNoWrapRB.IsEnabled()) + { + if(aWrapThroughRB.IsEnabled()) + aWrapThroughRB.Check(TRUE); + else if(aWrapLeftRB.IsEnabled()) + aWrapLeftRB.Check(); + else if(aWrapRightRB.IsEnabled()) + aWrapRightRB.Check(); + + } + if(aWrapLeftRB.IsChecked() && !aWrapLeftRB.IsEnabled()) + { + if(aWrapRightRB.IsEnabled()) + aWrapRightRB.Check(); + else if(aWrapThroughRB.IsEnabled()) + aWrapThroughRB.Check(); + } + if(aWrapRightRB.IsChecked() && !aWrapRightRB.IsEnabled()) + { + if(aWrapLeftRB.IsEnabled()) + aWrapLeftRB.Check(); + else if(aWrapThroughRB.IsEnabled()) + aWrapThroughRB.Check(); + } + if(aWrapThroughRB.IsChecked() && !aWrapThroughRB.IsEnabled()) + if(aNoWrapRB.IsEnabled()) + aNoWrapRB.Check(); + + if(aWrapParallelRB.IsChecked() && !aWrapParallelRB.IsEnabled()) + aWrapThroughRB.Check(); + } + else + { + aNoWrapRB.Enable( bEnable ); + aWrapLeftRB.Enable( bEnable ); + aWrapRightRB.Enable( bEnable ); + aIdealWrapRB.Enable( bEnable ); + aWrapThroughRB.Enable( bEnable ); + aWrapParallelRB.Enable( bEnable ); + aWrapAnchorOnlyCB.Enable( + ((nAnchorId == FLY_AT_PARA) || (nAnchorId == FLY_AT_CHAR)) + && nSur != SURROUND_NONE ); + } + ContourHdl(0); +} + + + +int SwWrapTabPage::DeactivatePage(SfxItemSet* _pSet) +{ + if(_pSet) + FillItemSet(*_pSet); + + return TRUE; +} + +/*-------------------------------------------------------------------- + Beschreibung: Bereichspruefung + --------------------------------------------------------------------*/ + + + +IMPL_LINK( SwWrapTabPage, RangeModifyHdl, MetricField *, pEdit ) +{ + if(bHtmlMode && 0 == (nHtmlMode & HTMLMODE_FULL_ABS_POS)) + { + sal_Int64 nValue = pEdit->GetValue(); + if (pEdit == &aLeftMarginED) + aRightMarginED.SetUserValue(nValue, FUNIT_NONE); + else if (pEdit == &aRightMarginED) + aLeftMarginED.SetUserValue(nValue, FUNIT_NONE); + else if (pEdit == &aTopMarginED) + aBottomMarginED.SetUserValue(nValue, FUNIT_NONE); + else if (pEdit == &aBottomMarginED) + aTopMarginED.SetUserValue(nValue, FUNIT_NONE); + } + else + { + sal_Int64 nValue = pEdit->GetValue(); + MetricField *pOpposite = 0; + + if (pEdit == &aLeftMarginED) + pOpposite = &aRightMarginED; + else if (pEdit == &aRightMarginED) + pOpposite = &aLeftMarginED; + else if (pEdit == &aTopMarginED) + pOpposite = &aBottomMarginED; + else if (pEdit == &aBottomMarginED) + pOpposite = &aTopMarginED; + + sal_Int64 nOpposite = pOpposite->GetValue(); + + if (nValue + nOpposite > Max(pEdit->GetMax(), pOpposite->GetMax())) + pOpposite->SetValue(pOpposite->GetMax() - nValue); + } + + return 0; +} + +/*-------------------------------------------------------------------- + Beschreibung: + --------------------------------------------------------------------*/ + + + +IMPL_LINK( SwWrapTabPage, WrapTypeHdl, ImageRadioButton *, pBtn ) +{ + BOOL bWrapThrough = (pBtn == &aWrapThroughRB); + aWrapTransparentCB.Enable( bWrapThrough && !bHtmlMode ); + bWrapThrough |= ( nAnchorId == FLY_AS_CHAR ); + aWrapOutlineCB.Enable( !bWrapThrough && pBtn != &aNoWrapRB); + aWrapOutsideCB.Enable( !bWrapThrough && aWrapOutlineCB.IsChecked() ); + aWrapAnchorOnlyCB.Enable( + ((nAnchorId == FLY_AT_PARA) || (nAnchorId == FLY_AT_CHAR)) && + (pBtn != &aNoWrapRB) ); + + ContourHdl(0); + return 0; +} + +/*-------------------------------------------------------------------- + Beschreibung: + --------------------------------------------------------------------*/ + + + +IMPL_LINK( SwWrapTabPage, ContourHdl, CheckBox *, EMPTYARG ) +{ + BOOL bEnable = !(aWrapOutlineCB.IsChecked() && aWrapOutlineCB.IsEnabled()); + + aWrapOutsideCB.Enable(!bEnable); + + bEnable = !aWrapOutlineCB.IsChecked(); + if (bEnable == bContourImage) // damit es nicht immer flackert + { + bContourImage = !bEnable; + ApplyImageList(); + } + + return 0; +} + +/*-------------------------------------------------------------------- + Beschreibung: + --------------------------------------------------------------------*/ +USHORT* SwWrapTabPage::GetRanges() +{ + return aWrapPageRg; +} +/* -----------------------------08.05.2002 14:28------------------------------ + + ---------------------------------------------------------------------------*/ +void SwWrapTabPage::DataChanged( const DataChangedEvent& rDCEvt ) +{ + if ( (rDCEvt.GetType() == DATACHANGED_SETTINGS) && + (rDCEvt.GetFlags() & SETTINGS_STYLE) ) + ApplyImageList(); + + SfxTabPage::DataChanged( rDCEvt ); +} +/* -----------------------------08.05.2002 14:28------------------------------ + + ---------------------------------------------------------------------------*/ +void SwWrapTabPage::ApplyImageList() +{ + ImageList& rImgLst = GetSettings().GetStyleSettings().GetHighContrastMode() ? + aWrapILH : aWrapIL; + + aWrapThroughRB.SetModeRadioImage(rImgLst.GetImage(IMG_THROUGH)); + BOOL bWrapOutline = !aWrapOutlineCB.IsChecked(); + if(bWrapOutline) + { + aNoWrapRB.SetModeRadioImage(rImgLst.GetImage(IMG_NONE)); + aWrapLeftRB.SetModeRadioImage(rImgLst.GetImage(IMG_LEFT)); + aWrapRightRB.SetModeRadioImage(rImgLst.GetImage(IMG_RIGHT)); + aWrapParallelRB.SetModeRadioImage(rImgLst.GetImage(IMG_PARALLEL)); + aIdealWrapRB.SetModeRadioImage(rImgLst.GetImage(IMG_IDEAL)); + } + else + { + aNoWrapRB.SetModeRadioImage(rImgLst.GetImage( IMG_KON_NONE )); + aWrapLeftRB.SetModeRadioImage(rImgLst.GetImage( IMG_KON_LEFT )); + aWrapRightRB.SetModeRadioImage(rImgLst.GetImage( IMG_KON_RIGHT )); + aWrapParallelRB.SetModeRadioImage(rImgLst.GetImage(IMG_KON_PARALLEL )); + aIdealWrapRB.SetModeRadioImage(rImgLst.GetImage( IMG_KON_IDEAL )); + } +} |