1*cdf0e10cSrcweir /************************************************************************* 2*cdf0e10cSrcweir * 3*cdf0e10cSrcweir * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4*cdf0e10cSrcweir * 5*cdf0e10cSrcweir * Copyright 2000, 2010 Oracle and/or its affiliates. 6*cdf0e10cSrcweir * 7*cdf0e10cSrcweir * OpenOffice.org - a multi-platform office productivity suite 8*cdf0e10cSrcweir * 9*cdf0e10cSrcweir * This file is part of OpenOffice.org. 10*cdf0e10cSrcweir * 11*cdf0e10cSrcweir * OpenOffice.org is free software: you can redistribute it and/or modify 12*cdf0e10cSrcweir * it under the terms of the GNU Lesser General Public License version 3 13*cdf0e10cSrcweir * only, as published by the Free Software Foundation. 14*cdf0e10cSrcweir * 15*cdf0e10cSrcweir * OpenOffice.org is distributed in the hope that it will be useful, 16*cdf0e10cSrcweir * but WITHOUT ANY WARRANTY; without even the implied warranty of 17*cdf0e10cSrcweir * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18*cdf0e10cSrcweir * GNU Lesser General Public License version 3 for more details 19*cdf0e10cSrcweir * (a copy is included in the LICENSE file that accompanied this code). 20*cdf0e10cSrcweir * 21*cdf0e10cSrcweir * You should have received a copy of the GNU Lesser General Public License 22*cdf0e10cSrcweir * version 3 along with OpenOffice.org. If not, see 23*cdf0e10cSrcweir * <http://www.openoffice.org/license.html> 24*cdf0e10cSrcweir * for a copy of the LGPLv3 License. 25*cdf0e10cSrcweir * 26*cdf0e10cSrcweir ************************************************************************/ 27*cdf0e10cSrcweir 28*cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove 29*cdf0e10cSrcweir #include "precompiled_sw.hxx" 30*cdf0e10cSrcweir 31*cdf0e10cSrcweir #ifdef SW_DLLIMPLEMENTATION 32*cdf0e10cSrcweir #undef SW_DLLIMPLEMENTATION 33*cdf0e10cSrcweir #endif 34*cdf0e10cSrcweir 35*cdf0e10cSrcweir #include "column.hxx" 36*cdf0e10cSrcweir 37*cdf0e10cSrcweir #include "hintids.hxx" 38*cdf0e10cSrcweir #include <svx/htmlmode.hxx> 39*cdf0e10cSrcweir #include <editeng/borderline.hxx> 40*cdf0e10cSrcweir #include <editeng/boxitem.hxx> 41*cdf0e10cSrcweir #include <editeng/lrspitem.hxx> 42*cdf0e10cSrcweir #include <editeng/sizeitem.hxx> 43*cdf0e10cSrcweir #include "editeng/frmdiritem.hxx" 44*cdf0e10cSrcweir #include <svl/ctloptions.hxx> 45*cdf0e10cSrcweir #include <sfx2/dispatch.hxx> 46*cdf0e10cSrcweir #include <vcl/msgbox.hxx> 47*cdf0e10cSrcweir #include <swmodule.hxx> 48*cdf0e10cSrcweir 49*cdf0e10cSrcweir #include <helpid.h> 50*cdf0e10cSrcweir #include "globals.hrc" 51*cdf0e10cSrcweir #include "swtypes.hxx" 52*cdf0e10cSrcweir #include "wrtsh.hxx" 53*cdf0e10cSrcweir #include "view.hxx" 54*cdf0e10cSrcweir #include "docsh.hxx" 55*cdf0e10cSrcweir #include "uitool.hxx" 56*cdf0e10cSrcweir #include "cmdid.h" 57*cdf0e10cSrcweir #include "viewopt.hxx" 58*cdf0e10cSrcweir #include "format.hxx" 59*cdf0e10cSrcweir #include "frmmgr.hxx" 60*cdf0e10cSrcweir #include "frmdlg.hxx" 61*cdf0e10cSrcweir #include "colmgr.hxx" 62*cdf0e10cSrcweir #include "prcntfld.hxx" 63*cdf0e10cSrcweir #include "paratr.hxx" 64*cdf0e10cSrcweir #include "frmui.hrc" 65*cdf0e10cSrcweir #include "poolfmt.hrc" 66*cdf0e10cSrcweir #include "column.hrc" 67*cdf0e10cSrcweir #include <section.hxx> 68*cdf0e10cSrcweir #include <docary.hxx> 69*cdf0e10cSrcweir #include <pagedesc.hxx> 70*cdf0e10cSrcweir 71*cdf0e10cSrcweir #include "access.hrc" 72*cdf0e10cSrcweir 73*cdf0e10cSrcweir #define FRAME_FORMAT_WIDTH 1000 74*cdf0e10cSrcweir 75*cdf0e10cSrcweir // sw/inc/fmtclds.hxx 76*cdf0e10cSrcweir SV_IMPL_PTRARR( SwColumns, SwColumnPtr ) 77*cdf0e10cSrcweir 78*cdf0e10cSrcweir /*-------------------------------------------------------------------- 79*cdf0e10cSrcweir Beschreibung: Statische Daten 80*cdf0e10cSrcweir --------------------------------------------------------------------*/ 81*cdf0e10cSrcweir 82*cdf0e10cSrcweir static const sal_uInt16 __FAR_DATA nLines[] = { 83*cdf0e10cSrcweir DEF_LINE_WIDTH_0, 84*cdf0e10cSrcweir DEF_LINE_WIDTH_1, 85*cdf0e10cSrcweir DEF_LINE_WIDTH_2, 86*cdf0e10cSrcweir DEF_LINE_WIDTH_3, 87*cdf0e10cSrcweir DEF_LINE_WIDTH_4 88*cdf0e10cSrcweir }; 89*cdf0e10cSrcweir 90*cdf0e10cSrcweir static const sal_uInt16 nLineCount = sizeof(nLines) / sizeof(nLines[0]); 91*cdf0e10cSrcweir static const sal_uInt16 nVisCols = 3; 92*cdf0e10cSrcweir 93*cdf0e10cSrcweir inline sal_Bool IsMarkInSameSection( SwWrtShell& rWrtSh, const SwSection* pSect ) 94*cdf0e10cSrcweir { 95*cdf0e10cSrcweir rWrtSh.SwapPam(); 96*cdf0e10cSrcweir sal_Bool bRet = pSect == rWrtSh.GetCurrSection(); 97*cdf0e10cSrcweir rWrtSh.SwapPam(); 98*cdf0e10cSrcweir return bRet; 99*cdf0e10cSrcweir } 100*cdf0e10cSrcweir 101*cdf0e10cSrcweir /*-------------------------------------------------------------------- 102*cdf0e10cSrcweir Beschreibung: 103*cdf0e10cSrcweir --------------------------------------------------------------------*/ 104*cdf0e10cSrcweir 105*cdf0e10cSrcweir SwColumnDlg::SwColumnDlg(Window* pParent, SwWrtShell& rSh) : 106*cdf0e10cSrcweir SfxModalDialog(pParent, SW_RES(DLG_COLUMN)), 107*cdf0e10cSrcweir aOK(this, SW_RES(PB_OK)), 108*cdf0e10cSrcweir aCancel(this, SW_RES(PB_CANCEL)), 109*cdf0e10cSrcweir aHelp(this, SW_RES(PB_HELP)), 110*cdf0e10cSrcweir aApplyToFT(this, SW_RES(FT_APPLY_TO)), 111*cdf0e10cSrcweir aApplyToLB(this, SW_RES(LB_APPLY_TO)), 112*cdf0e10cSrcweir rWrtShell(rSh), 113*cdf0e10cSrcweir pPageSet(0), 114*cdf0e10cSrcweir pSectionSet(0), 115*cdf0e10cSrcweir pSelectionSet(0), 116*cdf0e10cSrcweir pFrameSet(0), 117*cdf0e10cSrcweir nOldSelection(0), 118*cdf0e10cSrcweir nSelectionWidth(0), 119*cdf0e10cSrcweir bPageChanged(sal_False), 120*cdf0e10cSrcweir bSectionChanged(sal_False), 121*cdf0e10cSrcweir bSelSectionChanged(sal_False), 122*cdf0e10cSrcweir bFrameChanged(sal_False) 123*cdf0e10cSrcweir { 124*cdf0e10cSrcweir FreeResource(); 125*cdf0e10cSrcweir 126*cdf0e10cSrcweir SwRect aRect; 127*cdf0e10cSrcweir rWrtShell.CalcBoundRect(aRect, FLY_AS_CHAR); 128*cdf0e10cSrcweir 129*cdf0e10cSrcweir nSelectionWidth = aRect.Width(); 130*cdf0e10cSrcweir 131*cdf0e10cSrcweir SfxItemSet* pColPgSet = 0; 132*cdf0e10cSrcweir static sal_uInt16 __READONLY_DATA aSectIds[] = { RES_COL, RES_COL, 133*cdf0e10cSrcweir RES_FRM_SIZE, RES_FRM_SIZE, 134*cdf0e10cSrcweir RES_COLUMNBALANCE, RES_FRAMEDIR, 135*cdf0e10cSrcweir 0 }; 136*cdf0e10cSrcweir 137*cdf0e10cSrcweir const SwSection* pCurrSection = rWrtShell.GetCurrSection(); 138*cdf0e10cSrcweir sal_uInt16 nFullSectCnt = rWrtShell.GetFullSelectedSectionCount(); 139*cdf0e10cSrcweir if( pCurrSection && ( !rWrtShell.HasSelection() || 0 != nFullSectCnt )) 140*cdf0e10cSrcweir { 141*cdf0e10cSrcweir nSelectionWidth = rSh.GetSectionWidth(*pCurrSection->GetFmt()); 142*cdf0e10cSrcweir if ( !nSelectionWidth ) 143*cdf0e10cSrcweir nSelectionWidth = USHRT_MAX; 144*cdf0e10cSrcweir pSectionSet = new SfxItemSet( rWrtShell.GetAttrPool(), aSectIds ); 145*cdf0e10cSrcweir pSectionSet->Put( pCurrSection->GetFmt()->GetAttrSet() ); 146*cdf0e10cSrcweir pColPgSet = pSectionSet; 147*cdf0e10cSrcweir aApplyToLB.RemoveEntry( aApplyToLB.GetEntryPos( 148*cdf0e10cSrcweir (void*)( 1 >= nFullSectCnt 149*cdf0e10cSrcweir ? LISTBOX_SECTIONS 150*cdf0e10cSrcweir : LISTBOX_SECTION ))); 151*cdf0e10cSrcweir } 152*cdf0e10cSrcweir else 153*cdf0e10cSrcweir { 154*cdf0e10cSrcweir aApplyToLB.RemoveEntry(aApplyToLB.GetEntryPos( (void*) LISTBOX_SECTION )); 155*cdf0e10cSrcweir aApplyToLB.RemoveEntry(aApplyToLB.GetEntryPos( (void*) LISTBOX_SECTIONS )); 156*cdf0e10cSrcweir } 157*cdf0e10cSrcweir 158*cdf0e10cSrcweir if( rWrtShell.HasSelection() && rWrtShell.IsInsRegionAvailable() && 159*cdf0e10cSrcweir ( !pCurrSection || ( 1 != nFullSectCnt && 160*cdf0e10cSrcweir IsMarkInSameSection( rWrtShell, pCurrSection ) ))) 161*cdf0e10cSrcweir { 162*cdf0e10cSrcweir pSelectionSet = new SfxItemSet( rWrtShell.GetAttrPool(), aSectIds ); 163*cdf0e10cSrcweir pColPgSet = pSelectionSet; 164*cdf0e10cSrcweir } 165*cdf0e10cSrcweir else 166*cdf0e10cSrcweir aApplyToLB.RemoveEntry(aApplyToLB.GetEntryPos( (void*) LISTBOX_SELECTION )); 167*cdf0e10cSrcweir 168*cdf0e10cSrcweir if( rWrtShell.GetFlyFrmFmt() ) 169*cdf0e10cSrcweir { 170*cdf0e10cSrcweir const SwFrmFmt* pFmt = rSh.GetFlyFrmFmt() ; 171*cdf0e10cSrcweir pFrameSet = new SfxItemSet(rWrtShell.GetAttrPool(), aSectIds ); 172*cdf0e10cSrcweir pFrameSet->Put(pFmt->GetFrmSize()); 173*cdf0e10cSrcweir pFrameSet->Put(pFmt->GetCol()); 174*cdf0e10cSrcweir pColPgSet = pFrameSet; 175*cdf0e10cSrcweir } 176*cdf0e10cSrcweir else 177*cdf0e10cSrcweir aApplyToLB.RemoveEntry(aApplyToLB.GetEntryPos( (void*) LISTBOX_FRAME )); 178*cdf0e10cSrcweir 179*cdf0e10cSrcweir 180*cdf0e10cSrcweir sal_uInt16 nPagePos = aApplyToLB.GetEntryPos( (void*) LISTBOX_PAGE ); 181*cdf0e10cSrcweir const SwPageDesc* pPageDesc = rWrtShell.GetSelectedPageDescs(); 182*cdf0e10cSrcweir if( pPageDesc ) 183*cdf0e10cSrcweir { 184*cdf0e10cSrcweir pPageSet = new SfxItemSet( rWrtShell.GetAttrPool(), 185*cdf0e10cSrcweir RES_COL, RES_COL, 186*cdf0e10cSrcweir RES_FRM_SIZE, RES_FRM_SIZE, 187*cdf0e10cSrcweir RES_LR_SPACE, RES_LR_SPACE, 188*cdf0e10cSrcweir 0 ); 189*cdf0e10cSrcweir 190*cdf0e10cSrcweir String sPageStr = aApplyToLB.GetEntry(nPagePos); 191*cdf0e10cSrcweir aApplyToLB.RemoveEntry( nPagePos ); 192*cdf0e10cSrcweir sPageStr += pPageDesc->GetName(); 193*cdf0e10cSrcweir aApplyToLB.InsertEntry( sPageStr, nPagePos ); 194*cdf0e10cSrcweir aApplyToLB.SetEntryData( nPagePos, (void*) LISTBOX_PAGE); 195*cdf0e10cSrcweir 196*cdf0e10cSrcweir const SwFrmFmt &rFmt = pPageDesc->GetMaster(); 197*cdf0e10cSrcweir nPageWidth = rFmt.GetFrmSize().GetSize().Width(); 198*cdf0e10cSrcweir 199*cdf0e10cSrcweir const SvxLRSpaceItem& rLRSpace = (const SvxLRSpaceItem&)rFmt.GetLRSpace(); 200*cdf0e10cSrcweir const SvxBoxItem& rBox = (const SvxBoxItem&) rFmt.GetBox(); 201*cdf0e10cSrcweir nPageWidth -= rLRSpace.GetLeft() + rLRSpace.GetRight() + rBox.GetDistance(); 202*cdf0e10cSrcweir 203*cdf0e10cSrcweir pPageSet->Put(rFmt.GetCol()); 204*cdf0e10cSrcweir pPageSet->Put(rFmt.GetLRSpace()); 205*cdf0e10cSrcweir pColPgSet = pPageSet; 206*cdf0e10cSrcweir } 207*cdf0e10cSrcweir else 208*cdf0e10cSrcweir aApplyToLB.RemoveEntry( nPagePos ); 209*cdf0e10cSrcweir 210*cdf0e10cSrcweir 211*cdf0e10cSrcweir ASSERT( pColPgSet, "" ); 212*cdf0e10cSrcweir // TabPage erzeugen 213*cdf0e10cSrcweir SwColumnPage* pPage = (SwColumnPage*) SwColumnPage::Create( this, 214*cdf0e10cSrcweir *pColPgSet ); 215*cdf0e10cSrcweir pTabPage = pPage; 216*cdf0e10cSrcweir 217*cdf0e10cSrcweir //Groesse anpassen 218*cdf0e10cSrcweir Size aPageSize(pTabPage->GetSizePixel()); 219*cdf0e10cSrcweir Size aDlgSize(GetOutputSizePixel()); 220*cdf0e10cSrcweir aDlgSize.Height() = aPageSize.Height(); 221*cdf0e10cSrcweir SetOutputSizePixel(aDlgSize); 222*cdf0e10cSrcweir pTabPage->Show(); 223*cdf0e10cSrcweir 224*cdf0e10cSrcweir aApplyToLB.SelectEntryPos(0); 225*cdf0e10cSrcweir ObjectHdl(0); 226*cdf0e10cSrcweir 227*cdf0e10cSrcweir aApplyToLB.SetSelectHdl(LINK(this, SwColumnDlg, ObjectHdl)); 228*cdf0e10cSrcweir aOK.SetClickHdl(LINK(this, SwColumnDlg, OkHdl)); 229*cdf0e10cSrcweir //#i80458# if no columns can be set then disable OK 230*cdf0e10cSrcweir if( !aApplyToLB.GetEntryCount() ) 231*cdf0e10cSrcweir aOK.Enable( sal_False ); 232*cdf0e10cSrcweir //#i97810# set focus to the TabPage 233*cdf0e10cSrcweir pTabPage->ActivateColumnControl(); 234*cdf0e10cSrcweir } 235*cdf0e10cSrcweir 236*cdf0e10cSrcweir /*-------------------------------------------------------------------- 237*cdf0e10cSrcweir Beschreibung: 238*cdf0e10cSrcweir --------------------------------------------------------------------*/ 239*cdf0e10cSrcweir 240*cdf0e10cSrcweir SwColumnDlg::~SwColumnDlg() 241*cdf0e10cSrcweir { 242*cdf0e10cSrcweir delete pTabPage; 243*cdf0e10cSrcweir delete pPageSet; 244*cdf0e10cSrcweir delete pSectionSet; 245*cdf0e10cSrcweir delete pSelectionSet; 246*cdf0e10cSrcweir } 247*cdf0e10cSrcweir 248*cdf0e10cSrcweir /* -----------------26.05.99 11:40------------------- 249*cdf0e10cSrcweir * 250*cdf0e10cSrcweir * --------------------------------------------------*/ 251*cdf0e10cSrcweir IMPL_LINK(SwColumnDlg, ObjectHdl, ListBox*, pBox) 252*cdf0e10cSrcweir { 253*cdf0e10cSrcweir SfxItemSet* pSet = 0; 254*cdf0e10cSrcweir switch(nOldSelection) 255*cdf0e10cSrcweir { 256*cdf0e10cSrcweir case LISTBOX_SELECTION : 257*cdf0e10cSrcweir pSet = pSelectionSet; 258*cdf0e10cSrcweir break; 259*cdf0e10cSrcweir case LISTBOX_SECTION : 260*cdf0e10cSrcweir pSet = pSectionSet; 261*cdf0e10cSrcweir bSectionChanged = sal_True; 262*cdf0e10cSrcweir break; 263*cdf0e10cSrcweir case LISTBOX_SECTIONS : 264*cdf0e10cSrcweir pSet = pSectionSet; 265*cdf0e10cSrcweir bSelSectionChanged = sal_True; 266*cdf0e10cSrcweir break; 267*cdf0e10cSrcweir case LISTBOX_PAGE : 268*cdf0e10cSrcweir pSet = pPageSet; 269*cdf0e10cSrcweir bPageChanged = sal_True; 270*cdf0e10cSrcweir break; 271*cdf0e10cSrcweir case LISTBOX_FRAME: 272*cdf0e10cSrcweir pSet = pFrameSet; 273*cdf0e10cSrcweir bFrameChanged = sal_True; 274*cdf0e10cSrcweir break; 275*cdf0e10cSrcweir } 276*cdf0e10cSrcweir if(pBox) 277*cdf0e10cSrcweir { 278*cdf0e10cSrcweir pTabPage->FillItemSet(*pSet); 279*cdf0e10cSrcweir } 280*cdf0e10cSrcweir nOldSelection = (long)aApplyToLB.GetEntryData(aApplyToLB.GetSelectEntryPos()); 281*cdf0e10cSrcweir long nWidth = nSelectionWidth; 282*cdf0e10cSrcweir switch(nOldSelection) 283*cdf0e10cSrcweir { 284*cdf0e10cSrcweir case LISTBOX_SELECTION : 285*cdf0e10cSrcweir pSet = pSelectionSet; 286*cdf0e10cSrcweir if( pSelectionSet ) 287*cdf0e10cSrcweir pSet->Put(SwFmtFrmSize(ATT_VAR_SIZE, nWidth, nWidth)); 288*cdf0e10cSrcweir break; 289*cdf0e10cSrcweir case LISTBOX_SECTION : 290*cdf0e10cSrcweir case LISTBOX_SECTIONS : 291*cdf0e10cSrcweir pSet = pSectionSet; 292*cdf0e10cSrcweir pSet->Put(SwFmtFrmSize(ATT_VAR_SIZE, nWidth, nWidth)); 293*cdf0e10cSrcweir break; 294*cdf0e10cSrcweir case LISTBOX_PAGE : 295*cdf0e10cSrcweir nWidth = nPageWidth; 296*cdf0e10cSrcweir pSet = pPageSet; 297*cdf0e10cSrcweir pSet->Put(SwFmtFrmSize(ATT_VAR_SIZE, nWidth, nWidth)); 298*cdf0e10cSrcweir break; 299*cdf0e10cSrcweir case LISTBOX_FRAME: 300*cdf0e10cSrcweir pSet = pFrameSet; 301*cdf0e10cSrcweir break; 302*cdf0e10cSrcweir } 303*cdf0e10cSrcweir 304*cdf0e10cSrcweir sal_Bool bIsSection = pSet == pSectionSet || pSet == pSelectionSet; 305*cdf0e10cSrcweir pTabPage->ShowBalance(bIsSection); 306*cdf0e10cSrcweir pTabPage->SetInSection(bIsSection); 307*cdf0e10cSrcweir pTabPage->SetFrmMode(sal_True); 308*cdf0e10cSrcweir pTabPage->SetPageWidth(nWidth); 309*cdf0e10cSrcweir if( pSet ) 310*cdf0e10cSrcweir pTabPage->Reset(*pSet); 311*cdf0e10cSrcweir return 0; 312*cdf0e10cSrcweir } 313*cdf0e10cSrcweir /* -----------------26.05.99 12:32------------------- 314*cdf0e10cSrcweir * 315*cdf0e10cSrcweir * --------------------------------------------------*/ 316*cdf0e10cSrcweir IMPL_LINK(SwColumnDlg, OkHdl, OKButton*, EMPTYARG) 317*cdf0e10cSrcweir { 318*cdf0e10cSrcweir //aktuelle Selektion auswerten 319*cdf0e10cSrcweir SfxItemSet* pSet = 0; 320*cdf0e10cSrcweir switch(nOldSelection) 321*cdf0e10cSrcweir { 322*cdf0e10cSrcweir case LISTBOX_SELECTION : 323*cdf0e10cSrcweir pSet = pSelectionSet; 324*cdf0e10cSrcweir break; 325*cdf0e10cSrcweir case LISTBOX_SECTION : 326*cdf0e10cSrcweir pSet = pSectionSet; 327*cdf0e10cSrcweir bSectionChanged = sal_True; 328*cdf0e10cSrcweir break; 329*cdf0e10cSrcweir case LISTBOX_SECTIONS : 330*cdf0e10cSrcweir pSet = pSectionSet; 331*cdf0e10cSrcweir bSelSectionChanged = sal_True; 332*cdf0e10cSrcweir break; 333*cdf0e10cSrcweir case LISTBOX_PAGE : 334*cdf0e10cSrcweir pSet = pPageSet; 335*cdf0e10cSrcweir bPageChanged = sal_True; 336*cdf0e10cSrcweir break; 337*cdf0e10cSrcweir case LISTBOX_FRAME: 338*cdf0e10cSrcweir pSet = pFrameSet; 339*cdf0e10cSrcweir bFrameChanged = sal_True; 340*cdf0e10cSrcweir break; 341*cdf0e10cSrcweir } 342*cdf0e10cSrcweir pTabPage->FillItemSet(*pSet); 343*cdf0e10cSrcweir 344*cdf0e10cSrcweir if(pSelectionSet && SFX_ITEM_SET == pSelectionSet->GetItemState(RES_COL)) 345*cdf0e10cSrcweir { 346*cdf0e10cSrcweir //Bereich mit Spalten einfuegen 347*cdf0e10cSrcweir const SwFmtCol& rColItem = (const SwFmtCol&)pSelectionSet->Get(RES_COL); 348*cdf0e10cSrcweir //nur, wenn es auch Spalten gibt! 349*cdf0e10cSrcweir if(rColItem.GetNumCols() > 1) 350*cdf0e10cSrcweir rWrtShell.GetView().GetViewFrame()->GetDispatcher()->Execute( 351*cdf0e10cSrcweir FN_INSERT_REGION, SFX_CALLMODE_ASYNCHRON, *pSelectionSet ); 352*cdf0e10cSrcweir } 353*cdf0e10cSrcweir 354*cdf0e10cSrcweir if(pSectionSet && pSectionSet->Count() && bSectionChanged ) 355*cdf0e10cSrcweir { 356*cdf0e10cSrcweir const SwSection* pCurrSection = rWrtShell.GetCurrSection(); 357*cdf0e10cSrcweir const SwSectionFmt* pFmt = pCurrSection->GetFmt(); 358*cdf0e10cSrcweir sal_uInt16 nNewPos = rWrtShell.GetSectionFmtPos( *pFmt ); 359*cdf0e10cSrcweir SwSectionData aData(*pCurrSection); 360*cdf0e10cSrcweir rWrtShell.UpdateSection( nNewPos, aData, pSectionSet ); 361*cdf0e10cSrcweir } 362*cdf0e10cSrcweir 363*cdf0e10cSrcweir if(pSectionSet && pSectionSet->Count() && bSelSectionChanged ) 364*cdf0e10cSrcweir { 365*cdf0e10cSrcweir rWrtShell.SetSectionAttr( *pSectionSet ); 366*cdf0e10cSrcweir } 367*cdf0e10cSrcweir 368*cdf0e10cSrcweir if(pPageSet && SFX_ITEM_SET == pPageSet->GetItemState(RES_COL) && bPageChanged) 369*cdf0e10cSrcweir { 370*cdf0e10cSrcweir // aktuellen PageDescriptor ermitteln und damit den Set fuellen 371*cdf0e10cSrcweir const sal_uInt16 nCurIdx = rWrtShell.GetCurPageDesc(); 372*cdf0e10cSrcweir SwPageDesc aPageDesc(rWrtShell.GetPageDesc(nCurIdx)); 373*cdf0e10cSrcweir SwFrmFmt &rFmt = aPageDesc.GetMaster(); 374*cdf0e10cSrcweir rFmt.SetFmtAttr(pPageSet->Get(RES_COL)); 375*cdf0e10cSrcweir rWrtShell.ChgPageDesc(nCurIdx, aPageDesc); 376*cdf0e10cSrcweir } 377*cdf0e10cSrcweir if(pFrameSet && SFX_ITEM_SET == pFrameSet->GetItemState(RES_COL) && bFrameChanged) 378*cdf0e10cSrcweir { 379*cdf0e10cSrcweir SfxItemSet aTmp(*pFrameSet->GetPool(), RES_COL, RES_COL); 380*cdf0e10cSrcweir aTmp.Put(*pFrameSet); 381*cdf0e10cSrcweir rWrtShell.StartAction(); 382*cdf0e10cSrcweir rWrtShell.Push(); 383*cdf0e10cSrcweir rWrtShell.SetFlyFrmAttr( aTmp ); 384*cdf0e10cSrcweir //die Rahmenselektion wieder aufheben 385*cdf0e10cSrcweir if(rWrtShell.IsFrmSelected()) 386*cdf0e10cSrcweir { 387*cdf0e10cSrcweir rWrtShell.UnSelectFrm(); 388*cdf0e10cSrcweir rWrtShell.LeaveSelFrmMode(); 389*cdf0e10cSrcweir } 390*cdf0e10cSrcweir rWrtShell.Pop(); 391*cdf0e10cSrcweir rWrtShell.EndAction(); 392*cdf0e10cSrcweir } 393*cdf0e10cSrcweir EndDialog(RET_OK); 394*cdf0e10cSrcweir return 0; 395*cdf0e10cSrcweir } 396*cdf0e10cSrcweir 397*cdf0e10cSrcweir /*-------------------------------------------------------------------- 398*cdf0e10cSrcweir Beschreibung: 399*cdf0e10cSrcweir --------------------------------------------------------------------*/ 400*cdf0e10cSrcweir 401*cdf0e10cSrcweir #if OSL_DEBUG_LEVEL < 2 402*cdf0e10cSrcweir inline 403*cdf0e10cSrcweir #endif 404*cdf0e10cSrcweir sal_uInt16 GetMaxWidth( SwColMgr* pColMgr, sal_uInt16 nCols ) 405*cdf0e10cSrcweir { 406*cdf0e10cSrcweir sal_uInt16 nMax = pColMgr->GetActualSize(); 407*cdf0e10cSrcweir if( --nCols ) 408*cdf0e10cSrcweir nMax -= pColMgr->GetGutterWidth() * nCols; 409*cdf0e10cSrcweir return nMax; 410*cdf0e10cSrcweir } 411*cdf0e10cSrcweir 412*cdf0e10cSrcweir static sal_uInt16 __FAR_DATA aPageRg[] = { 413*cdf0e10cSrcweir RES_COL, RES_COL, 414*cdf0e10cSrcweir 0 415*cdf0e10cSrcweir }; 416*cdf0e10cSrcweir 417*cdf0e10cSrcweir 418*cdf0e10cSrcweir DBG_NAME(columnhdl) 419*cdf0e10cSrcweir 420*cdf0e10cSrcweir 421*cdf0e10cSrcweir 422*cdf0e10cSrcweir sal_uInt16 lcl_LineWidthToPos(sal_uLong nWidth) 423*cdf0e10cSrcweir { 424*cdf0e10cSrcweir const sal_uInt16 nUShortWidth = (sal_uInt16)nWidth; 425*cdf0e10cSrcweir for(sal_uInt16 i = 0; i < nLineCount; ++i) 426*cdf0e10cSrcweir if(nUShortWidth == nLines[i]) 427*cdf0e10cSrcweir return i; 428*cdf0e10cSrcweir return 0; 429*cdf0e10cSrcweir } 430*cdf0e10cSrcweir 431*cdf0e10cSrcweir 432*cdf0e10cSrcweir 433*cdf0e10cSrcweir void SwColumnPage::ResetColWidth() 434*cdf0e10cSrcweir { 435*cdf0e10cSrcweir if( nCols ) 436*cdf0e10cSrcweir { 437*cdf0e10cSrcweir sal_uInt16 nWidth = GetMaxWidth( pColMgr, nCols ); 438*cdf0e10cSrcweir nWidth = nWidth / nCols; 439*cdf0e10cSrcweir 440*cdf0e10cSrcweir for(sal_uInt16 i = 0; i < nCols; ++i) 441*cdf0e10cSrcweir nColWidth[i] = (long) nWidth; 442*cdf0e10cSrcweir } 443*cdf0e10cSrcweir 444*cdf0e10cSrcweir } 445*cdf0e10cSrcweir 446*cdf0e10cSrcweir /*-------------------------------------------------------------------- 447*cdf0e10cSrcweir Beschreibung: Jetzt als TabPage 448*cdf0e10cSrcweir --------------------------------------------------------------------*/ 449*cdf0e10cSrcweir 450*cdf0e10cSrcweir 451*cdf0e10cSrcweir 452*cdf0e10cSrcweir SwColumnPage::SwColumnPage(Window *pParent, const SfxItemSet &rSet) 453*cdf0e10cSrcweir 454*cdf0e10cSrcweir : SfxTabPage(pParent, SW_RES(TP_COLUMN), rSet), 455*cdf0e10cSrcweir 456*cdf0e10cSrcweir aFLGroup(this, SW_RES(FL_COLUMNS )), 457*cdf0e10cSrcweir aClNrLbl(this, SW_RES(FT_NUMBER )), 458*cdf0e10cSrcweir aCLNrEdt(this, SW_RES(ED_NUMBER )), 459*cdf0e10cSrcweir aDefaultVS(this, SW_RES(VS_DEFAULTS)), 460*cdf0e10cSrcweir aBalanceColsCB(this, SW_RES(CB_BALANCECOLS)), 461*cdf0e10cSrcweir 462*cdf0e10cSrcweir aFLLayout(this, SW_RES(FL_LAYOUT)), 463*cdf0e10cSrcweir aBtnUp(this, SW_RES(BTN_DOWN)), 464*cdf0e10cSrcweir aColumnFT(this, SW_RES(FT_COLUMN)), 465*cdf0e10cSrcweir aWidthFT(this, SW_RES(FT_WIDTH)), 466*cdf0e10cSrcweir aDistFT(this, SW_RES(FT_DIST)), 467*cdf0e10cSrcweir aLbl1(this, SW_RES(FT_1)), 468*cdf0e10cSrcweir aEd1(this, SW_RES(ED_1)), 469*cdf0e10cSrcweir aDistEd1(this, SW_RES(ED_DIST1)), 470*cdf0e10cSrcweir aLbl2(this, SW_RES(FT_2)), 471*cdf0e10cSrcweir aEd2(this, SW_RES(ED_2)), 472*cdf0e10cSrcweir aDistEd2(this, SW_RES(ED_DIST2)), 473*cdf0e10cSrcweir aLbl3(this, SW_RES(FT_3)), 474*cdf0e10cSrcweir aEd3(this, SW_RES(ED_3)), 475*cdf0e10cSrcweir aBtnDown(this, SW_RES(BTN_UP)), 476*cdf0e10cSrcweir aAutoWidthBox(this, SW_RES(CB_AUTO_WIDTH)), 477*cdf0e10cSrcweir 478*cdf0e10cSrcweir aFLLineType(this, SW_RES(FL_LINETYPE)), 479*cdf0e10cSrcweir aLineTypeLbl(this, SW_RES(FT_STYLE)), 480*cdf0e10cSrcweir aLineTypeDLB(this, SW_RES(LB_STYLE)), 481*cdf0e10cSrcweir aLineHeightLbl(this, SW_RES(FT_HEIGHT)), 482*cdf0e10cSrcweir aLineHeightEdit(this, SW_RES(ED_HEIGHT)), 483*cdf0e10cSrcweir aLinePosLbl(this, SW_RES(FT_POSITION)), 484*cdf0e10cSrcweir aLinePosDLB(this, SW_RES(LB_POSITION)), 485*cdf0e10cSrcweir 486*cdf0e10cSrcweir aVertFL(this, SW_RES(FL_VERT)), 487*cdf0e10cSrcweir aPropertiesFL( this, SW_RES( FL_PROPERTIES )), 488*cdf0e10cSrcweir aTextDirectionFT( this, SW_RES( FT_TEXTDIRECTION )), 489*cdf0e10cSrcweir aTextDirectionLB( this, SW_RES( LB_TEXTDIRECTION )), 490*cdf0e10cSrcweir 491*cdf0e10cSrcweir aPgeExampleWN(this, SW_RES(WN_BSP)), 492*cdf0e10cSrcweir aFrmExampleWN(this, SW_RES(WN_BSP)), 493*cdf0e10cSrcweir 494*cdf0e10cSrcweir pColMgr(0), 495*cdf0e10cSrcweir 496*cdf0e10cSrcweir nFirstVis(0), 497*cdf0e10cSrcweir nMinWidth(MINLAY), 498*cdf0e10cSrcweir pModifiedField(0), 499*cdf0e10cSrcweir bFormat(sal_False), 500*cdf0e10cSrcweir bFrm(sal_False), 501*cdf0e10cSrcweir bHtmlMode(sal_False), 502*cdf0e10cSrcweir bLockUpdate(sal_False) 503*cdf0e10cSrcweir { 504*cdf0e10cSrcweir sal_uInt16 i; 505*cdf0e10cSrcweir 506*cdf0e10cSrcweir FreeResource(); 507*cdf0e10cSrcweir SetExchangeSupport(); 508*cdf0e10cSrcweir 509*cdf0e10cSrcweir aBtnDown.SetAccessibleRelationMemberOf(&aFLLayout); 510*cdf0e10cSrcweir aEd1.SetAccessibleRelationLabeledBy(&aWidthFT); 511*cdf0e10cSrcweir aEd2.SetAccessibleRelationLabeledBy(&aWidthFT); 512*cdf0e10cSrcweir aEd3.SetAccessibleRelationLabeledBy(&aWidthFT); 513*cdf0e10cSrcweir aDistEd1.SetAccessibleRelationLabeledBy(&aDistFT); 514*cdf0e10cSrcweir aDistEd2.SetAccessibleRelationLabeledBy(&aDistFT); 515*cdf0e10cSrcweir aBtnUp.SetAccessibleRelationLabeledBy(&aColumnFT); 516*cdf0e10cSrcweir aBtnDown.SetAccessibleRelationLabeledBy(&aColumnFT); 517*cdf0e10cSrcweir 518*cdf0e10cSrcweir aDefaultVS.SetHelpId(HID_COLUMN_VALUESET); 519*cdf0e10cSrcweir aDefaultVS.SetColCount( 5 ); 520*cdf0e10cSrcweir aDefaultVS.SetStyle( aDefaultVS.GetStyle() 521*cdf0e10cSrcweir | WB_ITEMBORDER 522*cdf0e10cSrcweir | WB_DOUBLEBORDER ); 523*cdf0e10cSrcweir 524*cdf0e10cSrcweir for( i = 0; i < 5; i++) 525*cdf0e10cSrcweir aDefaultVS.InsertItem( i + 1, i ); 526*cdf0e10cSrcweir 527*cdf0e10cSrcweir aDefaultVS.SetSelectHdl(LINK(this, SwColumnPage, SetDefaultsHdl)); 528*cdf0e10cSrcweir 529*cdf0e10cSrcweir // Controls fuer Zusaetzebereich beim MoreButton anmelden 530*cdf0e10cSrcweir Link aCLNrLk = LINK(this, SwColumnPage, ColModify); 531*cdf0e10cSrcweir aCLNrEdt.SetLoseFocusHdl(aCLNrLk); 532*cdf0e10cSrcweir aCLNrEdt.SetUpHdl(aCLNrLk); 533*cdf0e10cSrcweir aCLNrEdt.SetDownHdl(aCLNrLk); 534*cdf0e10cSrcweir Link aLk = LINK(this, SwColumnPage, GapModify); 535*cdf0e10cSrcweir aDistEd1.SetUpHdl(aLk); 536*cdf0e10cSrcweir aDistEd1.SetDownHdl(aLk); 537*cdf0e10cSrcweir aDistEd1.SetLoseFocusHdl(aLk); 538*cdf0e10cSrcweir aDistEd2.SetUpHdl(aLk); 539*cdf0e10cSrcweir aDistEd2.SetDownHdl(aLk); 540*cdf0e10cSrcweir aDistEd2.SetLoseFocusHdl(aLk); 541*cdf0e10cSrcweir 542*cdf0e10cSrcweir aLk = LINK(this, SwColumnPage, EdModify); 543*cdf0e10cSrcweir 544*cdf0e10cSrcweir aEd1.SetUpHdl(aLk); 545*cdf0e10cSrcweir aEd1.SetDownHdl(aLk); 546*cdf0e10cSrcweir aEd1.SetLoseFocusHdl(aLk); 547*cdf0e10cSrcweir 548*cdf0e10cSrcweir aEd2.SetUpHdl(aLk); 549*cdf0e10cSrcweir aEd2.SetDownHdl(aLk); 550*cdf0e10cSrcweir aEd2.SetLoseFocusHdl(aLk); 551*cdf0e10cSrcweir 552*cdf0e10cSrcweir aEd3.SetUpHdl(aLk); 553*cdf0e10cSrcweir aEd3.SetDownHdl(aLk); 554*cdf0e10cSrcweir aEd3.SetLoseFocusHdl(aLk); 555*cdf0e10cSrcweir 556*cdf0e10cSrcweir aBtnUp.SetClickHdl(LINK(this, SwColumnPage, Up)); 557*cdf0e10cSrcweir aBtnDown.SetClickHdl(LINK(this, SwColumnPage, Down)); 558*cdf0e10cSrcweir aAutoWidthBox.SetClickHdl(LINK(this, SwColumnPage, AutoWidthHdl)); 559*cdf0e10cSrcweir 560*cdf0e10cSrcweir aLk = LINK( this, SwColumnPage, UpdateColMgr ); 561*cdf0e10cSrcweir aLineTypeDLB.SetSelectHdl( aLk ); 562*cdf0e10cSrcweir aLineHeightEdit.SetModifyHdl( aLk ); 563*cdf0e10cSrcweir aLinePosDLB.SetSelectHdl( aLk ); 564*cdf0e10cSrcweir 565*cdf0e10cSrcweir // Trennlinie 566*cdf0e10cSrcweir aLineTypeDLB.SetUnit( FUNIT_POINT ); 567*cdf0e10cSrcweir aLineTypeDLB.SetSourceUnit( FUNIT_TWIP ); 568*cdf0e10cSrcweir for( i = 0; i < nLineCount; ++i ) 569*cdf0e10cSrcweir aLineTypeDLB.InsertEntry( 100 * nLines[ i ] ); 570*cdf0e10cSrcweir } 571*cdf0e10cSrcweir 572*cdf0e10cSrcweir 573*cdf0e10cSrcweir 574*cdf0e10cSrcweir SwColumnPage::~SwColumnPage() 575*cdf0e10cSrcweir { 576*cdf0e10cSrcweir delete pColMgr; 577*cdf0e10cSrcweir } 578*cdf0e10cSrcweir 579*cdf0e10cSrcweir /*-------------------------------------------------------------------- 580*cdf0e10cSrcweir Beschreibung: 581*cdf0e10cSrcweir --------------------------------------------------------------------*/ 582*cdf0e10cSrcweir 583*cdf0e10cSrcweir 584*cdf0e10cSrcweir void SwColumnPage::SetPageWidth(long nPageWidth) 585*cdf0e10cSrcweir { 586*cdf0e10cSrcweir long nNewMaxWidth = static_cast< long >(aEd1.NormalizePercent(nPageWidth)); 587*cdf0e10cSrcweir 588*cdf0e10cSrcweir aDistEd1.SetMax(nNewMaxWidth, FUNIT_TWIP); 589*cdf0e10cSrcweir aDistEd2.SetMax(nNewMaxWidth, FUNIT_TWIP); 590*cdf0e10cSrcweir aEd1.SetMax(nNewMaxWidth, FUNIT_TWIP); 591*cdf0e10cSrcweir aEd2.SetMax(nNewMaxWidth, FUNIT_TWIP); 592*cdf0e10cSrcweir aEd3.SetMax(nNewMaxWidth, FUNIT_TWIP); 593*cdf0e10cSrcweir } 594*cdf0e10cSrcweir 595*cdf0e10cSrcweir /*-------------------------------------------------------------------- 596*cdf0e10cSrcweir Beschreibung: 597*cdf0e10cSrcweir --------------------------------------------------------------------*/ 598*cdf0e10cSrcweir 599*cdf0e10cSrcweir 600*cdf0e10cSrcweir 601*cdf0e10cSrcweir void SwColumnPage::Reset(const SfxItemSet &rSet) 602*cdf0e10cSrcweir { 603*cdf0e10cSrcweir sal_uInt16 nHtmlMode = ::GetHtmlMode((const SwDocShell*)SfxObjectShell::Current()); 604*cdf0e10cSrcweir if(nHtmlMode & HTMLMODE_ON) 605*cdf0e10cSrcweir { 606*cdf0e10cSrcweir bHtmlMode = sal_True; 607*cdf0e10cSrcweir aAutoWidthBox.Enable(sal_False); 608*cdf0e10cSrcweir } 609*cdf0e10cSrcweir FieldUnit aMetric = ::GetDfltMetric(bHtmlMode); 610*cdf0e10cSrcweir SetMetric(aEd1, aMetric); 611*cdf0e10cSrcweir SetMetric(aEd2, aMetric); 612*cdf0e10cSrcweir SetMetric(aEd3, aMetric); 613*cdf0e10cSrcweir SetMetric(aDistEd1, aMetric); 614*cdf0e10cSrcweir SetMetric(aDistEd2, aMetric); 615*cdf0e10cSrcweir 616*cdf0e10cSrcweir delete pColMgr; 617*cdf0e10cSrcweir pColMgr = new SwColMgr(rSet); 618*cdf0e10cSrcweir nCols = pColMgr->GetCount() ; 619*cdf0e10cSrcweir aCLNrEdt.SetMax(Max((sal_uInt16)aCLNrEdt.GetMax(), (sal_uInt16)nCols)); 620*cdf0e10cSrcweir aCLNrEdt.SetLast(Max(nCols,(sal_uInt16)aCLNrEdt.GetMax())); 621*cdf0e10cSrcweir 622*cdf0e10cSrcweir if(bFrm) 623*cdf0e10cSrcweir { 624*cdf0e10cSrcweir if(bFormat) // hier gibt es keine Size 625*cdf0e10cSrcweir pColMgr->SetActualWidth(FRAME_FORMAT_WIDTH); 626*cdf0e10cSrcweir else 627*cdf0e10cSrcweir { 628*cdf0e10cSrcweir const SwFmtFrmSize& rSize = (const SwFmtFrmSize&)rSet.Get(RES_FRM_SIZE); 629*cdf0e10cSrcweir const SvxBoxItem& rBox = (const SvxBoxItem&) rSet.Get(RES_BOX); 630*cdf0e10cSrcweir pColMgr->SetActualWidth((sal_uInt16)rSize.GetSize().Width() - rBox.GetDistance()); 631*cdf0e10cSrcweir } 632*cdf0e10cSrcweir } 633*cdf0e10cSrcweir if(aBalanceColsCB.IsVisible()) 634*cdf0e10cSrcweir { 635*cdf0e10cSrcweir const SfxPoolItem* pItem; 636*cdf0e10cSrcweir if( SFX_ITEM_SET == rSet.GetItemState( RES_COLUMNBALANCE, sal_False, &pItem )) 637*cdf0e10cSrcweir aBalanceColsCB.Check(!((const SwFmtNoBalancedColumns*)pItem)->GetValue()); 638*cdf0e10cSrcweir else 639*cdf0e10cSrcweir aBalanceColsCB.Check( sal_True ); 640*cdf0e10cSrcweir } 641*cdf0e10cSrcweir 642*cdf0e10cSrcweir //text direction 643*cdf0e10cSrcweir if( SFX_ITEM_AVAILABLE <= rSet.GetItemState( RES_FRAMEDIR ) ) 644*cdf0e10cSrcweir { 645*cdf0e10cSrcweir const SvxFrameDirectionItem& rItem = (const SvxFrameDirectionItem&)rSet.Get(RES_FRAMEDIR); 646*cdf0e10cSrcweir sal_uInt32 nVal = rItem.GetValue(); 647*cdf0e10cSrcweir sal_uInt16 nPos = aTextDirectionLB.GetEntryPos( (void*) nVal ); 648*cdf0e10cSrcweir aTextDirectionLB.SelectEntryPos( nPos ); 649*cdf0e10cSrcweir aTextDirectionLB.SaveValue(); 650*cdf0e10cSrcweir } 651*cdf0e10cSrcweir 652*cdf0e10cSrcweir Init(); 653*cdf0e10cSrcweir ActivatePage( rSet ); 654*cdf0e10cSrcweir } 655*cdf0e10cSrcweir 656*cdf0e10cSrcweir /*-------------------------------------------------------------------- 657*cdf0e10cSrcweir Beschreibung: TabPage erzeugen 658*cdf0e10cSrcweir --------------------------------------------------------------------*/ 659*cdf0e10cSrcweir 660*cdf0e10cSrcweir 661*cdf0e10cSrcweir 662*cdf0e10cSrcweir SfxTabPage* SwColumnPage::Create(Window *pParent, const SfxItemSet &rSet) 663*cdf0e10cSrcweir { 664*cdf0e10cSrcweir return new SwColumnPage(pParent, rSet); 665*cdf0e10cSrcweir } 666*cdf0e10cSrcweir 667*cdf0e10cSrcweir /*-------------------------------------------------------------------- 668*cdf0e10cSrcweir Beschreibung: Attribute in den Set stopfen bei OK 669*cdf0e10cSrcweir --------------------------------------------------------------------*/ 670*cdf0e10cSrcweir 671*cdf0e10cSrcweir 672*cdf0e10cSrcweir 673*cdf0e10cSrcweir sal_Bool SwColumnPage::FillItemSet(SfxItemSet &rSet) 674*cdf0e10cSrcweir { 675*cdf0e10cSrcweir if(aCLNrEdt.HasChildPathFocus()) 676*cdf0e10cSrcweir aCLNrEdt.GetDownHdl().Call(&aCLNrEdt); 677*cdf0e10cSrcweir // Im ItemSet setzen 678*cdf0e10cSrcweir // Die aktuellen Einstellungen sind 679*cdf0e10cSrcweir // schon vorhanden 680*cdf0e10cSrcweir // 681*cdf0e10cSrcweir const SfxPoolItem* pOldItem; 682*cdf0e10cSrcweir const SwFmtCol& rCol = pColMgr->GetColumns(); 683*cdf0e10cSrcweir if(0 == (pOldItem = GetOldItem( rSet, RES_COL )) || 684*cdf0e10cSrcweir rCol != *pOldItem ) 685*cdf0e10cSrcweir rSet.Put(rCol); 686*cdf0e10cSrcweir 687*cdf0e10cSrcweir if(aBalanceColsCB.IsVisible() ) 688*cdf0e10cSrcweir { 689*cdf0e10cSrcweir rSet.Put(SwFmtNoBalancedColumns(!aBalanceColsCB.IsChecked() )); 690*cdf0e10cSrcweir } 691*cdf0e10cSrcweir sal_uInt16 nPos; 692*cdf0e10cSrcweir if( aTextDirectionLB.IsVisible() && 693*cdf0e10cSrcweir ( nPos = aTextDirectionLB.GetSelectEntryPos() ) != 694*cdf0e10cSrcweir aTextDirectionLB.GetSavedValue() ) 695*cdf0e10cSrcweir { 696*cdf0e10cSrcweir sal_uInt32 nDirection = (sal_uInt32)(sal_IntPtr)aTextDirectionLB.GetEntryData( nPos ); 697*cdf0e10cSrcweir rSet.Put( SvxFrameDirectionItem( (SvxFrameDirection)nDirection, RES_FRAMEDIR)); 698*cdf0e10cSrcweir } 699*cdf0e10cSrcweir return sal_True; 700*cdf0e10cSrcweir } 701*cdf0e10cSrcweir 702*cdf0e10cSrcweir /*-------------------------------------------------------------------- 703*cdf0e10cSrcweir Beschreibung: ColumnManager updaten 704*cdf0e10cSrcweir --------------------------------------------------------------------*/ 705*cdf0e10cSrcweir 706*cdf0e10cSrcweir 707*cdf0e10cSrcweir 708*cdf0e10cSrcweir IMPL_LINK( SwColumnPage, UpdateColMgr, void *, /*pField*/ ) 709*cdf0e10cSrcweir { 710*cdf0e10cSrcweir long nGutterWidth = pColMgr->GetGutterWidth(); 711*cdf0e10cSrcweir if(nCols > 1) 712*cdf0e10cSrcweir { 713*cdf0e10cSrcweir // Ermitteln, ob die schmalste Spalte zu schmal ist 714*cdf0e10cSrcweir // fuer den eingestellten Spaltenabstand 715*cdf0e10cSrcweir long nMin = nColWidth[0]; 716*cdf0e10cSrcweir sal_uInt16 i; 717*cdf0e10cSrcweir 718*cdf0e10cSrcweir for( i = 1; i < nCols; ++i) 719*cdf0e10cSrcweir nMin = Min(nMin, nColWidth[i]); 720*cdf0e10cSrcweir 721*cdf0e10cSrcweir sal_Bool bAutoWidth = aAutoWidthBox.IsChecked(); 722*cdf0e10cSrcweir if(!bAutoWidth) 723*cdf0e10cSrcweir { 724*cdf0e10cSrcweir pColMgr->SetAutoWidth(sal_False); 725*cdf0e10cSrcweir // falls der Benutzer nicht die Gesamtbreite vergeben hat, 726*cdf0e10cSrcweir // den fehlenden Betrag auf die letzte Spalte addieren. 727*cdf0e10cSrcweir long nSum = 0; 728*cdf0e10cSrcweir for(i = 0; i < nCols; ++i) 729*cdf0e10cSrcweir nSum += nColWidth[i]; 730*cdf0e10cSrcweir nGutterWidth = 0; 731*cdf0e10cSrcweir for(i = 0; i < nCols - 1; ++i) 732*cdf0e10cSrcweir nGutterWidth += nColDist[i]; 733*cdf0e10cSrcweir nSum += nGutterWidth; 734*cdf0e10cSrcweir 735*cdf0e10cSrcweir long nMaxW = pColMgr->GetActualSize(); 736*cdf0e10cSrcweir 737*cdf0e10cSrcweir if( nSum < nMaxW ) 738*cdf0e10cSrcweir nColWidth[nCols - 1] += nMaxW - nSum; 739*cdf0e10cSrcweir 740*cdf0e10cSrcweir pColMgr->SetColWidth( 0, static_cast< sal_uInt16 >(nColWidth[0] + (sal_uInt16)nColDist[0]/2) ); 741*cdf0e10cSrcweir for( i = 1; i < nCols-1; ++i ) 742*cdf0e10cSrcweir { 743*cdf0e10cSrcweir long nActDist = (nColDist[i] + nColDist[i - 1]) / 2; 744*cdf0e10cSrcweir pColMgr->SetColWidth( i, (sal_uInt16)nColWidth[i] + (sal_uInt16)nActDist ); 745*cdf0e10cSrcweir } 746*cdf0e10cSrcweir pColMgr->SetColWidth( nCols-1, static_cast< sal_uInt16 >(nColWidth[nCols-1] + nColDist[nCols -2]/2) ); 747*cdf0e10cSrcweir 748*cdf0e10cSrcweir } 749*cdf0e10cSrcweir 750*cdf0e10cSrcweir // keins ist ausgeschaltet 751*cdf0e10cSrcweir const sal_uInt16 nPos = aLineTypeDLB.GetSelectEntryPos(); 752*cdf0e10cSrcweir sal_Bool bEnable = 0 != nPos; 753*cdf0e10cSrcweir aLineHeightEdit.Enable( bEnable ); 754*cdf0e10cSrcweir aLineHeightLbl.Enable( bEnable ); 755*cdf0e10cSrcweir if( !bEnable ) 756*cdf0e10cSrcweir pColMgr->SetNoLine(); 757*cdf0e10cSrcweir else if( LISTBOX_ENTRY_NOTFOUND != nPos ) 758*cdf0e10cSrcweir { 759*cdf0e10cSrcweir pColMgr->SetLineWidthAndColor(nLines[nPos - 1], Color(COL_BLACK) ); 760*cdf0e10cSrcweir pColMgr->SetAdjust( SwColLineAdj( 761*cdf0e10cSrcweir aLinePosDLB.GetSelectEntryPos() + 1) ); 762*cdf0e10cSrcweir pColMgr->SetLineHeightPercent((short)aLineHeightEdit.GetValue()); 763*cdf0e10cSrcweir bEnable = pColMgr->GetLineHeightPercent() != 100; 764*cdf0e10cSrcweir } 765*cdf0e10cSrcweir aLinePosLbl.Enable( bEnable ); 766*cdf0e10cSrcweir aLinePosDLB.Enable( bEnable ); 767*cdf0e10cSrcweir } 768*cdf0e10cSrcweir else 769*cdf0e10cSrcweir { 770*cdf0e10cSrcweir pColMgr->NoCols(); 771*cdf0e10cSrcweir nCols = 0; 772*cdf0e10cSrcweir } 773*cdf0e10cSrcweir 774*cdf0e10cSrcweir //Maximalwerte setzen 775*cdf0e10cSrcweir aCLNrEdt.SetMax(Max(1L, 776*cdf0e10cSrcweir Min(long(nMaxCols), long( pColMgr->GetActualSize() / (nGutterWidth + MINLAY)) ))); 777*cdf0e10cSrcweir aCLNrEdt.SetLast(aCLNrEdt.GetMax()); 778*cdf0e10cSrcweir aCLNrEdt.Reformat(); 779*cdf0e10cSrcweir 780*cdf0e10cSrcweir //Beispielfenster anregen 781*cdf0e10cSrcweir if(!bLockUpdate) 782*cdf0e10cSrcweir { 783*cdf0e10cSrcweir if(bFrm) 784*cdf0e10cSrcweir { 785*cdf0e10cSrcweir aFrmExampleWN.SetColumns( pColMgr->GetColumns() ); 786*cdf0e10cSrcweir aFrmExampleWN.Invalidate(); 787*cdf0e10cSrcweir } 788*cdf0e10cSrcweir else 789*cdf0e10cSrcweir aPgeExampleWN.Invalidate(); 790*cdf0e10cSrcweir } 791*cdf0e10cSrcweir 792*cdf0e10cSrcweir return 0; 793*cdf0e10cSrcweir } 794*cdf0e10cSrcweir 795*cdf0e10cSrcweir /*------------------------------------------------------------------------ 796*cdf0e10cSrcweir Beschreibung: Initialisierung 797*cdf0e10cSrcweir ------------------------------------------------------------------------*/ 798*cdf0e10cSrcweir 799*cdf0e10cSrcweir 800*cdf0e10cSrcweir 801*cdf0e10cSrcweir void SwColumnPage::Init() 802*cdf0e10cSrcweir { 803*cdf0e10cSrcweir aCLNrEdt.SetValue(nCols); 804*cdf0e10cSrcweir 805*cdf0e10cSrcweir sal_Bool bAutoWidth = pColMgr->IsAutoWidth() || bHtmlMode; 806*cdf0e10cSrcweir aAutoWidthBox.Check( bAutoWidth ); 807*cdf0e10cSrcweir 808*cdf0e10cSrcweir sal_Int32 nColumnWidthSum = 0; 809*cdf0e10cSrcweir // Setzen der Breiten 810*cdf0e10cSrcweir sal_uInt16 i; 811*cdf0e10cSrcweir for(i = 0; i < nCols; ++i) 812*cdf0e10cSrcweir { 813*cdf0e10cSrcweir nColWidth[i] = pColMgr->GetColWidth(i); 814*cdf0e10cSrcweir nColumnWidthSum += nColWidth[i]; 815*cdf0e10cSrcweir if(i < nCols - 1) 816*cdf0e10cSrcweir nColDist[i] = pColMgr->GetGutterWidth(i); 817*cdf0e10cSrcweir } 818*cdf0e10cSrcweir 819*cdf0e10cSrcweir if( 1 < nCols ) 820*cdf0e10cSrcweir { 821*cdf0e10cSrcweir // #97495# make sure that the automatic column widht's are always equal 822*cdf0e10cSrcweir if(bAutoWidth) 823*cdf0e10cSrcweir { 824*cdf0e10cSrcweir nColumnWidthSum /= nCols; 825*cdf0e10cSrcweir for(i = 0; i < nCols; ++i) 826*cdf0e10cSrcweir nColWidth[i] = nColumnWidthSum; 827*cdf0e10cSrcweir } 828*cdf0e10cSrcweir SwColLineAdj eAdj = pColMgr->GetAdjust(); 829*cdf0e10cSrcweir if( COLADJ_NONE == eAdj ) // der Dialog kennt kein NONE! 830*cdf0e10cSrcweir { 831*cdf0e10cSrcweir eAdj = COLADJ_TOP; 832*cdf0e10cSrcweir //ohne Adjust auch kein Linientyp 833*cdf0e10cSrcweir aLineTypeDLB.SelectEntryPos( 0 ); 834*cdf0e10cSrcweir aLineHeightEdit.SetValue( 100 ); 835*cdf0e10cSrcweir } 836*cdf0e10cSrcweir else 837*cdf0e10cSrcweir { 838*cdf0e10cSrcweir aLineTypeDLB.SelectEntryPos( lcl_LineWidthToPos(( pColMgr->GetLineWidth() )) + 1); 839*cdf0e10cSrcweir aLineHeightEdit.SetValue( pColMgr->GetLineHeightPercent() ); 840*cdf0e10cSrcweir } 841*cdf0e10cSrcweir aLinePosDLB.SelectEntryPos( static_cast< sal_uInt16 >(eAdj - 1) ); 842*cdf0e10cSrcweir } 843*cdf0e10cSrcweir else 844*cdf0e10cSrcweir { 845*cdf0e10cSrcweir aLinePosDLB.SelectEntryPos( 0 ); 846*cdf0e10cSrcweir aLineTypeDLB.SelectEntryPos( 0 ); 847*cdf0e10cSrcweir aLineHeightEdit.SetValue( 100 ); 848*cdf0e10cSrcweir } 849*cdf0e10cSrcweir 850*cdf0e10cSrcweir UpdateCols(); 851*cdf0e10cSrcweir Update(); 852*cdf0e10cSrcweir 853*cdf0e10cSrcweir // Maximale Spaltenzahl setzen 854*cdf0e10cSrcweir // Werte kleiner als 1 sind nicht erlaubt 855*cdf0e10cSrcweir aCLNrEdt.SetMax(Max(1L, 856*cdf0e10cSrcweir Min(long(nMaxCols), long( pColMgr->GetActualSize() / nMinWidth) ))); 857*cdf0e10cSrcweir } 858*cdf0e10cSrcweir 859*cdf0e10cSrcweir /*------------------------------------------------------------------------ 860*cdf0e10cSrcweir Beschreibung: Die Anzahl der Spalten hat sich veraendert -- hier werden 861*cdf0e10cSrcweir die Controls fuer die Bearbeitung der Spalten entsprechend 862*cdf0e10cSrcweir der Spaltenzahl en- oder disabled. 863*cdf0e10cSrcweir Falls es mehr als nVisCols (= 3) Spalten gibt, werden 864*cdf0e10cSrcweir alle Edit enabled und die Buttons fuer das Scrollen 865*cdf0e10cSrcweir ebenfalls. 866*cdf0e10cSrcweir Andernfalls werden die Edits jeweils fuer die entsprechenden 867*cdf0e10cSrcweir Spaltenzahl enabled; eine Spalte kann nicht bearbeitet werden. 868*cdf0e10cSrcweir ------------------------------------------------------------------------*/ 869*cdf0e10cSrcweir 870*cdf0e10cSrcweir 871*cdf0e10cSrcweir 872*cdf0e10cSrcweir void SwColumnPage::UpdateCols() 873*cdf0e10cSrcweir { 874*cdf0e10cSrcweir sal_Bool bEnableBtns= sal_False; 875*cdf0e10cSrcweir sal_Bool bEnable12 = sal_False; 876*cdf0e10cSrcweir sal_Bool bEnable3 = sal_False; 877*cdf0e10cSrcweir const sal_Bool bEdit = !aAutoWidthBox.IsChecked(); 878*cdf0e10cSrcweir if ( nCols > nVisCols ) 879*cdf0e10cSrcweir { 880*cdf0e10cSrcweir bEnableBtns = sal_True && !bHtmlMode; 881*cdf0e10cSrcweir bEnable12 = bEnable3 = bEdit; 882*cdf0e10cSrcweir } 883*cdf0e10cSrcweir else if( bEdit ) 884*cdf0e10cSrcweir { 885*cdf0e10cSrcweir // hier gibt es absichtlich kaum noch breaks 886*cdf0e10cSrcweir switch(nCols) 887*cdf0e10cSrcweir { 888*cdf0e10cSrcweir case 3: bEnable3 = sal_True; 889*cdf0e10cSrcweir case 2: bEnable12= sal_True; break; 890*cdf0e10cSrcweir default: /* do nothing */; 891*cdf0e10cSrcweir } 892*cdf0e10cSrcweir } 893*cdf0e10cSrcweir aEd1.Enable( bEnable12 ); 894*cdf0e10cSrcweir aDistEd1.Enable(nCols > 1); 895*cdf0e10cSrcweir aEd2.Enable( bEnable12 ); 896*cdf0e10cSrcweir aDistEd2.Enable(bEnable3); 897*cdf0e10cSrcweir aEd3.Enable( bEnable3 ); 898*cdf0e10cSrcweir aLbl1.Enable(bEnable12 ); 899*cdf0e10cSrcweir aLbl2.Enable(bEnable12 ); 900*cdf0e10cSrcweir aLbl3.Enable(bEnable3 ); 901*cdf0e10cSrcweir aBtnUp.Enable( bEnableBtns ); 902*cdf0e10cSrcweir aBtnDown.Enable( bEnableBtns ); 903*cdf0e10cSrcweir 904*cdf0e10cSrcweir const sal_Bool bEnable = nCols > 1; 905*cdf0e10cSrcweir if( !bEnable ) 906*cdf0e10cSrcweir { 907*cdf0e10cSrcweir aLinePosDLB.Enable( sal_False ); 908*cdf0e10cSrcweir aLinePosLbl.Enable( sal_False ); 909*cdf0e10cSrcweir } 910*cdf0e10cSrcweir aLineHeightEdit.Enable( bEnable ); 911*cdf0e10cSrcweir aLineHeightLbl.Enable( bEnable ); 912*cdf0e10cSrcweir aLineTypeDLB.Enable( bEnable ); 913*cdf0e10cSrcweir aLineTypeLbl.Enable( bEnable ); 914*cdf0e10cSrcweir aAutoWidthBox.Enable( bEnable && !bHtmlMode ); 915*cdf0e10cSrcweir } 916*cdf0e10cSrcweir 917*cdf0e10cSrcweir void SwColumnPage::SetLabels( sal_uInt16 nVis ) 918*cdf0e10cSrcweir { 919*cdf0e10cSrcweir String sLbl( '~' ); 920*cdf0e10cSrcweir 921*cdf0e10cSrcweir String sLbl2( String::CreateFromInt32( nVis + 1 )); 922*cdf0e10cSrcweir String tmp1(sLbl2); 923*cdf0e10cSrcweir sLbl2.Insert(sLbl, sLbl2.Len() - 1); 924*cdf0e10cSrcweir aLbl1.SetText(sLbl2); 925*cdf0e10cSrcweir 926*cdf0e10cSrcweir sLbl2 = String::CreateFromInt32( nVis + 2 ); 927*cdf0e10cSrcweir String tmp2(sLbl2); 928*cdf0e10cSrcweir sLbl2.Insert(sLbl, sLbl2.Len() - 1); 929*cdf0e10cSrcweir aLbl2.SetText(sLbl2); 930*cdf0e10cSrcweir 931*cdf0e10cSrcweir sLbl2 = String::CreateFromInt32( nVis + 3 ); 932*cdf0e10cSrcweir String tmp3(sLbl2); 933*cdf0e10cSrcweir sLbl2.Insert(sLbl, sLbl2.Len() - 1); 934*cdf0e10cSrcweir aLbl3.SetText(sLbl2); 935*cdf0e10cSrcweir String sColumnWidth = SW_RESSTR( STR_ACCESS_COLUMN_WIDTH ) ; 936*cdf0e10cSrcweir sColumnWidth.SearchAndReplaceAscii("%1", tmp1); 937*cdf0e10cSrcweir aEd1.SetAccessibleName(sColumnWidth); 938*cdf0e10cSrcweir 939*cdf0e10cSrcweir sColumnWidth = SW_RESSTR( STR_ACCESS_COLUMN_WIDTH ) ; 940*cdf0e10cSrcweir sColumnWidth.SearchAndReplaceAscii("%1", tmp2); 941*cdf0e10cSrcweir aEd2.SetAccessibleName(sColumnWidth); 942*cdf0e10cSrcweir 943*cdf0e10cSrcweir sColumnWidth = SW_RESSTR( STR_ACCESS_COLUMN_WIDTH ) ; 944*cdf0e10cSrcweir sColumnWidth.SearchAndReplaceAscii("%1", tmp3); 945*cdf0e10cSrcweir aEd3.SetAccessibleName(sColumnWidth); 946*cdf0e10cSrcweir 947*cdf0e10cSrcweir String sDist = SW_RESSTR( STR_ACCESS_PAGESETUP_SPACING ) ; 948*cdf0e10cSrcweir String sDist1 = sDist; 949*cdf0e10cSrcweir sDist1.SearchAndReplaceAscii("%1", tmp1); 950*cdf0e10cSrcweir sDist1.SearchAndReplaceAscii("%2", tmp2); 951*cdf0e10cSrcweir aDistEd1.SetAccessibleName(sDist1); 952*cdf0e10cSrcweir 953*cdf0e10cSrcweir String sDist2 = sDist; 954*cdf0e10cSrcweir sDist2.SearchAndReplaceAscii("%1", tmp2); 955*cdf0e10cSrcweir sDist2.SearchAndReplaceAscii("%2", tmp3); 956*cdf0e10cSrcweir aDistEd2.SetAccessibleName(sDist2); 957*cdf0e10cSrcweir } 958*cdf0e10cSrcweir 959*cdf0e10cSrcweir /*------------------------------------------------------------------------ 960*cdf0e10cSrcweir Beschreibung: Handler, der bei einer Veraenderung der Spaltenzahl 961*cdf0e10cSrcweir gerufen wird. 962*cdf0e10cSrcweir Eine Aenderung der Spaltenzahl ueberschreibt eventuelle 963*cdf0e10cSrcweir Breiteneinstellungen des Benutzers; alle Spalten sind 964*cdf0e10cSrcweir gleich breit. 965*cdf0e10cSrcweir ------------------------------------------------------------------------*/ 966*cdf0e10cSrcweir 967*cdf0e10cSrcweir IMPL_LINK( SwColumnPage, ColModify, NumericField *, pNF ) 968*cdf0e10cSrcweir { 969*cdf0e10cSrcweir nCols = (sal_uInt16)aCLNrEdt.GetValue(); 970*cdf0e10cSrcweir //#107890# the handler is also called from LoseFocus() 971*cdf0e10cSrcweir //then no change has been made and thus no action should be taken 972*cdf0e10cSrcweir // #i17816# changing the displayed types within the ValueSet 973*cdf0e10cSrcweir //from two columns to two columns with different settings doesn't invalidate the 974*cdf0e10cSrcweir // example windows in ::ColModify() 975*cdf0e10cSrcweir if(!pNF ||(pColMgr->GetCount() != nCols)) 976*cdf0e10cSrcweir { 977*cdf0e10cSrcweir if(pNF) 978*cdf0e10cSrcweir aDefaultVS.SetNoSelection(); 979*cdf0e10cSrcweir long nDist = static_cast< long >(aDistEd1.DenormalizePercent(aDistEd1.GetValue(FUNIT_TWIP))); 980*cdf0e10cSrcweir pColMgr->SetCount(nCols, (sal_uInt16)nDist); 981*cdf0e10cSrcweir for(sal_uInt16 i = 0; i < nCols; i++) 982*cdf0e10cSrcweir nColDist[i] = nDist; 983*cdf0e10cSrcweir nFirstVis = 0; 984*cdf0e10cSrcweir SetLabels( nFirstVis ); 985*cdf0e10cSrcweir UpdateCols(); 986*cdf0e10cSrcweir ResetColWidth(); 987*cdf0e10cSrcweir Update(); 988*cdf0e10cSrcweir } 989*cdf0e10cSrcweir 990*cdf0e10cSrcweir return 0; 991*cdf0e10cSrcweir } 992*cdf0e10cSrcweir 993*cdf0e10cSrcweir /*------------------------------------------------------------------------ 994*cdf0e10cSrcweir Beschreibung: Modify- Handler fuer eine Aenderung der Spaltenbreite 995*cdf0e10cSrcweir oder des Spaltenabstandes. 996*cdf0e10cSrcweir Diese Aenderungen wirken sich erst zeitversetzt aus. 997*cdf0e10cSrcweir Durch eine Aenderung der Spaltenbreite wird die automatische 998*cdf0e10cSrcweir Berechnung der Spaltenbreite ausser Kraft gesetzt; erst 999*cdf0e10cSrcweir eine Aenderung der Spaltenzahl kehrt wieder zu diesem 1000*cdf0e10cSrcweir Default zurueck. 1001*cdf0e10cSrcweir ------------------------------------------------------------------------*/ 1002*cdf0e10cSrcweir 1003*cdf0e10cSrcweir 1004*cdf0e10cSrcweir 1005*cdf0e10cSrcweir IMPL_LINK( SwColumnPage, GapModify, PercentField *, pFld ) 1006*cdf0e10cSrcweir { 1007*cdf0e10cSrcweir long nActValue = static_cast< long >(pFld->DenormalizePercent(pFld->GetValue(FUNIT_TWIP))); 1008*cdf0e10cSrcweir if(nCols < 2) 1009*cdf0e10cSrcweir return 0; 1010*cdf0e10cSrcweir if(aAutoWidthBox.IsChecked()) 1011*cdf0e10cSrcweir { 1012*cdf0e10cSrcweir sal_uInt16 nMaxGap = pColMgr->GetActualSize() - nCols * MINLAY; 1013*cdf0e10cSrcweir DBG_ASSERT(nCols, "Abstand kann nicht ohne Spalten eingestellt werden"); 1014*cdf0e10cSrcweir nMaxGap /= nCols - 1; 1015*cdf0e10cSrcweir if(nActValue > nMaxGap) 1016*cdf0e10cSrcweir { 1017*cdf0e10cSrcweir nActValue = nMaxGap; 1018*cdf0e10cSrcweir aDistEd1.SetPrcntValue(aDistEd1.NormalizePercent(nMaxGap), FUNIT_TWIP); 1019*cdf0e10cSrcweir } 1020*cdf0e10cSrcweir pColMgr->SetGutterWidth((sal_uInt16)nActValue); 1021*cdf0e10cSrcweir for(sal_uInt16 i = 0; i < nCols; i++) 1022*cdf0e10cSrcweir nColDist[i] = nActValue; 1023*cdf0e10cSrcweir 1024*cdf0e10cSrcweir ResetColWidth(); 1025*cdf0e10cSrcweir UpdateCols(); 1026*cdf0e10cSrcweir } 1027*cdf0e10cSrcweir else 1028*cdf0e10cSrcweir 1029*cdf0e10cSrcweir { 1030*cdf0e10cSrcweir sal_uInt16 nOffset = 0; 1031*cdf0e10cSrcweir if(pFld == &aDistEd2) 1032*cdf0e10cSrcweir { 1033*cdf0e10cSrcweir nOffset = 1; 1034*cdf0e10cSrcweir } 1035*cdf0e10cSrcweir long nDiff = nActValue - nColDist[nFirstVis + nOffset]; 1036*cdf0e10cSrcweir if(nDiff) 1037*cdf0e10cSrcweir { 1038*cdf0e10cSrcweir long nLeft = nColWidth[nFirstVis + nOffset]; 1039*cdf0e10cSrcweir long nRight = nColWidth[nFirstVis + nOffset + 1]; 1040*cdf0e10cSrcweir if(nLeft + nRight + 2 * MINLAY < nDiff) 1041*cdf0e10cSrcweir nDiff = nLeft + nRight - 2 * MINLAY; 1042*cdf0e10cSrcweir if(nDiff < nRight - MINLAY) 1043*cdf0e10cSrcweir { 1044*cdf0e10cSrcweir nRight -= nDiff; 1045*cdf0e10cSrcweir } 1046*cdf0e10cSrcweir else 1047*cdf0e10cSrcweir { 1048*cdf0e10cSrcweir long nTemp = nDiff - nRight + MINLAY; 1049*cdf0e10cSrcweir nRight = MINLAY; 1050*cdf0e10cSrcweir if(nLeft > nTemp - MINLAY) 1051*cdf0e10cSrcweir { 1052*cdf0e10cSrcweir nLeft -= nTemp; 1053*cdf0e10cSrcweir nTemp = 0; 1054*cdf0e10cSrcweir } 1055*cdf0e10cSrcweir else 1056*cdf0e10cSrcweir { 1057*cdf0e10cSrcweir nTemp -= nLeft + MINLAY; 1058*cdf0e10cSrcweir nLeft = MINLAY; 1059*cdf0e10cSrcweir } 1060*cdf0e10cSrcweir nDiff = nTemp; 1061*cdf0e10cSrcweir } 1062*cdf0e10cSrcweir nColWidth[nFirstVis + nOffset] = nLeft; 1063*cdf0e10cSrcweir nColWidth[nFirstVis + nOffset + 1] = nRight; 1064*cdf0e10cSrcweir nColDist[nFirstVis + nOffset] += nDiff; 1065*cdf0e10cSrcweir 1066*cdf0e10cSrcweir pColMgr->SetColWidth( nFirstVis + nOffset, sal_uInt16(nLeft) ); 1067*cdf0e10cSrcweir pColMgr->SetColWidth( nFirstVis + nOffset + 1, sal_uInt16(nRight) ); 1068*cdf0e10cSrcweir pColMgr->SetGutterWidth( sal_uInt16(nColDist[nFirstVis + nOffset]), nFirstVis + nOffset ); 1069*cdf0e10cSrcweir } 1070*cdf0e10cSrcweir 1071*cdf0e10cSrcweir } 1072*cdf0e10cSrcweir Update(); 1073*cdf0e10cSrcweir return 0; 1074*cdf0e10cSrcweir } 1075*cdf0e10cSrcweir 1076*cdf0e10cSrcweir /*------------------------------------------------------------------------ 1077*cdf0e10cSrcweir Beschreibung: 1078*cdf0e10cSrcweir ------------------------------------------------------------------------*/ 1079*cdf0e10cSrcweir 1080*cdf0e10cSrcweir 1081*cdf0e10cSrcweir 1082*cdf0e10cSrcweir IMPL_LINK( SwColumnPage, EdModify, PercentField *, pField ) 1083*cdf0e10cSrcweir { 1084*cdf0e10cSrcweir pModifiedField = pField; 1085*cdf0e10cSrcweir Timeout(0); 1086*cdf0e10cSrcweir return 0; 1087*cdf0e10cSrcweir } 1088*cdf0e10cSrcweir /*------------------------------------------------------------------------ 1089*cdf0e10cSrcweir Beschreibung: Handler hinter der Checkbox fuer automatische Breite. 1090*cdf0e10cSrcweir Ist die Box gecheckt, koennen keine expliziten Werte 1091*cdf0e10cSrcweir fuer die Spaltenbreite eingegeben werden. 1092*cdf0e10cSrcweir ------------------------------------------------------------------------*/ 1093*cdf0e10cSrcweir 1094*cdf0e10cSrcweir 1095*cdf0e10cSrcweir 1096*cdf0e10cSrcweir IMPL_LINK( SwColumnPage, AutoWidthHdl, CheckBox *, pBox ) 1097*cdf0e10cSrcweir { 1098*cdf0e10cSrcweir long nDist = static_cast< long >(aDistEd1.DenormalizePercent(aDistEd1.GetValue(FUNIT_TWIP))); 1099*cdf0e10cSrcweir pColMgr->SetCount(nCols, (sal_uInt16)nDist); 1100*cdf0e10cSrcweir for(sal_uInt16 i = 0; i < nCols; i++) 1101*cdf0e10cSrcweir nColDist[i] = nDist; 1102*cdf0e10cSrcweir if(pBox->IsChecked()) 1103*cdf0e10cSrcweir { 1104*cdf0e10cSrcweir pColMgr->SetGutterWidth(sal_uInt16(nDist)); 1105*cdf0e10cSrcweir ResetColWidth(); 1106*cdf0e10cSrcweir } 1107*cdf0e10cSrcweir pColMgr->SetAutoWidth(pBox->IsChecked(), sal_uInt16(nDist)); 1108*cdf0e10cSrcweir UpdateCols(); 1109*cdf0e10cSrcweir Update(); 1110*cdf0e10cSrcweir return 0; 1111*cdf0e10cSrcweir } 1112*cdf0e10cSrcweir 1113*cdf0e10cSrcweir /*------------------------------------------------------------------------ 1114*cdf0e10cSrcweir Beschreibung: Raufscrollen der Inhalte der Edits. 1115*cdf0e10cSrcweir ------------------------------------------------------------------------*/ 1116*cdf0e10cSrcweir 1117*cdf0e10cSrcweir IMPL_LINK( SwColumnPage, Up, Button *, EMPTYARG ) 1118*cdf0e10cSrcweir { 1119*cdf0e10cSrcweir if( nFirstVis ) 1120*cdf0e10cSrcweir { 1121*cdf0e10cSrcweir --nFirstVis; 1122*cdf0e10cSrcweir SetLabels( nFirstVis ); 1123*cdf0e10cSrcweir Update(); 1124*cdf0e10cSrcweir } 1125*cdf0e10cSrcweir return 0; 1126*cdf0e10cSrcweir } 1127*cdf0e10cSrcweir /*------------------------------------------------------------------------ 1128*cdf0e10cSrcweir Beschreibung: Runterscrollen der Inhalte der Edits. 1129*cdf0e10cSrcweir ------------------------------------------------------------------------*/ 1130*cdf0e10cSrcweir 1131*cdf0e10cSrcweir IMPL_LINK( SwColumnPage, Down, Button *, EMPTYARG ) 1132*cdf0e10cSrcweir { 1133*cdf0e10cSrcweir if( nFirstVis + nVisCols < nCols ) 1134*cdf0e10cSrcweir { 1135*cdf0e10cSrcweir ++nFirstVis; 1136*cdf0e10cSrcweir SetLabels( nFirstVis ); 1137*cdf0e10cSrcweir Update(); 1138*cdf0e10cSrcweir } 1139*cdf0e10cSrcweir return 0; 1140*cdf0e10cSrcweir } 1141*cdf0e10cSrcweir /*------------------------------------------------------------------------ 1142*cdf0e10cSrcweir Beschreibung: Relikt aus alten Zeiten - jetzt direkt ohne time 1143*cdf0e10cSrcweir * Timer- Handler; angetriggert durch eine Aenderung der 1144*cdf0e10cSrcweir Spaltenbreite oder des Spaltenabstandes. 1145*cdf0e10cSrcweir ------------------------------------------------------------------------*/ 1146*cdf0e10cSrcweir 1147*cdf0e10cSrcweir IMPL_LINK( SwColumnPage, Timeout, Timer *, EMPTYARG ) 1148*cdf0e10cSrcweir { 1149*cdf0e10cSrcweir DBG_PROFSTART(columnhdl) ; 1150*cdf0e10cSrcweir if(pModifiedField) 1151*cdf0e10cSrcweir { 1152*cdf0e10cSrcweir // Finden der veraenderten Spalte 1153*cdf0e10cSrcweir sal_uInt16 nChanged = nFirstVis; 1154*cdf0e10cSrcweir if(pModifiedField == &aEd2) 1155*cdf0e10cSrcweir ++nChanged; 1156*cdf0e10cSrcweir else if(pModifiedField == &aEd3) 1157*cdf0e10cSrcweir nChanged += 2; 1158*cdf0e10cSrcweir /*else if(pModifiedField == &aEd4) 1159*cdf0e10cSrcweir nChanged += 3;*/ 1160*cdf0e10cSrcweir 1161*cdf0e10cSrcweir long nNewWidth = (sal_uInt16) 1162*cdf0e10cSrcweir pModifiedField->DenormalizePercent(pModifiedField->GetValue(FUNIT_TWIP)); 1163*cdf0e10cSrcweir long nDiff = nNewWidth - nColWidth[nChanged]; 1164*cdf0e10cSrcweir 1165*cdf0e10cSrcweir // wenn es die letzte Spalte ist 1166*cdf0e10cSrcweir if(nChanged == nCols - 1) 1167*cdf0e10cSrcweir { 1168*cdf0e10cSrcweir nColWidth[0] -= nDiff; 1169*cdf0e10cSrcweir if(nColWidth[0] < (long)nMinWidth) 1170*cdf0e10cSrcweir { 1171*cdf0e10cSrcweir nNewWidth -= nMinWidth - nColWidth[0]; 1172*cdf0e10cSrcweir nColWidth[0] = nMinWidth; 1173*cdf0e10cSrcweir } 1174*cdf0e10cSrcweir 1175*cdf0e10cSrcweir } 1176*cdf0e10cSrcweir else if(nDiff) 1177*cdf0e10cSrcweir { 1178*cdf0e10cSrcweir nColWidth[nChanged + 1] -= nDiff; 1179*cdf0e10cSrcweir if(nColWidth[nChanged + 1] < (long) nMinWidth) 1180*cdf0e10cSrcweir { 1181*cdf0e10cSrcweir nNewWidth -= nMinWidth - nColWidth[nChanged + 1]; 1182*cdf0e10cSrcweir nColWidth[nChanged + 1] = nMinWidth; 1183*cdf0e10cSrcweir } 1184*cdf0e10cSrcweir } 1185*cdf0e10cSrcweir nColWidth[nChanged] = nNewWidth; 1186*cdf0e10cSrcweir pModifiedField = 0; 1187*cdf0e10cSrcweir } 1188*cdf0e10cSrcweir Update(); 1189*cdf0e10cSrcweir DBG_PROFSTOP(columnhdl) ; 1190*cdf0e10cSrcweir return 0; 1191*cdf0e10cSrcweir } 1192*cdf0e10cSrcweir /*------------------------------------------------------------------------ 1193*cdf0e10cSrcweir Beschreibung: Aktualisierung der Anzeige 1194*cdf0e10cSrcweir ------------------------------------------------------------------------*/ 1195*cdf0e10cSrcweir 1196*cdf0e10cSrcweir 1197*cdf0e10cSrcweir 1198*cdf0e10cSrcweir void SwColumnPage::Update() 1199*cdf0e10cSrcweir { 1200*cdf0e10cSrcweir aBalanceColsCB.Enable(nCols > 1); 1201*cdf0e10cSrcweir if(nCols >= 2) 1202*cdf0e10cSrcweir { 1203*cdf0e10cSrcweir aEd1.SetPrcntValue(aEd1.NormalizePercent(nColWidth[nFirstVis]), FUNIT_TWIP); 1204*cdf0e10cSrcweir aDistEd1.SetPrcntValue(aDistEd1.NormalizePercent(nColDist[nFirstVis]), FUNIT_TWIP); 1205*cdf0e10cSrcweir aEd2.SetPrcntValue(aEd2.NormalizePercent(nColWidth[nFirstVis + 1]), FUNIT_TWIP); 1206*cdf0e10cSrcweir if(nCols >= 3) 1207*cdf0e10cSrcweir { 1208*cdf0e10cSrcweir aDistEd2.SetPrcntValue(aDistEd2.NormalizePercent(nColDist[nFirstVis + 1]), FUNIT_TWIP); 1209*cdf0e10cSrcweir aEd3.SetPrcntValue(aEd3.NormalizePercent(nColWidth[nFirstVis + 2]), FUNIT_TWIP); 1210*cdf0e10cSrcweir } 1211*cdf0e10cSrcweir else 1212*cdf0e10cSrcweir { 1213*cdf0e10cSrcweir aEd3.SetText(aEmptyStr); 1214*cdf0e10cSrcweir aDistEd2.SetText(aEmptyStr); 1215*cdf0e10cSrcweir } 1216*cdf0e10cSrcweir } 1217*cdf0e10cSrcweir else 1218*cdf0e10cSrcweir { 1219*cdf0e10cSrcweir aEd1.SetText(aEmptyStr); 1220*cdf0e10cSrcweir aEd2.SetText(aEmptyStr); 1221*cdf0e10cSrcweir aEd3.SetText(aEmptyStr); 1222*cdf0e10cSrcweir aDistEd1.SetText(aEmptyStr); 1223*cdf0e10cSrcweir aDistEd2.SetText(aEmptyStr); 1224*cdf0e10cSrcweir } 1225*cdf0e10cSrcweir UpdateColMgr(0); 1226*cdf0e10cSrcweir } 1227*cdf0e10cSrcweir 1228*cdf0e10cSrcweir /*-------------------------------------------------------------------- 1229*cdf0e10cSrcweir Beschreibung: Update Bsp 1230*cdf0e10cSrcweir --------------------------------------------------------------------*/ 1231*cdf0e10cSrcweir 1232*cdf0e10cSrcweir 1233*cdf0e10cSrcweir 1234*cdf0e10cSrcweir void SwColumnPage::ActivatePage(const SfxItemSet& rSet) 1235*cdf0e10cSrcweir { 1236*cdf0e10cSrcweir if(!bFrm) 1237*cdf0e10cSrcweir { 1238*cdf0e10cSrcweir if( SFX_ITEM_SET == rSet.GetItemState( SID_ATTR_PAGE_SIZE )) 1239*cdf0e10cSrcweir { 1240*cdf0e10cSrcweir const SvxSizeItem& rSize = (const SvxSizeItem&)rSet.Get( 1241*cdf0e10cSrcweir SID_ATTR_PAGE_SIZE); 1242*cdf0e10cSrcweir const SvxLRSpaceItem& rLRSpace = (const SvxLRSpaceItem&)rSet.Get( 1243*cdf0e10cSrcweir RES_LR_SPACE ); 1244*cdf0e10cSrcweir const SvxBoxItem& rBox = (const SvxBoxItem&) rSet.Get(RES_BOX); 1245*cdf0e10cSrcweir sal_uInt16 nActWidth = static_cast< sal_uInt16 >(rSize.GetSize().Width() 1246*cdf0e10cSrcweir - rLRSpace.GetLeft() - rLRSpace.GetRight() - rBox.GetDistance()); 1247*cdf0e10cSrcweir 1248*cdf0e10cSrcweir if( pColMgr->GetActualSize() != nActWidth) 1249*cdf0e10cSrcweir { 1250*cdf0e10cSrcweir pColMgr->SetActualWidth(nActWidth); 1251*cdf0e10cSrcweir ColModify( 0 ); 1252*cdf0e10cSrcweir UpdateColMgr( 0 ); 1253*cdf0e10cSrcweir } 1254*cdf0e10cSrcweir } 1255*cdf0e10cSrcweir aFrmExampleWN.Hide(); 1256*cdf0e10cSrcweir aPgeExampleWN.UpdateExample( rSet, pColMgr ); 1257*cdf0e10cSrcweir aPgeExampleWN.Show(); 1258*cdf0e10cSrcweir 1259*cdf0e10cSrcweir } 1260*cdf0e10cSrcweir else 1261*cdf0e10cSrcweir { 1262*cdf0e10cSrcweir aPgeExampleWN.Hide(); 1263*cdf0e10cSrcweir aFrmExampleWN.Show(); 1264*cdf0e10cSrcweir 1265*cdf0e10cSrcweir // Size 1266*cdf0e10cSrcweir const SwFmtFrmSize& rSize = (const SwFmtFrmSize&)rSet.Get(RES_FRM_SIZE); 1267*cdf0e10cSrcweir const SvxBoxItem& rBox = (const SvxBoxItem&) rSet.Get(RES_BOX); 1268*cdf0e10cSrcweir 1269*cdf0e10cSrcweir long nDistance = rBox.GetDistance(); 1270*cdf0e10cSrcweir const sal_uInt16 nTotalWish = bFormat ? FRAME_FORMAT_WIDTH : sal_uInt16(rSize.GetWidth() - 2 * nDistance); 1271*cdf0e10cSrcweir 1272*cdf0e10cSrcweir // Maximalwerte der Spaltenbreiten setzen 1273*cdf0e10cSrcweir SetPageWidth(nTotalWish); 1274*cdf0e10cSrcweir 1275*cdf0e10cSrcweir if(pColMgr->GetActualSize() != nTotalWish) 1276*cdf0e10cSrcweir { 1277*cdf0e10cSrcweir pColMgr->SetActualWidth(nTotalWish); 1278*cdf0e10cSrcweir Init(); 1279*cdf0e10cSrcweir } 1280*cdf0e10cSrcweir sal_Bool bPercent; 1281*cdf0e10cSrcweir // im Rahmenformat nur relative Angaben 1282*cdf0e10cSrcweir if ( bFormat || (rSize.GetWidthPercent() && rSize.GetWidthPercent() != 0xff) ) 1283*cdf0e10cSrcweir { 1284*cdf0e10cSrcweir // Wert fuer 100% setzen 1285*cdf0e10cSrcweir aEd1.SetRefValue(nTotalWish); 1286*cdf0e10cSrcweir aEd2.SetRefValue(nTotalWish); 1287*cdf0e10cSrcweir aEd3.SetRefValue(nTotalWish); 1288*cdf0e10cSrcweir aDistEd1.SetRefValue(nTotalWish); 1289*cdf0e10cSrcweir aDistEd2.SetRefValue(nTotalWish); 1290*cdf0e10cSrcweir 1291*cdf0e10cSrcweir // Auf %-Darstellung umschalten 1292*cdf0e10cSrcweir bPercent = sal_True; 1293*cdf0e10cSrcweir } 1294*cdf0e10cSrcweir else 1295*cdf0e10cSrcweir bPercent = sal_False; 1296*cdf0e10cSrcweir 1297*cdf0e10cSrcweir aEd1.ShowPercent(bPercent); 1298*cdf0e10cSrcweir aEd2.ShowPercent(bPercent); 1299*cdf0e10cSrcweir aEd3.ShowPercent(bPercent); 1300*cdf0e10cSrcweir aDistEd1.ShowPercent(bPercent); 1301*cdf0e10cSrcweir aDistEd2.ShowPercent(bPercent); 1302*cdf0e10cSrcweir aDistEd1.MetricField::SetMin(0); 1303*cdf0e10cSrcweir aDistEd2.MetricField::SetMin(0); 1304*cdf0e10cSrcweir } 1305*cdf0e10cSrcweir Update(); 1306*cdf0e10cSrcweir } 1307*cdf0e10cSrcweir 1308*cdf0e10cSrcweir /*-------------------------------------------------------------------- 1309*cdf0e10cSrcweir Beschreibung: 1310*cdf0e10cSrcweir --------------------------------------------------------------------*/ 1311*cdf0e10cSrcweir 1312*cdf0e10cSrcweir 1313*cdf0e10cSrcweir 1314*cdf0e10cSrcweir int SwColumnPage::DeactivatePage(SfxItemSet *_pSet) 1315*cdf0e10cSrcweir { 1316*cdf0e10cSrcweir if(_pSet) 1317*cdf0e10cSrcweir FillItemSet(*_pSet); 1318*cdf0e10cSrcweir 1319*cdf0e10cSrcweir return sal_True; 1320*cdf0e10cSrcweir } 1321*cdf0e10cSrcweir 1322*cdf0e10cSrcweir 1323*cdf0e10cSrcweir 1324*cdf0e10cSrcweir sal_uInt16* SwColumnPage::GetRanges() 1325*cdf0e10cSrcweir { 1326*cdf0e10cSrcweir return aPageRg; 1327*cdf0e10cSrcweir } 1328*cdf0e10cSrcweir 1329*cdf0e10cSrcweir /*-------------------------------------------------------------------- 1330*cdf0e10cSrcweir Beschreibung: 1331*cdf0e10cSrcweir --------------------------------------------------------------------*/ 1332*cdf0e10cSrcweir 1333*cdf0e10cSrcweir 1334*cdf0e10cSrcweir 1335*cdf0e10cSrcweir IMPL_LINK( SwColumnPage, SetDefaultsHdl, ValueSet *, pVS ) 1336*cdf0e10cSrcweir { 1337*cdf0e10cSrcweir sal_uInt16 nItem = pVS->GetSelectItemId(); 1338*cdf0e10cSrcweir if( nItem < 4 ) 1339*cdf0e10cSrcweir { 1340*cdf0e10cSrcweir aCLNrEdt.SetValue( nItem ); 1341*cdf0e10cSrcweir aAutoWidthBox.Check(); 1342*cdf0e10cSrcweir aDistEd1.SetPrcntValue(0); 1343*cdf0e10cSrcweir ColModify(0); 1344*cdf0e10cSrcweir } 1345*cdf0e10cSrcweir else 1346*cdf0e10cSrcweir { 1347*cdf0e10cSrcweir bLockUpdate = sal_True; 1348*cdf0e10cSrcweir aCLNrEdt.SetValue( 2 ); 1349*cdf0e10cSrcweir aAutoWidthBox.Check(sal_False); 1350*cdf0e10cSrcweir aDistEd1.SetPrcntValue(0); 1351*cdf0e10cSrcweir ColModify(0); 1352*cdf0e10cSrcweir // jetzt noch das Breitenverhaeltnisse auf 2 : 1 bzw. 1 : 2 stellen 1353*cdf0e10cSrcweir sal_uInt16 nSmall = pColMgr->GetActualSize() / 3; 1354*cdf0e10cSrcweir if(nItem == 4) 1355*cdf0e10cSrcweir { 1356*cdf0e10cSrcweir aEd2.SetPrcntValue(aEd2.NormalizePercent(long(nSmall)), FUNIT_TWIP); 1357*cdf0e10cSrcweir pModifiedField = &aEd2; 1358*cdf0e10cSrcweir } 1359*cdf0e10cSrcweir else 1360*cdf0e10cSrcweir { 1361*cdf0e10cSrcweir aEd1.SetPrcntValue(aEd1.NormalizePercent(long(nSmall)), FUNIT_TWIP); 1362*cdf0e10cSrcweir pModifiedField = &aEd1; 1363*cdf0e10cSrcweir } 1364*cdf0e10cSrcweir bLockUpdate = sal_False; 1365*cdf0e10cSrcweir Timeout(0); 1366*cdf0e10cSrcweir 1367*cdf0e10cSrcweir } 1368*cdf0e10cSrcweir return 0; 1369*cdf0e10cSrcweir } 1370*cdf0e10cSrcweir 1371*cdf0e10cSrcweir /*-----------------25.10.96 11.41------------------- 1372*cdf0e10cSrcweir 1373*cdf0e10cSrcweir --------------------------------------------------*/ 1374*cdf0e10cSrcweir 1375*cdf0e10cSrcweir 1376*cdf0e10cSrcweir void SwColumnPage::SetFrmMode(sal_Bool bMod) 1377*cdf0e10cSrcweir { 1378*cdf0e10cSrcweir bFrm = bMod; 1379*cdf0e10cSrcweir } 1380*cdf0e10cSrcweir /* -----------------------------2002/06/19 13:08------------------------------ 1381*cdf0e10cSrcweir 1382*cdf0e10cSrcweir ---------------------------------------------------------------------------*/ 1383*cdf0e10cSrcweir void SwColumnPage::SetInSection(sal_Bool bSet) 1384*cdf0e10cSrcweir { 1385*cdf0e10cSrcweir if(!SW_MOD()->GetCTLOptions().IsCTLFontEnabled()) 1386*cdf0e10cSrcweir return; 1387*cdf0e10cSrcweir 1388*cdf0e10cSrcweir aVertFL.Show(bSet); 1389*cdf0e10cSrcweir aPropertiesFL.Show(bSet); 1390*cdf0e10cSrcweir aTextDirectionFT.Show(bSet); 1391*cdf0e10cSrcweir aTextDirectionLB.Show(bSet); 1392*cdf0e10cSrcweir if(bSet) 1393*cdf0e10cSrcweir { 1394*cdf0e10cSrcweir //resize line type FixedLine 1395*cdf0e10cSrcweir Point aLtPos = aFLLineType.GetPosPixel(); 1396*cdf0e10cSrcweir Point aPropPos = aPropertiesFL.GetPosPixel(); 1397*cdf0e10cSrcweir Size aSz = aFLLineType.GetSizePixel(); 1398*cdf0e10cSrcweir aSz.Width() = aPropPos.X() - aLtPos.X() - LogicToPixel(Size(8, 8), MAP_APPFONT).Width(); 1399*cdf0e10cSrcweir aFLLineType.SetSizePixel(aSz); 1400*cdf0e10cSrcweir } 1401*cdf0e10cSrcweir else 1402*cdf0e10cSrcweir { 1403*cdf0e10cSrcweir Size aSz = aFLLineType.GetSizePixel(); 1404*cdf0e10cSrcweir aSz.Width() = LogicToPixel(Size(248, 248), MAP_APPFONT).Width(); 1405*cdf0e10cSrcweir aFLLineType.SetSizePixel(aSz); 1406*cdf0e10cSrcweir } 1407*cdf0e10cSrcweir } 1408*cdf0e10cSrcweir 1409*cdf0e10cSrcweir /*-----------------07.03.97 08.33------------------- 1410*cdf0e10cSrcweir 1411*cdf0e10cSrcweir --------------------------------------------------*/ 1412*cdf0e10cSrcweir 1413*cdf0e10cSrcweir 1414*cdf0e10cSrcweir void ColumnValueSet::UserDraw( const UserDrawEvent& rUDEvt ) 1415*cdf0e10cSrcweir { 1416*cdf0e10cSrcweir OutputDevice* pDev = rUDEvt.GetDevice(); 1417*cdf0e10cSrcweir const StyleSettings& rStyleSettings = GetSettings().GetStyleSettings(); 1418*cdf0e10cSrcweir 1419*cdf0e10cSrcweir Rectangle aRect = rUDEvt.GetRect(); 1420*cdf0e10cSrcweir sal_uInt16 nItemId = rUDEvt.GetItemId(); 1421*cdf0e10cSrcweir long nRectWidth = aRect.GetWidth(); 1422*cdf0e10cSrcweir long nRectHeight = aRect.GetHeight(); 1423*cdf0e10cSrcweir 1424*cdf0e10cSrcweir Point aBLPos = aRect.TopLeft(); 1425*cdf0e10cSrcweir Color aFillColor(pDev->GetFillColor()); 1426*cdf0e10cSrcweir Color aLineColor(pDev->GetLineColor()); 1427*cdf0e10cSrcweir pDev->SetFillColor(rStyleSettings.GetFieldColor()); 1428*cdf0e10cSrcweir pDev->SetLineColor(SwViewOption::GetFontColor()); 1429*cdf0e10cSrcweir 1430*cdf0e10cSrcweir long nStep = Abs(Abs(nRectHeight * 95 /100) / 11); 1431*cdf0e10cSrcweir long nTop = (nRectHeight - 11 * nStep ) / 2; 1432*cdf0e10cSrcweir sal_uInt16 nCols = 0; 1433*cdf0e10cSrcweir long nStarts[3]; 1434*cdf0e10cSrcweir long nEnds[3]; 1435*cdf0e10cSrcweir nStarts[0] = nRectWidth * 10 / 100; 1436*cdf0e10cSrcweir switch( nItemId ) 1437*cdf0e10cSrcweir { 1438*cdf0e10cSrcweir case 1: 1439*cdf0e10cSrcweir nEnds[0] = nRectWidth * 9 / 10; 1440*cdf0e10cSrcweir nCols = 1; 1441*cdf0e10cSrcweir break; 1442*cdf0e10cSrcweir case 2: nCols = 2; 1443*cdf0e10cSrcweir nEnds[0] = nRectWidth * 45 / 100; 1444*cdf0e10cSrcweir nStarts[1] = nEnds[0] + nStep; 1445*cdf0e10cSrcweir nEnds[1] = nRectWidth * 9 / 10; 1446*cdf0e10cSrcweir break; 1447*cdf0e10cSrcweir case 3: nCols = 3; 1448*cdf0e10cSrcweir nEnds[0] = nRectWidth * 30 / 100; 1449*cdf0e10cSrcweir nStarts[1] = nEnds[0] + nStep; 1450*cdf0e10cSrcweir nEnds[1] = nRectWidth * 63 / 100; 1451*cdf0e10cSrcweir nStarts[2] = nEnds[1] + nStep; 1452*cdf0e10cSrcweir nEnds[2] = nRectWidth * 9 / 10; 1453*cdf0e10cSrcweir break; 1454*cdf0e10cSrcweir case 4: nCols = 2; 1455*cdf0e10cSrcweir nEnds[0] = nRectWidth * 63 / 100; 1456*cdf0e10cSrcweir nStarts[1] = nEnds[0] + nStep; 1457*cdf0e10cSrcweir nEnds[1] = nRectWidth * 9 / 10; 1458*cdf0e10cSrcweir break; 1459*cdf0e10cSrcweir case 5: nCols = 2; 1460*cdf0e10cSrcweir nEnds[0] = nRectWidth * 30 / 100; 1461*cdf0e10cSrcweir nStarts[1] = nEnds[0] + nStep; 1462*cdf0e10cSrcweir nEnds[1] = nRectWidth * 9 / 10; 1463*cdf0e10cSrcweir break; 1464*cdf0e10cSrcweir } 1465*cdf0e10cSrcweir for(sal_uInt16 j = 0; j < nCols; j++ ) 1466*cdf0e10cSrcweir { 1467*cdf0e10cSrcweir Point aStart(aBLPos.X() + nStarts[j], 0); 1468*cdf0e10cSrcweir Point aEnd(aBLPos.X() + nEnds[j], 0); 1469*cdf0e10cSrcweir for( sal_uInt16 i = 0; i < 12; i ++) 1470*cdf0e10cSrcweir { 1471*cdf0e10cSrcweir aStart.Y() = aEnd.Y() = aBLPos.Y() + nTop + i * nStep; 1472*cdf0e10cSrcweir pDev->DrawLine(aStart, aEnd); 1473*cdf0e10cSrcweir } 1474*cdf0e10cSrcweir } 1475*cdf0e10cSrcweir pDev->SetFillColor(aFillColor); 1476*cdf0e10cSrcweir pDev->SetLineColor(aLineColor); 1477*cdf0e10cSrcweir } 1478*cdf0e10cSrcweir 1479*cdf0e10cSrcweir /*-----------------07.03.97 08.48------------------- 1480*cdf0e10cSrcweir 1481*cdf0e10cSrcweir --------------------------------------------------*/ 1482*cdf0e10cSrcweir 1483*cdf0e10cSrcweir ColumnValueSet::~ColumnValueSet() 1484*cdf0e10cSrcweir { 1485*cdf0e10cSrcweir } 1486*cdf0e10cSrcweir /* -----------------------------02.04.2002 16:01------------------------------ 1487*cdf0e10cSrcweir 1488*cdf0e10cSrcweir ---------------------------------------------------------------------------*/ 1489*cdf0e10cSrcweir void ColumnValueSet::DataChanged( const DataChangedEvent& rDCEvt ) 1490*cdf0e10cSrcweir { 1491*cdf0e10cSrcweir if ( (rDCEvt.GetType() == DATACHANGED_SETTINGS) && 1492*cdf0e10cSrcweir (rDCEvt.GetFlags() & SETTINGS_STYLE) ) 1493*cdf0e10cSrcweir { 1494*cdf0e10cSrcweir Format(); 1495*cdf0e10cSrcweir } 1496*cdf0e10cSrcweir ValueSet::DataChanged( rDCEvt ); 1497*cdf0e10cSrcweir } 1498*cdf0e10cSrcweir 1499