blob: 4f7a805cb98556257a68046a21a56c35f559bc04 [file] [log] [blame]
/**************************************************************
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
*************************************************************/
// 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 <tools/list.hxx>
#include <vcl/msgbox.hxx>
#include <svl/stritem.hxx>
#include <svl/intitem.hxx>
#include <svx/htmlmode.hxx>
#include <editeng/keepitem.hxx>
#include <editeng/brkitem.hxx>
#include <editeng/ulspitem.hxx>
#include <editeng/frmdiritem.hxx>
#include <svl/ctloptions.hxx>
#include <swmodule.hxx>
#include <fmtornt.hxx>
#include <fmtpdsc.hxx>
#include <fmtlsplt.hxx>
#include <svtools/htmlcfg.hxx>
#include <fmtrowsplt.hxx>
#include <svx/htmlmode.hxx>
#include "access.hrc"
#ifndef _DOCSH_HXX
#include <docsh.hxx>
#endif
#include <wrtsh.hxx>
#ifndef _VIEW_HXX
#include <view.hxx>
#endif
#include <viewopt.hxx>
#include <uitool.hxx>
#include <frmatr.hxx>
#include <tabledlg.hxx>
#ifndef _TABLEPG_HXX
#include <tablepg.hxx>
#endif
#include <tablemgr.hxx>
#include <pagedesc.hxx>
#include <uiitems.hxx>
#include <poolfmt.hxx>
#include <SwStyleNameMapper.hxx>
#ifndef _CMDID_H
#include <cmdid.h>
#endif
#ifndef _TABLEDLG_HRC
#include <tabledlg.hrc>
#endif
#ifndef _TABLE_HRC
#include <table.hrc>
#endif
#include <svx/svxids.hrc>
#include <svx/dialogs.hrc>
#include <svx/flagsdef.hxx>
#include <svx/svxdlg.hxx>
using namespace ::com::sun::star;
#ifdef DEBUG_TBLDLG
void DbgTblRep(SwTableRep* pRep)
{
DBG_ERROR(String(pRep->GetColCount()))
DBG_ERROR(String(pRep->GetAllColCount()))
SwTwips nSum = 0;
for(sal_uInt16 i = 0; i < pRep->GetAllColCount(); i++)
{
String sMsg(i);
sMsg += pRep->GetColumns()[i].bVisible ? " v " : " h ";
sMsg += pRep->GetColumns()[i].nWidth;
nSum +=pRep->GetColumns()[i].nWidth;
DBG_ERROR(sMsg)
}
String sMsg("Spaltensumme: ");
sMsg += nSum;
sMsg += " Tblbreite: ";
sMsg += pRep->GetWidth();
DBG_ERROR(sMsg)
sMsg = "Gesamt/Links/Rechts: ";
sMsg += pRep->GetSpace();
sMsg += '/';
sMsg += pRep->GetLeftSpace();
sMsg += '/';
sMsg += pRep->GetRightSpace();
DBG_ERROR(sMsg)
sMsg = "Align: ";
sMsg += pRep->GetAlign();
DBG_ERROR(sMsg)
};
#endif
SwFormatTablePage::SwFormatTablePage( Window* pParent, const SfxItemSet& rSet ) :
SfxTabPage(pParent, SW_RES( TP_FORMAT_TABLE ), rSet ),
aOptionsFL(this, SW_RES( FL_OPTIONS )),
aNameFT(this, SW_RES( FT_NAME )),
aNameED(this, SW_RES( ED_NAME )),
aWidthFT(this, SW_RES( FT_WIDTH )),
aWidthMF(this, SW_RES( ED_WIDTH )),
aRelWidthCB(this, SW_RES( CB_REL_WIDTH )),
aPosFL(this, SW_RES( FL_POS )),
aFullBtn(this, SW_RES( RB_FULL )),
aLeftBtn(this, SW_RES( RB_LEFT )),
aFromLeftBtn(this, SW_RES( RB_FROM_LEFT )),
aRightBtn(this, SW_RES( RB_RIGHT )),
aCenterBtn(this, SW_RES( RB_CENTER )),
aFreeBtn(this, SW_RES( RB_FREE )),
aDistFL(this, SW_RES( FL_DIST )),
aLeftFT(this, SW_RES( FT_LEFT_DIST )),
aLeftMF(this, SW_RES( ED_LEFT_DIST )),
aRightFT(this, SW_RES( FT_RIGHT_DIST )),
aRightMF(this, SW_RES( ED_RIGHT_DIST )),
aTopFT (this, SW_RES( FT_TOP_DIST )),
aTopMF(this, SW_RES( ED_TOP_DIST )),
aBottomFT(this, SW_RES( FT_BOTTOM_DIST )),
aBottomMF(this, SW_RES( ED_BOTTOM_DIST )),
aPropertiesFL(this, SW_RES( FL_PROPERTIES )),
aTextDirectionFT(this, SW_RES( FT_TEXTDIRECTION )),
aTextDirectionLB(this, SW_RES( LB_TEXTDIRECTION )),
pTblData(0),
nSaveWidth(0),
nMinTableWidth(MINLAY),
bModified(sal_False),
bFull(0),
bHtmlMode(sal_False)
{
FreeResource();
SetExchangeSupport();
const SfxPoolItem* pItem;
if(SFX_ITEM_SET == rSet.GetItemState(SID_HTML_MODE, sal_False, &pItem))
bHtmlMode = 0 != (((const SfxUInt16Item*)pItem)->GetValue() & HTMLMODE_ON);
sal_Bool bCTL = SW_MOD()->GetCTLOptions().IsCTLFontEnabled();
if( !bHtmlMode && bCTL )
{
aPropertiesFL.Show();
aTextDirectionFT.Show();
aTextDirectionLB.Show();
}
Init();
}
/*------------------------------------------------------------------------
------------------------------------------------------------------------*/
void SwFormatTablePage::Init()
{
aLeftMF.MetricField::SetMin(-999999);
aRightMF.MetricField::SetMin(-999999);
// handler
Link aLk = LINK( this, SwFormatTablePage, AutoClickHdl );
aFullBtn.SetClickHdl( aLk );
aFreeBtn.SetClickHdl( aLk );
aLeftBtn.SetClickHdl( aLk );
aFromLeftBtn.SetClickHdl( aLk );
aRightBtn.SetClickHdl( aLk );
aCenterBtn.SetClickHdl( aLk );
aLk = LINK( this, SwFormatTablePage, UpDownLoseFocusHdl );
aTopMF.SetUpHdl( aLk );
aBottomMF.SetUpHdl( aLk );
aRightMF.SetUpHdl( aLk );
aLeftMF.SetUpHdl( aLk );
aWidthMF.SetUpHdl( aLk );
aTopMF.SetDownHdl( aLk );
aBottomMF.SetDownHdl( aLk );
aRightMF.SetDownHdl( aLk );
aLeftMF.SetDownHdl( aLk );
aWidthMF.SetDownHdl( aLk );
aTopMF.SetLoseFocusHdl( aLk );
aBottomMF.SetLoseFocusHdl( aLk );
aRightMF.SetLoseFocusHdl( aLk );
aLeftMF.SetLoseFocusHdl( aLk );
aWidthMF.SetLoseFocusHdl( aLk );
aRelWidthCB.SetClickHdl(LINK( this, SwFormatTablePage, RelWidthClickHdl ));
}
/*------------------------------------------------------------------------*/
IMPL_LINK( SwFormatTablePage, RelWidthClickHdl, CheckBox *, pBtn )
{
DBG_ASSERT(pTblData, "Tabellendaten nicht da?");
sal_Bool bIsChecked = pBtn->IsChecked();
sal_Int64 nLeft = aLeftMF.DenormalizePercent(aLeftMF.GetValue(FUNIT_TWIP ));
sal_Int64 nRight = aRightMF.DenormalizePercent(aRightMF.GetValue(FUNIT_TWIP ));
aWidthMF.ShowPercent(bIsChecked);
aLeftMF.ShowPercent(bIsChecked);
aRightMF.ShowPercent(bIsChecked);
if (bIsChecked)
{
aWidthMF.SetRefValue(pTblData->GetSpace());
aLeftMF.SetRefValue(pTblData->GetSpace());
aRightMF.SetRefValue(pTblData->GetSpace());
aLeftMF.MetricField::SetMin(0); // wird vom Percentfield ueberschrieben
aRightMF.MetricField::SetMin(0);// -""-
aLeftMF.MetricField::SetMax(99); //
aRightMF.MetricField::SetMax(99);//
aLeftMF.SetPrcntValue(aLeftMF.NormalizePercent(nLeft ), FUNIT_TWIP );
aRightMF.SetPrcntValue(aRightMF.NormalizePercent(nRight ), FUNIT_TWIP );
}
else
ModifyHdl(&aLeftMF); // Werte wieder korrigieren
if(aFreeBtn.IsChecked())
{
sal_Bool bEnable = !pBtn->IsChecked();
aRightMF.Enable(bEnable);
aRightFT.Enable(bEnable);
}
bModified = sal_True;
return 0;
}
/*------------------------------------------------------------------------
------------------------------------------------------------------------*/
IMPL_LINK( SwFormatTablePage, AutoClickHdl, CheckBox *, pBox )
{
sal_Bool bRestore = sal_True,
bLeftEnable = sal_False,
bRightEnable= sal_False,
bWidthEnable= sal_False,
bOthers = sal_True;
if( (RadioButton *) pBox == &aFullBtn )
{
aLeftMF.SetPrcntValue(0);
aRightMF.SetPrcntValue(0);
nSaveWidth = static_cast< SwTwips >(aWidthMF.DenormalizePercent(aWidthMF.GetValue(FUNIT_TWIP )));
aWidthMF.SetPrcntValue(aWidthMF.NormalizePercent(pTblData->GetSpace() ), FUNIT_TWIP );
bFull = sal_True;
bRestore = sal_False;
}
else if( (RadioButton *) pBox == &aLeftBtn )
{
bRightEnable = bWidthEnable = sal_True;
aLeftMF.SetPrcntValue(0);
}
else if( (RadioButton *) pBox == &aFromLeftBtn )
{
bLeftEnable = bWidthEnable = sal_True;
aRightMF.SetPrcntValue(0);
}
else if( (RadioButton *) pBox == &aRightBtn )
{
bLeftEnable = bWidthEnable = sal_True;
aRightMF.SetPrcntValue(0);
}
else if( ( RadioButton * ) pBox == &aCenterBtn )
{
bLeftEnable = bWidthEnable = sal_True;
}
else if( ( RadioButton * ) pBox == &aFreeBtn )
{
RightModifyHdl(&aRightMF);
bLeftEnable = sal_True;
bWidthEnable = sal_True;
bOthers = sal_False;
}
aLeftMF.Enable(bLeftEnable);
aLeftFT.Enable(bLeftEnable);
aWidthMF.Enable(bWidthEnable);
aWidthFT.Enable(bWidthEnable);
if ( bOthers )
{
aRightMF.Enable(bRightEnable);
aRightFT.Enable(bRightEnable);
aRelWidthCB.Enable(bWidthEnable);
}
if(bFull && bRestore)
{
// nachdem auf autom. geschaltet wurde, wurde die Breite gemerkt,
// um sie beim Zurueckschalten restaurieren zu koennen
bFull = sal_False;
aWidthMF.SetPrcntValue(aWidthMF.NormalizePercent(nSaveWidth ), FUNIT_TWIP );
}
ModifyHdl(&aWidthMF);
bModified = sal_True;
return 0;
}
/*----------------------------------------------------------------------*/
IMPL_LINK( SwFormatTablePage, RightModifyHdl, MetricField *, EMPTYARG )
{
if(aFreeBtn.IsChecked())
{
sal_Bool bEnable = aRightMF.GetValue() == 0;
// aWidthMF.Enable(bEnable);
aRelWidthCB.Enable(bEnable);
// aWidthFT.Enable(bEnable);
if ( !bEnable )
{
aRelWidthCB.Check(sal_False);
RelWidthClickHdl(&aRelWidthCB);
}
bEnable = aRelWidthCB.IsChecked();
aRightMF.Enable(!bEnable);
aRightFT.Enable(!bEnable);
}
return 0;
}
/*------------------------------------------------------------------------
------------------------------------------------------------------------*/
IMPL_LINK_INLINE_START( SwFormatTablePage, UpDownLoseFocusHdl, MetricField *, pEdit )
{
if( &aRightMF == pEdit)
RightModifyHdl(pEdit);
ModifyHdl( pEdit );
return 0;
}
IMPL_LINK_INLINE_END( SwFormatTablePage, UpDownLoseFocusHdl, MetricField *, pEdit )
void SwFormatTablePage::ModifyHdl( Edit* pEdit )
{
SwTwips nCurWidth = static_cast< SwTwips >(aWidthMF.DenormalizePercent(aWidthMF.GetValue( FUNIT_TWIP )));
SwTwips nPrevWidth = nCurWidth;
SwTwips nRight = static_cast< SwTwips >(aRightMF.DenormalizePercent(aRightMF.GetValue( FUNIT_TWIP )));
SwTwips nLeft = static_cast< SwTwips >(aLeftMF.DenormalizePercent(aLeftMF.GetValue( FUNIT_TWIP )));
SwTwips nDiff;
if( pEdit == &aWidthMF )
{
if( nCurWidth < MINLAY )
nCurWidth = MINLAY;
nDiff = nRight + nLeft + nCurWidth - pTblData->GetSpace() ;
//rechtsbuendig nur linken Rand veraendern
if(aRightBtn.IsChecked())
nLeft -= nDiff;
//linksbuendig nur rechten Rand veraendern
else if(aLeftBtn.IsChecked())
nRight -= nDiff;
//linker Rand und Breite erlaubt - erst rechts - dann links
else if(aFromLeftBtn.IsChecked())
{
if( nRight >= nDiff )
nRight -= nDiff;
else
{
nDiff -= nRight;
nRight = 0;
if(nLeft >= nDiff)
nLeft -= nDiff;
else
{
nRight += nLeft - nDiff;
nLeft = 0;
nCurWidth = pTblData->GetSpace();
}
}
}
//zentriert beide Seiten gleichmaessig veraendern
else if(aCenterBtn.IsChecked())
{
if((nLeft != nRight))
{
nDiff += nLeft + nRight;
nLeft = nDiff/2;
nRight = nDiff/2;
}
else
{
nLeft -= nDiff/2;
nRight -= nDiff/2;
}
}
//freie Ausrichtung: beide Raender verkleinern
else if(aFreeBtn.IsChecked())
{
nLeft -= nDiff/2;
nRight -= nDiff/2;
}
}
if( pEdit == &aRightMF )
{
if( nRight + nLeft > pTblData->GetSpace() - MINLAY )
nRight = pTblData->GetSpace() -nLeft - MINLAY;
nCurWidth = pTblData->GetSpace() - nLeft - nRight;
}
if( pEdit == &aLeftMF )
{
if(!aFromLeftBtn.IsChecked())
{
sal_Bool bCenter = aCenterBtn.IsChecked();
if( bCenter )
nRight = nLeft;
if(nRight + nLeft > pTblData->GetSpace() - MINLAY )
{
nLeft = bCenter ? (pTblData->GetSpace() - MINLAY) /2 :
(pTblData->GetSpace() - MINLAY) - nRight;
nRight = bCenter ? (pTblData->GetSpace() - MINLAY) /2 : nRight;
}
nCurWidth = pTblData->GetSpace() - nLeft - nRight;
}
else
{
//hier wird bei Aenderung an der linken Seite zuerst der
//rechte Rand veraendert, dann die Breite
nDiff = nRight + nLeft + nCurWidth - pTblData->GetSpace() ;
nRight -= nDiff;
nCurWidth = pTblData->GetSpace() - nLeft - nRight;
}
}
if (nCurWidth != nPrevWidth )
aWidthMF.SetPrcntValue( aWidthMF.NormalizePercent( nCurWidth ), FUNIT_TWIP );
aRightMF.SetPrcntValue( aRightMF.NormalizePercent( nRight ), FUNIT_TWIP );
aLeftMF.SetPrcntValue( aLeftMF.NormalizePercent( nLeft ), FUNIT_TWIP );
bModified = sal_True;
}
/*------------------------------------------------------------------------
------------------------------------------------------------------------*/
SfxTabPage* SwFormatTablePage::Create( Window* pParent,
const SfxItemSet& rAttrSet)
{
return new SwFormatTablePage( pParent, rAttrSet );
}
/*------------------------------------------------------------------------
-------------------------------------------------------------------------*/
sal_Bool SwFormatTablePage::FillItemSet( SfxItemSet& rCoreSet )
{
// Testen, ob eins der Control noch den Focus hat
if(aWidthMF.HasFocus())
ModifyHdl(&aWidthMF);
else if(aLeftMF.HasFocus())
ModifyHdl(&aLeftMF);
else if(aRightMF.HasFocus())
ModifyHdl(&aRightMF);
else if(aTopMF.HasFocus())
ModifyHdl(&aTopMF);
else if(aBottomMF.HasFocus())
ModifyHdl(&aBottomMF);
if(bModified)
{
if( aBottomMF.GetText() != aBottomMF.GetSavedValue() ||
aTopMF.GetText() != aTopMF.GetSavedValue() )
{
SvxULSpaceItem aULSpace(RES_UL_SPACE);
aULSpace.SetUpper( (sal_uInt16) aTopMF.Denormalize(
aTopMF.GetValue( FUNIT_TWIP )));
aULSpace.SetLower( (sal_uInt16) aBottomMF.Denormalize(
aBottomMF.GetValue( FUNIT_TWIP )));
rCoreSet.Put(aULSpace);
}
}
if(aNameED.GetText() != aNameED.GetSavedValue())
{
rCoreSet.Put(SfxStringItem( FN_PARAM_TABLE_NAME, aNameED.GetText()));
bModified = sal_True;
}
sal_uInt16 nPos;
if( aTextDirectionLB.IsVisible() &&
( nPos = aTextDirectionLB.GetSelectEntryPos() ) !=
aTextDirectionLB.GetSavedValue() )
{
sal_uInt32 nDirection = (sal_uInt32)(sal_uIntPtr)aTextDirectionLB.GetEntryData( nPos );
rCoreSet.Put( SvxFrameDirectionItem( (SvxFrameDirection)nDirection, RES_FRAMEDIR));
bModified = sal_True;
}
return bModified;
}
/*------------------------------------------------------------------------
------------------------------------------------------------------------*/
void SwFormatTablePage::Reset( const SfxItemSet& )
{
const SfxItemSet& rSet = GetItemSet();
const SfxPoolItem* pItem;
if(bHtmlMode)
{
aNameED .Disable();
aTopFT .Hide();
aTopMF .Hide();
aBottomFT.Hide();
aBottomMF.Hide();
aFreeBtn.Enable(sal_False);
}
FieldUnit aMetric = ::GetDfltMetric(bHtmlMode);
SetMetric( aWidthMF, aMetric );
SetMetric( aRightMF, aMetric );
SetMetric( aLeftMF, aMetric );
SetMetric( aTopMF, aMetric );
SetMetric( aBottomMF, aMetric );
//Name
if(SFX_ITEM_SET == rSet.GetItemState( FN_PARAM_TABLE_NAME, sal_False, &pItem ))
{
aNameED.SetText(((const SfxStringItem*)pItem)->GetValue());
aNameED.SaveValue();
}
if(SFX_ITEM_SET == rSet.GetItemState( FN_TABLE_REP, sal_False, &pItem ))
{
pTblData = (SwTableRep*)((const SwPtrItem*) pItem)->GetValue();
nMinTableWidth = pTblData->GetColCount() * MINLAY;
if(pTblData->GetWidthPercent())
{
aRelWidthCB.Check(sal_True);
RelWidthClickHdl(&aRelWidthCB);
aWidthMF.SetPrcntValue(pTblData->GetWidthPercent(), FUNIT_CUSTOM);
aWidthMF.SaveValue();
nSaveWidth = static_cast< SwTwips >(aWidthMF.GetValue(FUNIT_CUSTOM));
}
else
{
aWidthMF.SetPrcntValue(aWidthMF.NormalizePercent(
pTblData->GetWidth()), FUNIT_TWIP);
aWidthMF.SaveValue();
nSaveWidth = pTblData->GetWidth();
nMinTableWidth = Min( nSaveWidth, nMinTableWidth );
}
aWidthMF.SetRefValue(pTblData->GetSpace());
aWidthMF.SetLast(aWidthMF.NormalizePercent( pTblData->GetSpace() ));
aLeftMF.SetLast(aLeftMF.NormalizePercent( pTblData->GetSpace() ));
aRightMF.SetLast(aRightMF.NormalizePercent( pTblData->GetSpace() ));
aLeftMF.SetPrcntValue(aLeftMF.NormalizePercent(
pTblData->GetLeftSpace()), FUNIT_TWIP);
aRightMF.SetPrcntValue(aRightMF.NormalizePercent(
pTblData->GetRightSpace()), FUNIT_TWIP);
aLeftMF.SaveValue();
aRightMF.SaveValue();
nOldAlign = pTblData->GetAlign();
sal_Bool bSetRight = sal_False, bRightEnable = sal_False,
bSetLeft = sal_False, bLeftEnable = sal_False;
switch( nOldAlign )
{
case text::HoriOrientation::NONE:
aFreeBtn.Check();
if(aRelWidthCB.IsChecked())
bSetRight = sal_True;
break;
case text::HoriOrientation::FULL:
{
bSetRight = bSetLeft = sal_True;
aFullBtn.Check();
aWidthMF.Enable(sal_False);
aRelWidthCB.Enable(sal_False);
aWidthFT.Enable(sal_False);
}
break;
case text::HoriOrientation::LEFT:
{
bSetLeft = sal_True;
aLeftBtn.Check();
}
break;
case text::HoriOrientation::LEFT_AND_WIDTH :
{
bSetRight = sal_True;
aFromLeftBtn.Check();
}
break;
case text::HoriOrientation::RIGHT:
{
bSetRight = sal_True;
aRightBtn.Check();
}
break;
case text::HoriOrientation::CENTER:
{
bSetRight = sal_True;
aCenterBtn.Check();
}
break;
}
if ( bSetRight )
{
aRightMF.Enable(bRightEnable);
aRightFT.Enable(bRightEnable);
}
if ( bSetLeft )
{
aLeftMF.Enable(bLeftEnable);
aLeftFT.Enable(bLeftEnable);
}
}
//Raender
if(SFX_ITEM_SET == rSet.GetItemState( RES_UL_SPACE, sal_False,&pItem ))
{
aTopMF.SetValue(aTopMF.Normalize(
((const SvxULSpaceItem*)pItem)->GetUpper()), FUNIT_TWIP);
aBottomMF.SetValue(aBottomMF.Normalize(
((const SvxULSpaceItem*)pItem)->GetLower()), FUNIT_TWIP);
aTopMF.SaveValue();
aBottomMF.SaveValue();
}
//text direction
if( SFX_ITEM_SET == rSet.GetItemState( RES_FRAMEDIR, sal_True, &pItem ) )
{
sal_uInt32 nVal = ((SvxFrameDirectionItem*)pItem)->GetValue();
sal_uInt16 nPos = aTextDirectionLB.GetEntryPos( (void*) nVal );
aTextDirectionLB.SelectEntryPos( nPos );
aTextDirectionLB.SaveValue();
}
aWidthMF.SetMax( 2*aWidthMF.NormalizePercent( pTblData->GetSpace() ), FUNIT_TWIP );
aRightMF.SetMax( aRightMF.NormalizePercent( pTblData->GetSpace() ), FUNIT_TWIP );
aLeftMF.SetMax( aLeftMF.NormalizePercent( pTblData->GetSpace() ), FUNIT_TWIP );
aWidthMF.SetMin( aWidthMF.NormalizePercent( nMinTableWidth ), FUNIT_TWIP );
}
/*------------------------------------------------------------------------
------------------------------------------------------------------------*/
void SwFormatTablePage::ActivatePage( const SfxItemSet& rSet )
{
DBG_ASSERT(pTblData, "Tabellendaten nicht da?");
if(SFX_ITEM_SET == rSet.GetItemState( FN_TABLE_REP ))
{
SwTwips nCurWidth = text::HoriOrientation::FULL != pTblData->GetAlign() ?
pTblData->GetWidth() :
pTblData->GetSpace();
if(pTblData->GetWidthPercent() == 0 &&
nCurWidth != aWidthMF.DenormalizePercent(aWidthMF.GetValue(FUNIT_TWIP )))
{
aWidthMF.SetPrcntValue(aWidthMF.NormalizePercent(
nCurWidth), FUNIT_TWIP);
aWidthMF.SaveValue();
nSaveWidth = nCurWidth;
aLeftMF.SetPrcntValue(aLeftMF.NormalizePercent(
pTblData->GetLeftSpace()), FUNIT_TWIP);
aLeftMF.SaveValue();
aRightMF.SetPrcntValue(aRightMF.NormalizePercent(
pTblData->GetRightSpace()), FUNIT_TWIP);
aRightMF.SaveValue();
}
}
}
/*------------------------------------------------------------------------
------------------------------------------------------------------------*/
int SwFormatTablePage::DeactivatePage( SfxItemSet* _pSet )
{
// os: VCL sorgt nicht dafuer, dass das aktive Control im
// dialog bei OK den focus verliert
aNameED.GrabFocus();
// Test des Tabellennamens auf Leerzeichen
String sTblName = aNameED.GetText();
if(sTblName.Search(' ') != STRING_NOTFOUND)
{
InfoBox(this, SW_RES(MSG_WRONG_TABLENAME)).Execute();
aNameED.GrabFocus();
return KEEP_PAGE;
}
if(_pSet)
{
FillItemSet(*_pSet);
if(bModified)
{
SwTwips lLeft = static_cast< SwTwips >(aLeftMF.DenormalizePercent(aLeftMF.GetValue( FUNIT_TWIP )));
SwTwips lRight = static_cast< SwTwips >(aRightMF.DenormalizePercent(aRightMF.GetValue( FUNIT_TWIP )));
if( aLeftMF.GetText() != aLeftMF.GetSavedValue() ||
aRightMF.GetText() != aRightMF.GetSavedValue() )
{
pTblData->SetWidthChanged();
pTblData->SetLeftSpace( lLeft);
pTblData->SetRightSpace( lRight);
}
SwTwips lWidth;
if (aRelWidthCB.IsChecked() && aRelWidthCB.IsEnabled())
{
lWidth = pTblData->GetSpace() - lRight - lLeft;
sal_uInt16 nPercentWidth = (sal_uInt16)aWidthMF.GetValue(FUNIT_CUSTOM);
if(pTblData->GetWidthPercent() != nPercentWidth)
{
pTblData->SetWidthPercent(nPercentWidth);
pTblData->SetWidthChanged();
}
}
else
{
pTblData->SetWidthPercent(0);
lWidth = static_cast< SwTwips >(aWidthMF.DenormalizePercent(aWidthMF.GetValue( FUNIT_TWIP )));
}
pTblData->SetWidth(lWidth);
SwTwips nColSum = 0;
sal_uInt16 i;
for( i = 0; i < pTblData->GetColCount(); i++)
{
nColSum += pTblData->GetColumns()[i].nWidth;
}
if(nColSum != pTblData->GetWidth())
{
SwTwips nMinWidth = Min( (long)MINLAY,
(long) (pTblData->GetWidth() /
pTblData->GetColCount() - 1));
SwTwips nDiff = nColSum - pTblData->GetWidth();
while ( Abs(nDiff) > pTblData->GetColCount() + 1 )
{
SwTwips nSub = nDiff / pTblData->GetColCount();
for( i = 0; i < pTblData->GetColCount(); i++)
{
if(pTblData->GetColumns()[i].nWidth - nMinWidth > nSub)
{
pTblData->GetColumns()[i].nWidth -= nSub;
nDiff -= nSub;
}
else
{
nDiff -= pTblData->GetColumns()[i].nWidth - nMinWidth;
pTblData->GetColumns()[i].nWidth = nMinWidth;
}
}
}
}
sal_Int16 nAlign = 0;
if(aRightBtn.IsChecked())
nAlign = text::HoriOrientation::RIGHT;
else if(aLeftBtn.IsChecked())
nAlign = text::HoriOrientation::LEFT;
else if(aFromLeftBtn.IsChecked())
nAlign = text::HoriOrientation::LEFT_AND_WIDTH;
else if(aCenterBtn.IsChecked())
nAlign = text::HoriOrientation::CENTER;
else if(aFreeBtn.IsChecked())
nAlign = text::HoriOrientation::NONE;
else if(aFullBtn.IsChecked())
{
nAlign = text::HoriOrientation::FULL;
lWidth = lAutoWidth;
}
if(nAlign != pTblData->GetAlign())
{
pTblData->SetWidthChanged();
pTblData->SetAlign(nAlign);
}
// if( text::HoriOrientation::CENTER && lWidth != (SwTwips)aWidthMF.GetSavedValue())
if(pTblData->GetWidth() != lWidth )
{
pTblData->SetWidthChanged();
pTblData->SetWidth(
nAlign == text::HoriOrientation::FULL ? pTblData->GetSpace() : lWidth );
}
if(pTblData->HasWidthChanged())
_pSet->Put(SwPtrItem(FN_TABLE_REP, pTblData));
}
#ifdef DEBUG_TBLDLG
DbgTblRep(pTblData)
#endif
}
return sal_True;
}
/*------------------------------------------------------------------------
Beschreibung: Seite Spaltenkonfiguration
------------------------------------------------------------------------*/
SwTableColumnPage::SwTableColumnPage( Window* pParent,
const SfxItemSet& rSet ) :
SfxTabPage(pParent, SW_RES( TP_TABLE_COLUMN ), rSet ),
aModifyTableCB(this, SW_RES(CB_MOD_TBL)),
aProportionalCB(this, SW_RES(CB_PROP)),
aSpaceFT(this, SW_RES(FT_SPACE)),
aSpaceED(this, SW_RES(ED_SPACE)),
aColFL(this, SW_RES(COL_FL_LAYOUT)),
aUpBtn(this, SW_RES(COL_BTN_UP)),
aFT1(this, SW_RES(COL_FT_1)),
aMF1(this, SW_RES(COL_MF_1)),
aFT2(this, SW_RES(COL_FT_2)),
aMF2(this, SW_RES(COL_MF_2)),
aFT3(this, SW_RES(COL_FT_3)),
aMF3(this, SW_RES(COL_MF_3)),
aFT4(this, SW_RES(COL_FT_4)),
aMF4(this, SW_RES(COL_MF_4)),
aFT5(this, SW_RES(COL_FT_5)),
aMF5(this, SW_RES(COL_MF_5)),
aFT6(this, SW_RES(COL_FT_6)),
aMF6(this, SW_RES(COL_MF_6)),
aDownBtn(this, SW_RES(COL_BTN_DOWN)),
nTableWidth(0),
nMinWidth( MINLAY ),
nNoOfCols( 0 ),
nNoOfVisibleCols( 0 ),
bModified(sal_False),
bModifyTbl(sal_False),
bPercentMode(sal_False)
{
FreeResource();
SetExchangeSupport();
aDownBtn.SetAccessibleRelationMemberOf(&aColFL);
aUpBtn.SetAccessibleRelationMemberOf(&aColFL);
pFieldArr[0] = &aMF1;
pFieldArr[1] = &aMF2;
pFieldArr[2] = &aMF3;
pFieldArr[3] = &aMF4;
pFieldArr[4] = &aMF5;
pFieldArr[5] = &aMF6;
pTextArr[0] = &aFT1;
pTextArr[1] = &aFT2;
pTextArr[2] = &aFT3;
pTextArr[3] = &aFT4;
pTextArr[4] = &aFT5;
pTextArr[5] = &aFT6;
const SfxPoolItem* pItem;
Init((SFX_ITEM_SET == rSet.GetItemState( SID_HTML_MODE, sal_False,&pItem )
&& ((const SfxUInt16Item*)pItem)->GetValue() & HTMLMODE_ON));
};
/*------------------------------------------------------------------------
Beschreibung: Seite Spaltenkonfiguration
------------------------------------------------------------------------*/
SwTableColumnPage::~SwTableColumnPage()
{
};
/*------------------------------------------------------------------------
------------------------------------------------------------------------*/
SfxTabPage* SwTableColumnPage::Create( Window* pParent,
const SfxItemSet& rAttrSet)
{
return new SwTableColumnPage( pParent, rAttrSet );
};
/*------------------------------------------------------------------------
------------------------------------------------------------------------*/
void SwTableColumnPage::Reset( const SfxItemSet& )
{
const SfxItemSet& rSet = GetItemSet();
const SfxPoolItem* pItem;
if(SFX_ITEM_SET == rSet.GetItemState( FN_TABLE_REP, sal_False, &pItem ))
{
pTblData = (SwTableRep*)((const SwPtrItem*) pItem)->GetValue();
nNoOfVisibleCols = pTblData->GetColCount();
nNoOfCols = pTblData->GetAllColCount();
nTableWidth = pTblData->GetAlign() != text::HoriOrientation::FULL &&
pTblData->GetAlign() != text::HoriOrientation::LEFT_AND_WIDTH?
pTblData->GetWidth() : pTblData->GetSpace();
sal_uInt16 i;
for( i = 0; i < nNoOfCols; i++ )
{
if( pTblData->GetColumns()[i].nWidth < nMinWidth )
nMinWidth = pTblData->GetColumns()[i].nWidth;
}
sal_Int64 nMinTwips = pFieldArr[0]->NormalizePercent( nMinWidth );
sal_Int64 nMaxTwips = pFieldArr[0]->NormalizePercent( nTableWidth );
for( i = 0; (i < MET_FIELDS) && (i < nNoOfVisibleCols); i++ )
{
pFieldArr[i]->SetPrcntValue( pFieldArr[i]->NormalizePercent(
GetVisibleWidth(i) ), FUNIT_TWIP );
pFieldArr[i]->SetMin( nMinTwips , FUNIT_TWIP );
pFieldArr[i]->SetMax( nMaxTwips , FUNIT_TWIP );
pFieldArr[i]->Enable();
pTextArr[i]->Enable();
}
if( nNoOfVisibleCols > MET_FIELDS )
aUpBtn.Enable();
i = nNoOfVisibleCols;
while( i < MET_FIELDS )
{
pFieldArr[i]->SetText( aEmptyStr );
pTextArr[i]->Hide();
i++;
}
}
ActivatePage(rSet);
};
/*------------------------------------------------------------------------
------------------------------------------------------------------------*/
void SwTableColumnPage::Init(sal_Bool bWeb)
{
FieldUnit aMetric = ::GetDfltMetric(bWeb);
Link aLkUp = LINK( this, SwTableColumnPage, UpHdl );
Link aLkDown = LINK( this, SwTableColumnPage, DownHdl );
Link aLkLF = LINK( this, SwTableColumnPage, LoseFocusHdl );
for( sal_uInt16 i = 0; i < MET_FIELDS; i++ )
{
aValueTbl[i] = i;
SetMetric(*pFieldArr[i], aMetric);
pFieldArr[i]->SetUpHdl( aLkUp );
pFieldArr[i]->SetDownHdl( aLkDown );
pFieldArr[i]->SetLoseFocusHdl( aLkLF );
}
SetMetric(aSpaceED, aMetric);
Link aLk = LINK( this, SwTableColumnPage, AutoClickHdl );
aUpBtn.SetClickHdl( aLk );
aDownBtn.SetClickHdl( aLk );
aLk = LINK( this, SwTableColumnPage, ModeHdl );
aModifyTableCB .SetClickHdl( aLk );
aProportionalCB.SetClickHdl( aLk );
};
/*------------------------------------------------------------------------
------------------------------------------------------------------------*/
IMPL_LINK( SwTableColumnPage, AutoClickHdl, CheckBox *, pBox )
{
//Anzeigefenster verschieben
if(pBox == (CheckBox *)&aDownBtn)
{
if(aValueTbl[0] > 0)
{
for( sal_uInt16 i=0; i < MET_FIELDS; i++ )
aValueTbl[i] -= 1;
}
}
if(pBox == (CheckBox *)&aUpBtn)
{
if( aValueTbl[ MET_FIELDS -1 ] < nNoOfVisibleCols -1 )
{
for(sal_uInt16 i=0;i < MET_FIELDS;i++)
aValueTbl[i] += 1;
}
}
for( sal_uInt16 i = 0; (i < nNoOfVisibleCols ) && ( i < MET_FIELDS); i++ )
{
String sEntry('~');
String sIndex = String::CreateFromInt32( aValueTbl[i] + 1 );
sEntry += sIndex;
pTextArr[i]->SetText( sEntry );
String sColumnWidth = SW_RESSTR( STR_ACCESS_COLUMN_WIDTH);
sColumnWidth.SearchAndReplace( DEFINE_CONST_UNICODE("%1"), sIndex );
pFieldArr[i]->SetAccessibleName( sColumnWidth );
}
aDownBtn.Enable(aValueTbl[0] > 0);
aUpBtn.Enable(aValueTbl[ MET_FIELDS -1 ] < nNoOfVisibleCols -1 );
UpdateCols(0);
return 0;
};
/*------------------------------------------------------------------------
------------------------------------------------------------------------*/
IMPL_LINK_INLINE_START( SwTableColumnPage, UpHdl, PercentField *, pEdit )
{
bModified = sal_True;
ModifyHdl( pEdit );
return 0;
};
IMPL_LINK_INLINE_END( SwTableColumnPage, UpHdl, PercentField *, pEdit )
/*------------------------------------------------------------------------
------------------------------------------------------------------------*/
IMPL_LINK_INLINE_START( SwTableColumnPage, DownHdl, PercentField *, pEdit )
{
bModified = sal_True;
ModifyHdl( pEdit );
return 0;
};
IMPL_LINK_INLINE_END( SwTableColumnPage, DownHdl, PercentField *, pEdit )
/*------------------------------------------------------------------------
------------------------------------------------------------------------*/
IMPL_LINK_INLINE_START( SwTableColumnPage, LoseFocusHdl, PercentField *, pEdit )
{
if(pEdit->IsModified())
{
bModified = sal_True;
ModifyHdl( pEdit );
}
return 0;
};
IMPL_LINK_INLINE_END( SwTableColumnPage, LoseFocusHdl, PercentField *, pEdit )
/*------------------------------------------------------------------------
------------------------------------------------------------------------*/
IMPL_LINK( SwTableColumnPage, ModeHdl, CheckBox*, pBox )
{
sal_Bool bCheck = pBox->IsChecked();
if(pBox == &aProportionalCB)
{
if(bCheck)
aModifyTableCB.Check();
aModifyTableCB.Enable(!bCheck && bModifyTbl);
}
return 0;
};
/*------------------------------------------------------------------------
------------------------------------------------------------------------*/
sal_Bool SwTableColumnPage::FillItemSet( SfxItemSet& )
{
for( sal_uInt16 i = 0; i < MET_FIELDS; i++ )
{
if(pFieldArr[i]->HasFocus())
{
LoseFocusHdl(pFieldArr[i]);
break;
}
}
if(bModified)
{
pTblData->SetColsChanged();
}
return bModified;
};
/*------------------------------------------------------------------------
------------------------------------------------------------------------*/
void SwTableColumnPage::ModifyHdl( PercentField* pEdit )
{
sal_uInt16 nAktPos;
sal_uInt16 i;
for( i = 0; i < MET_FIELDS; i++)
if(pEdit == pFieldArr[i])
break;
if (MET_FIELDS <= i)
{
OSL_ENSURE(false, "cannot happen.");
return;
}
SetVisibleWidth(aValueTbl[i], static_cast< SwTwips >(pEdit->DenormalizePercent(pEdit->GetValue( FUNIT_TWIP ))) );
nAktPos = aValueTbl[i];
UpdateCols( nAktPos );
};
/*------------------------------------------------------------------------
------------------------------------------------------------------------*/
void SwTableColumnPage::UpdateCols( sal_uInt16 nAktPos )
{
SwTwips nSum = 0;
sal_uInt16 i;
for( i = 0; i < nNoOfCols; i++ )
{
nSum += (pTblData->GetColumns())[i].nWidth;
}
SwTwips nDiff = nSum - nTableWidth;
sal_Bool bModifyTable = aModifyTableCB.IsChecked();
sal_Bool bProp = aProportionalCB.IsChecked();
if(!bModifyTable && !bProp )
{
// the table width is constant, the difference is balanced with the other columns
sal_uInt16 nLoopCount = 0;
while( nDiff )
{
if( ++nAktPos == nNoOfVisibleCols)
{
nAktPos = 0;
++nLoopCount;
//#i101353# in small tables it might not be possible to balance column width
if( nLoopCount > 1 )
break;
}
if( nDiff < 0 )
{
SetVisibleWidth(nAktPos, GetVisibleWidth(nAktPos) -nDiff);
nDiff = 0;
}
else if( GetVisibleWidth(nAktPos) >= nDiff + nMinWidth )
{
SetVisibleWidth(nAktPos, GetVisibleWidth(nAktPos) -nDiff);
nDiff = 0;
}
if( nDiff > 0 && GetVisibleWidth(nAktPos) > nMinWidth )
{
if( nDiff >= (GetVisibleWidth(nAktPos) - nMinWidth) )
{
nDiff -= (GetVisibleWidth(nAktPos) - nMinWidth);
SetVisibleWidth(nAktPos, nMinWidth);
}
else
{
nDiff = 0;
SetVisibleWidth(nAktPos, GetVisibleWidth(nAktPos) -nDiff);
}
DBG_ASSERT(nDiff >= 0, "nDiff < 0 kann hier nicht sein!");
}
}
}
else if(bModifyTable && !bProp)
{
// Differenz wird ueber die Tabellenbreite ausgeglichen,
// andere Spalten bleiben unveraendert
DBG_ASSERT(nDiff <= pTblData->GetSpace() - nTableWidth, "Maximum falsch eingestellt" );
SwTwips nActSpace = pTblData->GetSpace() - nTableWidth;
if(nDiff > nActSpace)
{
nTableWidth = pTblData->GetSpace();
SetVisibleWidth(nAktPos, GetVisibleWidth(nAktPos) - nDiff + nActSpace );
}
else
{
nTableWidth += nDiff;
}
}
else if(bModifyTable & bProp)
{
// Alle Spalten werden proportional mitveraendert, die Tabellenbreite wird
// entsprechend angepasst
DBG_ASSERT(nDiff * nNoOfVisibleCols <= pTblData->GetSpace() - nTableWidth, "Maximum falsch eingestellt" );
long nAdd = nDiff;
if(nDiff * nNoOfVisibleCols > pTblData->GetSpace() - nTableWidth)
{
nAdd = (pTblData->GetSpace() - nTableWidth) / nNoOfVisibleCols;
SetVisibleWidth(nAktPos, GetVisibleWidth(nAktPos) - nDiff + nAdd );
nDiff = nAdd;
}
if(nAdd)
for(i = 0; i < nNoOfVisibleCols; i++ )
{
if(i == nAktPos)
continue;
SwTwips nVisWidth;
if((nVisWidth = GetVisibleWidth(i)) + nDiff < MINLAY)
{
nAdd += nVisWidth - MINLAY;
SetVisibleWidth(i, MINLAY);
}
else
{
SetVisibleWidth(i, nVisWidth + nDiff);
nAdd += nDiff;
}
}
nTableWidth += nAdd;
}
else
{
// Die Differenz wird gleichmaessig auf alle anderen Spalten aufgeteilt
// die Tabellenbreite bleibt konstant
/*
SwTwips nDiffn = nDiff/(nNoOfVisibleCols - 1);
if(nDiff < 0 && (nNoOfVisibleCols - 1) * nDiffn != nDiff)
nDiffn-- ;
sal_uInt16 nStart = nAktPos++;
if(nAktPos == nNoOfVisibleCols)
nStart = 0;
for(sal_uInt16 i = 0; i < nNoOfVisibleCols; i++ )
{
if((nVisWidth = GetVisibleWidth(i)) + nDiff < MINLAY)
{
nAdd += nVisWidth - MINLAY;
SetVisibleWidth(i, MINLAY);
}
}
*/
}
#ifdef DEBUG_TBLDLG
DbgTblRep(pTblData)
#endif
if(!bPercentMode)
aSpaceED.SetValue(aSpaceED.Normalize( pTblData->GetSpace() - nTableWidth) , FUNIT_TWIP);
for( i = 0; ( i < nNoOfVisibleCols ) && ( i < MET_FIELDS ); i++)
{
pFieldArr[i]->SetPrcntValue(pFieldArr[i]->NormalizePercent(
GetVisibleWidth(aValueTbl[i]) ), FUNIT_TWIP);
pFieldArr[i]->ClearModifyFlag();
}
}
/*------------------------------------------------------------------------
------------------------------------------------------------------------*/
void SwTableColumnPage::ActivatePage( const SfxItemSet& )
{
bPercentMode = pTblData->GetWidthPercent() != 0;
for( sal_uInt16 i = 0; (i < MET_FIELDS) && (i < nNoOfVisibleCols); i++ )
{
pFieldArr[i]->SetRefValue(pTblData->GetWidth());
pFieldArr[i]->ShowPercent( bPercentMode );
}
sal_uInt16 nTblAlign = pTblData->GetAlign();
if((text::HoriOrientation::FULL != nTblAlign && nTableWidth != pTblData->GetWidth()) ||
(text::HoriOrientation::FULL == nTblAlign && nTableWidth != pTblData->GetSpace()))
{
nTableWidth = text::HoriOrientation::FULL == nTblAlign ?
pTblData->GetSpace() :
pTblData->GetWidth();
UpdateCols(0);
}
bModifyTbl = sal_True;
if(pTblData->GetWidthPercent() ||
text::HoriOrientation::FULL == nTblAlign ||
pTblData->IsLineSelected() )
bModifyTbl = sal_False;
if(bPercentMode)
{
aModifyTableCB .Check(sal_False);
aProportionalCB .Check(sal_False);
}
else if( !bModifyTbl )
{
aProportionalCB.Check(sal_False);
aModifyTableCB.Check(sal_False);
}
aSpaceFT.Enable(!bPercentMode);
aSpaceED.Enable(!bPercentMode);
aModifyTableCB.Enable( !bPercentMode && bModifyTbl );
aProportionalCB.Enable(!bPercentMode && bModifyTbl );
/* if(pTblData->IsLineSelected() && pTblData->IsComplex())
{
}*/
aSpaceED.SetValue(aSpaceED.Normalize(
pTblData->GetSpace() - nTableWidth) , FUNIT_TWIP);
}
/*------------------------------------------------------------------------
------------------------------------------------------------------------*/
int SwTableColumnPage::DeactivatePage( SfxItemSet* _pSet )
{
if(_pSet)
{
FillItemSet(*_pSet);
if(text::HoriOrientation::FULL != pTblData->GetAlign() && pTblData->GetWidth() != nTableWidth)
{
pTblData->SetWidth(nTableWidth);
SwTwips nDiff = pTblData->GetSpace() - pTblData->GetWidth() -
pTblData->GetLeftSpace() - pTblData->GetRightSpace();
switch( pTblData->GetAlign() )
{
case text::HoriOrientation::RIGHT:
pTblData->SetLeftSpace(pTblData->GetLeftSpace() + nDiff);
break;
case text::HoriOrientation::LEFT:
pTblData->SetRightSpace(pTblData->GetRightSpace() + nDiff);
break;
case text::HoriOrientation::NONE:
{
SwTwips nDiff2 = nDiff/2;
if( nDiff > 0 ||
(-nDiff2 < pTblData->GetRightSpace() && - nDiff2 < pTblData->GetLeftSpace()))
{
pTblData->SetRightSpace(pTblData->GetRightSpace() + nDiff2);
pTblData->SetLeftSpace(pTblData->GetLeftSpace() + nDiff2);
}
else
{
if(pTblData->GetRightSpace() > pTblData->GetLeftSpace())
{
pTblData->SetLeftSpace(0);
pTblData->SetRightSpace(pTblData->GetSpace() - pTblData->GetWidth());
}
else
{
pTblData->SetRightSpace(0);
pTblData->SetLeftSpace(pTblData->GetSpace() - pTblData->GetWidth());
}
}
}
break;
case text::HoriOrientation::CENTER:
pTblData->SetRightSpace(pTblData->GetRightSpace() + nDiff/2);
pTblData->SetLeftSpace(pTblData->GetLeftSpace() + nDiff/2);
break;
case text::HoriOrientation::LEFT_AND_WIDTH :
if(nDiff > pTblData->GetRightSpace())
{
pTblData->SetLeftSpace(pTblData->GetSpace() - pTblData->GetWidth());
}
pTblData->SetRightSpace(
pTblData->GetSpace() - pTblData->GetWidth() - pTblData->GetLeftSpace());
break;
}
pTblData->SetWidthChanged();
}
#ifdef DEBUG_TBLDLG
DbgTblRep(pTblData)
#endif
_pSet->Put(SwPtrItem( FN_TABLE_REP, pTblData ));
}
return sal_True;
}
/*------------------------------------------------------------------------
------------------------------------------------------------------------*/
SwTwips SwTableColumnPage::GetVisibleWidth(sal_uInt16 nPos)
{
sal_uInt16 i=0;
while( nPos )
{
if(pTblData->GetColumns()[i].bVisible && nPos)
nPos--;
i++;
}
SwTwips nReturn = pTblData->GetColumns()[i].nWidth;
DBG_ASSERT(i < nNoOfCols, "Array index out of range");
while(!pTblData->GetColumns()[i].bVisible && (i + 1) < nNoOfCols)
nReturn += pTblData->GetColumns()[++i].nWidth;
// return (*ppTableColumns)[i].nWidth;
return nReturn;
}
/*------------------------------------------------------------------------
------------------------------------------------------------------------*/
void SwTableColumnPage::SetVisibleWidth(sal_uInt16 nPos, SwTwips nNewWidth)
{
sal_uInt16 i=0;
while( nPos )
{
if(pTblData->GetColumns()[i].bVisible && nPos)
nPos--;
i++;
}
DBG_ASSERT(i < nNoOfCols, "Array index out of range");
pTblData->GetColumns()[i].nWidth = nNewWidth;
while(!pTblData->GetColumns()[i].bVisible && (i + 1) < nNoOfCols)
pTblData->GetColumns()[++i].nWidth = 0;
}
/*------------------------------------------------------------------------
------------------------------------------------------------------------*/
SwTableTabDlg::SwTableTabDlg(Window* pParent, SfxItemPool& ,
const SfxItemSet* pItemSet, SwWrtShell* pSh ) :
SfxTabDialog(pParent, SW_RES(DLG_FORMAT_TABLE), pItemSet,0),
pShell(pSh),
nHtmlMode(::GetHtmlMode(pSh->GetView().GetDocShell()))
{
FreeResource();
SfxAbstractDialogFactory* pFact = SfxAbstractDialogFactory::Create();
DBG_ASSERT(pFact, "Dialogdiet fail!");
AddTabPage(TP_FORMAT_TABLE, &SwFormatTablePage::Create, 0 );
AddTabPage(TP_TABLE_TEXTFLOW, &SwTextFlowPage::Create, 0 );
AddTabPage(TP_TABLE_COLUMN, &SwTableColumnPage::Create, 0 );
AddTabPage(TP_BACKGROUND, pFact->GetTabPageCreatorFunc( RID_SVXPAGE_BACKGROUND ), 0 );
AddTabPage(TP_BORDER, pFact->GetTabPageCreatorFunc( RID_SVXPAGE_BORDER ), 0 );
}
/*------------------------------------------------------------------------
------------------------------------------------------------------------*/
void SwTableTabDlg::PageCreated(sal_uInt16 nId, SfxTabPage& rPage)
{
SfxAllItemSet aSet(*(GetInputSetImpl()->GetPool()));
if( TP_BACKGROUND == nId )
{
sal_Int32 nFlagType = SVX_SHOW_TBLCTL;
if(!( nHtmlMode & HTMLMODE_ON ) ||
nHtmlMode & HTMLMODE_SOME_STYLES)
nFlagType |= SVX_SHOW_SELECTOR;
aSet.Put (SfxUInt32Item(SID_FLAG_TYPE, nFlagType));
rPage.PageCreated(aSet);
}
else if(TP_BORDER == nId)
{
aSet.Put (SfxUInt16Item(SID_SWMODE_TYPE,SW_BORDER_MODE_TABLE));
rPage.PageCreated(aSet);
}
else if(TP_TABLE_TEXTFLOW == nId)
{
((SwTextFlowPage&)rPage).SetShell(pShell);
const sal_uInt16 eType = pShell->GetFrmType(0,sal_True);
if( !(FRMTYPE_BODY & eType) )
((SwTextFlowPage&)rPage).DisablePageBreak();
}
}
/*-----------------12.12.96 12.22-------------------
--------------------------------------------------*/
SwTextFlowPage::SwTextFlowPage( Window* pParent,
const SfxItemSet& rSet ) :
SfxTabPage(pParent, SW_RES( TP_TABLE_TEXTFLOW ), rSet ),
aFlowFL (this, SW_RES(FL_FLOW )),
aPgBrkCB (this, SW_RES(CB_PAGEBREAK )),
aPgBrkRB (this, SW_RES(RB_BREAKPAGE )),
aColBrkRB (this, SW_RES(RB_BREAKCOLUMN )),
aPgBrkBeforeRB (this, SW_RES(RB_PAGEBREAKBEFORE)),
aPgBrkAfterRB (this, SW_RES(RB_PAGEBREAKAFTER )),
aPageCollCB (this, SW_RES(CB_PAGECOLL )),
aPageCollLB (this, SW_RES(LB_PAGECOLL )),
aPageNoFT (this, SW_RES(FT_PAGENUM )),
aPageNoNF (this, SW_RES(NF_PAGENUM )),
aSplitCB (this, SW_RES(CB_SPLIT )),
aSplitRowCB (this, SW_RES(CB_SPLIT_ROW )),
aKeepCB (this, SW_RES(CB_KEEP )),
aHeadLineCB (this, SW_RES(CB_HEADLINE )),
aRepeatHeaderFT (this, SW_RES(FT_REPEAT_HEADER )),
aRepeatHeaderBeforeFT (this),
aRepeatHeaderNF (this, SW_RES(NF_REPEAT_HEADER )),
aRepeatHeaderAfterFT (this),
aRepeatHeaderCombo (this, SW_RES(WIN_REPEAT_HEADER), aRepeatHeaderNF, aRepeatHeaderBeforeFT, aRepeatHeaderAfterFT),
aTextDirectionFT(this, SW_RES(FT_TEXTDIRECTION )),
aTextDirectionLB(this, SW_RES(LB_TEXTDIRECTION )),
aVertOrientFL (this, SW_RES(FL_VERT_ORIENT )),
aVertOrientFT(this, SW_RES(FT_VERTORIENT )),
aVertOrientLB(this, SW_RES(LB_VERTORIENT )),
pShell(0),
bPageBreak(sal_True),
bHtmlMode(sal_False)
{
FreeResource();
aPgBrkRB.SetAccessibleRelationMemberOf(&aPgBrkCB);
aColBrkRB.SetAccessibleRelationMemberOf(&aPgBrkCB);
aPgBrkBeforeRB.SetAccessibleRelationMemberOf(&aPgBrkCB);
aPgBrkAfterRB.SetAccessibleRelationMemberOf(&aPgBrkCB);
aPageCollLB.SetAccessibleRelationLabeledBy(&aPageCollCB);
aPageCollLB.SetAccessibleName(aPageCollCB.GetText());
aPgBrkCB.SetClickHdl(LINK(this, SwTextFlowPage, PageBreakHdl_Impl));
aPgBrkBeforeRB.SetClickHdl(
LINK( this, SwTextFlowPage, PageBreakPosHdl_Impl ) );
aPgBrkAfterRB.SetClickHdl(
LINK( this, SwTextFlowPage, PageBreakPosHdl_Impl ) );
aPageCollCB.SetClickHdl(
LINK( this, SwTextFlowPage, ApplyCollClickHdl_Impl ) );
aColBrkRB.SetClickHdl(
LINK( this, SwTextFlowPage, PageBreakTypeHdl_Impl ) );
aPgBrkRB.SetClickHdl(
LINK( this, SwTextFlowPage, PageBreakTypeHdl_Impl ) );
aSplitCB.SetClickHdl(
LINK( this, SwTextFlowPage, SplitHdl_Impl));
aSplitRowCB.SetClickHdl(
LINK( this, SwTextFlowPage, SplitRowHdl_Impl));
aHeadLineCB.SetClickHdl( LINK( this, SwTextFlowPage, HeadLineCBClickHdl ) );
#ifndef SW_FILEFORMAT_40
const SfxPoolItem *pItem;
if(SFX_ITEM_SET == rSet.GetItemState( SID_HTML_MODE, sal_False,&pItem )
&& ((const SfxUInt16Item*)pItem)->GetValue() & HTMLMODE_ON)
#endif
{
aKeepCB.Hide();
aSplitCB.Hide();
aSplitRowCB.Hide();
}
aRepeatHeaderCombo.Arrange( aRepeatHeaderFT );
HeadLineCBClickHdl();
}
/*-----------------12.12.96 12.22-------------------
--------------------------------------------------*/
SwTextFlowPage::~SwTextFlowPage()
{
}
/*-----------------12.12.96 12.22-------------------
--------------------------------------------------*/
SfxTabPage* SwTextFlowPage::Create( Window* pParent,
const SfxItemSet& rAttrSet)
{
return new SwTextFlowPage(pParent, rAttrSet);
}
/*-----------------12.12.96 12.22-------------------
--------------------------------------------------*/
sal_Bool SwTextFlowPage::FillItemSet( SfxItemSet& rSet )
{
sal_Bool bModified = sal_False;
//Ueberschrift wiederholen
if(aHeadLineCB.IsChecked() != aHeadLineCB.GetSavedValue() ||
String::CreateFromInt32( static_cast< sal_Int32 >(aRepeatHeaderNF.GetValue()) ) != aRepeatHeaderNF.GetSavedValue() )
{
bModified |= 0 != rSet.Put(
SfxUInt16Item(FN_PARAM_TABLE_HEADLINE, aHeadLineCB.IsChecked()? sal_uInt16(aRepeatHeaderNF.GetValue()) : 0 ));
}
if(aKeepCB.IsChecked() != aKeepCB.GetSavedValue())
bModified |= 0 != rSet.Put( SvxFmtKeepItem( aKeepCB.IsChecked(), RES_KEEP));
if(aSplitCB.IsChecked() != aSplitCB.GetSavedValue())
bModified |= 0 != rSet.Put( SwFmtLayoutSplit( aSplitCB.IsChecked()));
if(aSplitRowCB.IsChecked() != aSplitRowCB.GetSavedValue())
bModified |= 0 != rSet.Put( SwFmtRowSplit( aSplitRowCB.IsChecked()));
const SvxFmtBreakItem* pBreak = (const SvxFmtBreakItem*)GetOldItem( rSet, RES_BREAK );
const SwFmtPageDesc* pDesc = (const SwFmtPageDesc*) GetOldItem( rSet, RES_PAGEDESC );
sal_Bool bState = aPageCollCB.IsChecked();
//Wenn Seitenvorlage, dann kein Break
sal_Bool bPageItemPut = sal_False;
if ( bState != aPageCollCB.GetSavedValue() ||
( bState &&
aPageCollLB.GetSelectEntryPos() != aPageCollLB.GetSavedValue() )
|| (aPageNoNF.IsEnabled() && aPageNoNF.IsValueModified()) )
{
String sPage;
if ( bState )
{
sPage = aPageCollLB.GetSelectEntry();
}
sal_uInt16 nPgNum = static_cast< sal_uInt16 >(aPageNoNF.GetValue());
if ( !pDesc || !pDesc->GetPageDesc() ||
( pDesc->GetPageDesc() && ((pDesc->GetPageDesc()->GetName() != sPage) ||
aPageNoNF.GetSavedValue() != (String)nPgNum)))
{
SwFmtPageDesc aFmt( pShell->FindPageDescByName( sPage, sal_True ) );
aFmt.SetNumOffset(bState ? nPgNum : 0);
bModified |= 0 != rSet.Put( aFmt );
bPageItemPut = bState;
}
}
sal_Bool bIsChecked = aPgBrkCB.IsChecked();
if ( !bPageItemPut &&
( bState != aPageCollCB.GetSavedValue() ||
bIsChecked != aPgBrkCB.GetSavedValue() ||
aPgBrkBeforeRB.IsChecked() != aPgBrkBeforeRB.GetSavedValue() ||
aPgBrkRB.IsChecked() != aPgBrkRB.GetSavedValue() ))
{
SvxFmtBreakItem aBreak(
(const SvxFmtBreakItem&)GetItemSet().Get( RES_BREAK ) );
if(bIsChecked)
{
sal_Bool bBefore = aPgBrkBeforeRB.IsChecked();
if ( aPgBrkRB.IsChecked() )
{
if ( bBefore )
aBreak.SetValue( SVX_BREAK_PAGE_BEFORE );
else
aBreak.SetValue( SVX_BREAK_PAGE_AFTER );
}
else
{
if ( bBefore )
aBreak.SetValue( SVX_BREAK_COLUMN_BEFORE );
else
aBreak.SetValue( SVX_BREAK_COLUMN_AFTER );
}
}
else
{
aBreak.SetValue( SVX_BREAK_NONE );
}
if ( !pBreak || !( *(const SvxFmtBreakItem*)pBreak == aBreak ) )
{
bModified |= 0 != rSet.Put( aBreak );
}
}
if(aTextDirectionLB.GetSelectEntryPos() != aTextDirectionLB.GetSavedValue())
{
bModified |= 0 != rSet.Put(
SvxFrameDirectionItem(
(SvxFrameDirection)(sal_uLong)aTextDirectionLB.GetEntryData(aTextDirectionLB.GetSelectEntryPos())
, FN_TABLE_BOX_TEXTDIRECTION));
}
if(aVertOrientLB.GetSelectEntryPos() != aVertOrientLB.GetSavedValue())
{
sal_uInt16 nOrient = USHRT_MAX;
switch(aVertOrientLB.GetSelectEntryPos())
{
case 0 : nOrient = text::VertOrientation::NONE; break;
case 1 : nOrient = text::VertOrientation::CENTER; break;
case 2 : nOrient = text::VertOrientation::BOTTOM; break;
}
if(nOrient != USHRT_MAX)
bModified |= 0 != rSet.Put(SfxUInt16Item(FN_TABLE_SET_VERT_ALIGN, nOrient));
}
return bModified;
}
/*-----------------12.12.96 12.22-------------------
--------------------------------------------------*/
void SwTextFlowPage::Reset( const SfxItemSet& rSet )
{
const SfxPoolItem* pItem;
SvxHtmlOptions* pHtmlOpt = SvxHtmlOptions::Get();
sal_Bool bFlowAllowed = !bHtmlMode || pHtmlOpt->IsPrintLayoutExtension();
if(bFlowAllowed)
{
// Einfuegen der vorhandenen Seitenvorlagen in die Listbox
const sal_uInt16 nCount = pShell->GetPageDescCnt();
sal_uInt16 i;
for( i = 0; i < nCount; ++i)
{
const SwPageDesc &rPageDesc = pShell->GetPageDesc(i);
aPageCollLB.InsertEntry(rPageDesc.GetName());
}
String aFmtName;
for(i = RES_POOLPAGE_BEGIN; i < RES_POOLPAGE_END; ++i)
if( LISTBOX_ENTRY_NOTFOUND == aPageCollLB.GetEntryPos(
aFmtName = SwStyleNameMapper::GetUIName( i, aFmtName ) ))
aPageCollLB.InsertEntry( aFmtName );
if(SFX_ITEM_SET == rSet.GetItemState( RES_KEEP, sal_False, &pItem ))
{
aKeepCB.Check( ((const SvxFmtKeepItem*)pItem)->GetValue() );
aKeepCB.SaveValue();
}
if(SFX_ITEM_SET == rSet.GetItemState( RES_LAYOUT_SPLIT, sal_False, &pItem ))
{
aSplitCB.Check( ((const SwFmtLayoutSplit*)pItem)->GetValue() );
}
else
aSplitCB.Check();
aSplitCB.SaveValue();
SplitHdl_Impl(&aSplitCB);
if(SFX_ITEM_SET == rSet.GetItemState( RES_ROW_SPLIT, sal_False, &pItem ))
{
aSplitRowCB.Check( ((const SwFmtRowSplit*)pItem)->GetValue() );
}
else
aSplitRowCB.SetState(STATE_DONTKNOW);
aSplitRowCB.SaveValue();
if(bPageBreak)
{
if(SFX_ITEM_SET == rSet.GetItemState( RES_PAGEDESC, sal_False, &pItem ))
{
String sPageDesc;
const SwPageDesc* pDesc = ((const SwFmtPageDesc*)pItem)->GetPageDesc();
aPageNoNF.SetValue(((const SwFmtPageDesc*)pItem)->GetNumOffset());
if(pDesc)
sPageDesc = pDesc->GetName();
if ( sPageDesc.Len() &&
aPageCollLB.GetEntryPos( sPageDesc ) != LISTBOX_ENTRY_NOTFOUND )
{
aPageCollLB.SelectEntry( sPageDesc );
aPageCollCB.Check();
aPgBrkCB.Enable();
aPgBrkRB.Enable();
aColBrkRB.Enable();
aPgBrkBeforeRB.Enable();
aPgBrkAfterRB.Enable();
aPageCollCB.Enable();
aPgBrkCB.Check();
aPgBrkCB.Check( sal_True );
aColBrkRB.Check( sal_False );
aPgBrkBeforeRB.Check( sal_True );
aPgBrkAfterRB.Check( sal_False );
}
else
{
aPageCollLB.SetNoSelection();
aPageCollCB.Check(sal_False);
}
}
if(SFX_ITEM_SET == rSet.GetItemState( RES_BREAK, sal_False, &pItem ))
{
const SvxFmtBreakItem* pPageBreak = (const SvxFmtBreakItem*)pItem;
SvxBreak eBreak = (SvxBreak)pPageBreak->GetValue();
if ( eBreak != SVX_BREAK_NONE )
{
aPgBrkCB.Check();
aPageCollCB.Enable(sal_False);
aPageCollLB.Enable(sal_False);
aPageNoFT.Enable(sal_False);
aPageNoNF.Enable(sal_False);
}
switch ( eBreak )
{
case SVX_BREAK_PAGE_BEFORE:
aPgBrkRB.Check( sal_True );
aColBrkRB.Check( sal_False );
aPgBrkBeforeRB.Check( sal_True );
aPgBrkAfterRB.Check( sal_False );
break;
case SVX_BREAK_PAGE_AFTER:
aPgBrkRB.Check( sal_True );
aColBrkRB.Check( sal_False );
aPgBrkBeforeRB.Check( sal_False );
aPgBrkAfterRB.Check( sal_True );
break;
case SVX_BREAK_COLUMN_BEFORE:
aPgBrkRB.Check( sal_False );
aColBrkRB.Check( sal_True );
aPgBrkBeforeRB.Check( sal_True );
aPgBrkAfterRB.Check( sal_False );
break;
case SVX_BREAK_COLUMN_AFTER:
aPgBrkRB.Check( sal_False );
aColBrkRB.Check( sal_True );
aPgBrkBeforeRB.Check( sal_False );
aPgBrkAfterRB.Check( sal_True );
break;
default:; //prevent warning
}
}
if ( aPgBrkBeforeRB.IsChecked() )
PageBreakPosHdl_Impl( &aPgBrkBeforeRB );
else if ( aPgBrkAfterRB.IsChecked() )
PageBreakPosHdl_Impl( &aPgBrkAfterRB );
PageBreakHdl_Impl( &aPgBrkCB );
}
}
else
{
aPgBrkRB.Enable(sal_False);
aColBrkRB.Enable(sal_False);
aPgBrkBeforeRB.Enable(sal_False);
aPgBrkAfterRB.Enable(sal_False);
aKeepCB .Enable(sal_False);
aSplitCB.Enable(sal_False);
aPgBrkCB.Enable(sal_False);
aPageCollCB.Enable(sal_False);
aPageCollLB.Enable(sal_False);
}
if(SFX_ITEM_SET == rSet.GetItemState( FN_PARAM_TABLE_HEADLINE, sal_False, &pItem ))
{
sal_uInt16 nRep = ((const SfxUInt16Item*)pItem)->GetValue();
aHeadLineCB.Check( nRep > 0 );
aHeadLineCB.SaveValue();
aRepeatHeaderNF.SetValue( nRep );
aRepeatHeaderNF.SaveValue();
}
if ( rSet.GetItemState(FN_TABLE_BOX_TEXTDIRECTION) > SFX_ITEM_AVAILABLE )
{
sal_uLong nDirection = ((const SvxFrameDirectionItem&)rSet.Get(FN_TABLE_BOX_TEXTDIRECTION)).GetValue();
aTextDirectionLB.SelectEntryPos(aTextDirectionLB.GetEntryPos( (const void*)nDirection ));
}
if ( rSet.GetItemState(FN_TABLE_SET_VERT_ALIGN) > SFX_ITEM_AVAILABLE )
{
sal_uInt16 nVert = ((const SfxUInt16Item&)rSet.Get(FN_TABLE_SET_VERT_ALIGN)).GetValue();
sal_uInt16 nPos = 0;
switch(nVert)
{
case text::VertOrientation::NONE: nPos = 0; break;
case text::VertOrientation::CENTER: nPos = 1; break;
case text::VertOrientation::BOTTOM: nPos = 2; break;
}
aVertOrientLB.SelectEntryPos(nPos);
}
aPageCollCB.SaveValue();
aPageCollLB.SaveValue();
aPgBrkCB.SaveValue();
aPgBrkRB.SaveValue();
aColBrkRB.SaveValue();
aPgBrkBeforeRB.SaveValue();
aPgBrkAfterRB.SaveValue();
aPageNoNF.SaveValue();
aTextDirectionLB.SaveValue();
aVertOrientLB.SaveValue();
HeadLineCBClickHdl();
}
/*-----------------16.04.98 14:48-------------------
--------------------------------------------------*/
void SwTextFlowPage::SetShell(SwWrtShell* pSh)
{
pShell = pSh;
bHtmlMode = 0 != (::GetHtmlMode(pShell->GetView().GetDocShell()) & HTMLMODE_ON);
if(bHtmlMode)
{
aPageNoNF.Enable(sal_False);
aPageNoFT.Enable(sal_False);
}
}
/*-----------------12.12.96 16.18-------------------
--------------------------------------------------*/
IMPL_LINK( SwTextFlowPage, PageBreakHdl_Impl, CheckBox*, EMPTYARG )
{
if( aPgBrkCB.IsChecked() )
{
aPgBrkRB. Enable();
aColBrkRB. Enable();
aPgBrkBeforeRB. Enable();
aPgBrkAfterRB. Enable();
if ( aPgBrkRB.IsChecked() && aPgBrkBeforeRB.IsChecked() )
{
aPageCollCB.Enable();
sal_Bool bEnable = aPageCollCB.IsChecked() &&
aPageCollLB.GetEntryCount();
aPageCollLB.Enable(bEnable);
if(!bHtmlMode)
{
aPageNoFT.Enable(bEnable);
aPageNoNF.Enable(bEnable);
}
}
}
else
{
aPageCollCB.Check( sal_False );
aPageCollCB.Enable(sal_False);
aPageCollLB.Enable(sal_False);
aPageNoFT.Enable(sal_False);
aPageNoNF.Enable(sal_False);
aPgBrkRB. Enable(sal_False);
aColBrkRB. Enable(sal_False);
aPgBrkBeforeRB. Enable(sal_False);
aPgBrkAfterRB. Enable(sal_False);
}
return 0;
}
/*-----------------12.12.96 16.18-------------------
--------------------------------------------------*/
IMPL_LINK( SwTextFlowPage, ApplyCollClickHdl_Impl, CheckBox*, EMPTYARG )
{
sal_Bool bEnable = sal_False;
if ( aPageCollCB.IsChecked() &&
aPageCollLB.GetEntryCount() )
{
bEnable = sal_True;
aPageCollLB.SelectEntryPos( 0 );
}
else
{
aPageCollLB.SetNoSelection();
}
aPageCollLB.Enable(bEnable);
if(!bHtmlMode)
{
aPageNoFT.Enable(bEnable);
aPageNoNF.Enable(bEnable);
}
return 0;
}
/*-----------------12.12.96 16.18-------------------
--------------------------------------------------*/
IMPL_LINK( SwTextFlowPage, PageBreakPosHdl_Impl, RadioButton*, pBtn )
{
if ( aPgBrkCB.IsChecked() )
{
if ( pBtn == &aPgBrkBeforeRB && aPgBrkRB.IsChecked() )
{
aPageCollCB.Enable();
sal_Bool bEnable = aPageCollCB.IsChecked() &&
aPageCollLB.GetEntryCount();
aPageCollLB.Enable(bEnable);
if(!bHtmlMode)
{
aPageNoFT.Enable(bEnable);
aPageNoNF.Enable(bEnable);
}
}
else if ( pBtn == &aPgBrkAfterRB )
{
aPageCollCB .Check( sal_False );
aPageCollCB .Enable(sal_False);
aPageCollLB .Enable(sal_False);
aPageNoFT .Enable(sal_False);
aPageNoNF .Enable(sal_False);
}
}
return 0;
}
/*-----------------12.12.96 16.18-------------------
--------------------------------------------------*/
IMPL_LINK( SwTextFlowPage, PageBreakTypeHdl_Impl, RadioButton*, pBtn )
{
if ( pBtn == &aColBrkRB || aPgBrkAfterRB.IsChecked() )
{
aPageCollCB .Check(sal_False);
aPageCollCB .Enable(sal_False);
aPageCollLB .Enable(sal_False);
aPageNoFT .Enable(sal_False);
aPageNoNF .Enable(sal_False);
}
else if ( aPgBrkBeforeRB.IsChecked() )
PageBreakPosHdl_Impl( &aPgBrkBeforeRB );
return 0;
}
/*-----------------17.11.2003 11:30-----------------
*
* --------------------------------------------------*/
IMPL_LINK( SwTextFlowPage, SplitHdl_Impl, CheckBox*, pBox )
{
aSplitRowCB.Enable(pBox->IsChecked());
return 0;
}
/*-----------------17.11.2003 11:30-----------------
*
* --------------------------------------------------*/
IMPL_LINK( SwTextFlowPage, SplitRowHdl_Impl, TriStateBox*, pBox )
{
pBox->EnableTriState(sal_False);
return 0;
}
IMPL_LINK( SwTextFlowPage, HeadLineCBClickHdl, void*, EMPTYARG )
{
aRepeatHeaderCombo.Enable(aHeadLineCB.IsChecked());
return 0;
}
/*-----------------30.05.97 07:37-------------------
--------------------------------------------------*/
void SwTextFlowPage::DisablePageBreak()
{
bPageBreak = sal_False;
aPgBrkCB .Disable();
aPgBrkRB .Disable();
aColBrkRB .Disable();
aPgBrkBeforeRB .Disable();
aPgBrkAfterRB .Disable();
aPageCollCB .Disable();
aPageCollLB .Disable();
aPageNoFT .Disable();
aPageNoNF .Disable();
}