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_cui.hxx" 30*cdf0e10cSrcweir 31*cdf0e10cSrcweir // include --------------------------------------------------------------- 32*cdf0e10cSrcweir #include <tools/shl.hxx> 33*cdf0e10cSrcweir #include <sfx2/app.hxx> 34*cdf0e10cSrcweir #include <sfx2/module.hxx> 35*cdf0e10cSrcweir #include <swpossizetabpage.hxx> 36*cdf0e10cSrcweir #include <svx/dialogs.hrc> 37*cdf0e10cSrcweir #define _SVX_LABDLG_CXX 38*cdf0e10cSrcweir 39*cdf0e10cSrcweir #include <svx/svdattrx.hxx> 40*cdf0e10cSrcweir #include <cuires.hrc> 41*cdf0e10cSrcweir #include <dialmgr.hxx> 42*cdf0e10cSrcweir #include "svx/dlgutil.hxx" 43*cdf0e10cSrcweir #include "transfrm.hxx" 44*cdf0e10cSrcweir 45*cdf0e10cSrcweir #include "labdlg.hrc" 46*cdf0e10cSrcweir #include "labdlg.hxx" 47*cdf0e10cSrcweir 48*cdf0e10cSrcweir // define ---------------------------------------------------------------- 49*cdf0e10cSrcweir 50*cdf0e10cSrcweir #define AZ_OPTIMAL 0 51*cdf0e10cSrcweir #define AZ_VON_OBEN 1 52*cdf0e10cSrcweir #define AZ_VON_LINKS 2 53*cdf0e10cSrcweir #define AZ_HORIZONTAL 3 54*cdf0e10cSrcweir #define AZ_VERTIKAL 4 55*cdf0e10cSrcweir 56*cdf0e10cSrcweir #define AT_OBEN 0 57*cdf0e10cSrcweir #define AT_MITTE 1 58*cdf0e10cSrcweir #define AT_UNTEN 2 59*cdf0e10cSrcweir 60*cdf0e10cSrcweir #define WK_OPTIMAL 0 61*cdf0e10cSrcweir #define WK_30 1 62*cdf0e10cSrcweir #define WK_45 2 63*cdf0e10cSrcweir #define WK_60 3 64*cdf0e10cSrcweir #define WK_90 4 65*cdf0e10cSrcweir 66*cdf0e10cSrcweir // static ---------------------------------------------------------------- 67*cdf0e10cSrcweir 68*cdf0e10cSrcweir static sal_uInt16 pCaptionRanges[] = 69*cdf0e10cSrcweir { 70*cdf0e10cSrcweir SDRATTR_CAPTIONTYPE, 71*cdf0e10cSrcweir SDRATTR_CAPTIONFIXEDANGLE, 72*cdf0e10cSrcweir SDRATTR_CAPTIONANGLE, 73*cdf0e10cSrcweir SDRATTR_CAPTIONGAP, 74*cdf0e10cSrcweir SDRATTR_CAPTIONESCDIR, 75*cdf0e10cSrcweir SDRATTR_CAPTIONESCISREL, 76*cdf0e10cSrcweir SDRATTR_CAPTIONESCREL, 77*cdf0e10cSrcweir SDRATTR_CAPTIONESCABS, 78*cdf0e10cSrcweir SDRATTR_CAPTIONLINELEN, 79*cdf0e10cSrcweir SDRATTR_CAPTIONFITLINELEN, 80*cdf0e10cSrcweir 0 81*cdf0e10cSrcweir }; 82*cdf0e10cSrcweir 83*cdf0e10cSrcweir // ----------------------------------------------------------------------- 84*cdf0e10cSrcweir 85*cdf0e10cSrcweir SvxCaptionTabPage::SvxCaptionTabPage(Window* pParent, const SfxItemSet& rInAttrs) 86*cdf0e10cSrcweir : SfxTabPage( pParent, CUI_RES( RID_SVXPAGE_CAPTION ), rInAttrs ), 87*cdf0e10cSrcweir 88*cdf0e10cSrcweir aCT_CAPTTYPE( this, CUI_RES( CT_CAPTTYPE ) ), 89*cdf0e10cSrcweir aFT_ABSTAND( this, CUI_RES( FT_ABSTAND ) ), 90*cdf0e10cSrcweir aMF_ABSTAND( this, CUI_RES( MF_ABSTAND ) ), 91*cdf0e10cSrcweir aFT_WINKEL( this, CUI_RES( FT_WINKEL ) ), 92*cdf0e10cSrcweir aLB_WINKEL( this, CUI_RES( LB_WINKEL ) ), 93*cdf0e10cSrcweir aFT_ANSATZ( this, CUI_RES( FT_ANSATZ ) ), 94*cdf0e10cSrcweir aLB_ANSATZ( this, CUI_RES( LB_ANSATZ ) ), 95*cdf0e10cSrcweir aFT_UM( this, CUI_RES( FT_UM ) ), 96*cdf0e10cSrcweir aMF_ANSATZ( this, CUI_RES( MF_ANSATZ ) ), 97*cdf0e10cSrcweir aFT_ANSATZ_REL( this, CUI_RES( FT_ANSATZ_REL ) ), 98*cdf0e10cSrcweir aLB_ANSATZ_REL( this, CUI_RES( LB_ANSATZ_REL ) ), 99*cdf0e10cSrcweir aFT_LAENGE( this, CUI_RES( FT_LAENGE ) ), 100*cdf0e10cSrcweir aMF_LAENGE( this, CUI_RES( MF_LAENGE ) ), 101*cdf0e10cSrcweir aCB_LAENGE( this, CUI_RES( CB_LAENGE ) ), 102*cdf0e10cSrcweir 103*cdf0e10cSrcweir aStrHorzList( CUI_RES(STR_HORZ_LIST) ), 104*cdf0e10cSrcweir aStrVertList( CUI_RES(STR_VERT_LIST) ), 105*cdf0e10cSrcweir 106*cdf0e10cSrcweir rOutAttrs ( rInAttrs ) 107*cdf0e10cSrcweir { 108*cdf0e10cSrcweir //------------NYI------------------------------------------- 109*cdf0e10cSrcweir aFT_WINKEL.Hide(); 110*cdf0e10cSrcweir aLB_WINKEL.Hide(); 111*cdf0e10cSrcweir 112*cdf0e10cSrcweir //------------Positionen korrigieren------------------------- 113*cdf0e10cSrcweir aFT_ANSATZ_REL.SetPosPixel( aFT_UM.GetPosPixel() ); 114*cdf0e10cSrcweir aLB_ANSATZ_REL.SetPosPixel( 115*cdf0e10cSrcweir Point( 116*cdf0e10cSrcweir aFT_ANSATZ_REL.GetPosPixel().X()+aFT_ANSATZ_REL.GetSizePixel().Width()+6, 117*cdf0e10cSrcweir aLB_ANSATZ.GetPosPixel().Y() ) 118*cdf0e10cSrcweir ); 119*cdf0e10cSrcweir 120*cdf0e10cSrcweir aMF_ANSATZ.SetPosPixel( 121*cdf0e10cSrcweir Point( 122*cdf0e10cSrcweir aFT_UM.GetPosPixel().X()+aFT_UM.GetSizePixel().Width()+6, 123*cdf0e10cSrcweir aLB_ANSATZ.GetPosPixel().Y() ) 124*cdf0e10cSrcweir ); 125*cdf0e10cSrcweir 126*cdf0e10cSrcweir sal_uInt16 nBitmap; 127*cdf0e10cSrcweir for( nBitmap = 0; nBitmap < CAPTYPE_BITMAPS_COUNT; nBitmap++ ) 128*cdf0e10cSrcweir { 129*cdf0e10cSrcweir mpBmpCapTypes[nBitmap] = new Image(Bitmap(CUI_RES(BMP_CAPTTYPE_1 + nBitmap)), COL_LIGHTMAGENTA ); 130*cdf0e10cSrcweir mpBmpCapTypesH[nBitmap] = new Image(Bitmap(CUI_RES(BMP_CAPTTYPE_1_H + nBitmap)), COL_LIGHTMAGENTA ); 131*cdf0e10cSrcweir } 132*cdf0e10cSrcweir 133*cdf0e10cSrcweir //------------ValueSet installieren-------------------------- 134*cdf0e10cSrcweir aCT_CAPTTYPE.SetStyle( aCT_CAPTTYPE.GetStyle() | WB_ITEMBORDER | WB_DOUBLEBORDER | WB_NAMEFIELD ); 135*cdf0e10cSrcweir aCT_CAPTTYPE.SetColCount(5);//XXX 136*cdf0e10cSrcweir aCT_CAPTTYPE.SetLineCount(1); 137*cdf0e10cSrcweir aCT_CAPTTYPE.SetSelectHdl(LINK( this, SvxCaptionTabPage, SelectCaptTypeHdl_Impl)); 138*cdf0e10cSrcweir 139*cdf0e10cSrcweir Image aImage; 140*cdf0e10cSrcweir aCT_CAPTTYPE.InsertItem(BMP_CAPTTYPE_1, aImage, String(CUI_RES(STR_CAPTTYPE_1))); 141*cdf0e10cSrcweir aCT_CAPTTYPE.InsertItem(BMP_CAPTTYPE_2, aImage, String(CUI_RES(STR_CAPTTYPE_2))); 142*cdf0e10cSrcweir aCT_CAPTTYPE.InsertItem(BMP_CAPTTYPE_3, aImage, String(CUI_RES(STR_CAPTTYPE_3))); 143*cdf0e10cSrcweir 144*cdf0e10cSrcweir FillValueSet(); 145*cdf0e10cSrcweir 146*cdf0e10cSrcweir aLB_ANSATZ.SetSelectHdl(LINK(this,SvxCaptionTabPage,AnsatzSelectHdl_Impl)); 147*cdf0e10cSrcweir aLB_ANSATZ_REL.SetSelectHdl(LINK(this,SvxCaptionTabPage,AnsatzRelSelectHdl_Impl)); 148*cdf0e10cSrcweir aCB_LAENGE.SetClickHdl(LINK(this,SvxCaptionTabPage,LineOptHdl_Impl)); 149*cdf0e10cSrcweir 150*cdf0e10cSrcweir FreeResource(); 151*cdf0e10cSrcweir } 152*cdf0e10cSrcweir 153*cdf0e10cSrcweir // ----------------------------------------------------------------------- 154*cdf0e10cSrcweir 155*cdf0e10cSrcweir SvxCaptionTabPage::~SvxCaptionTabPage() 156*cdf0e10cSrcweir { 157*cdf0e10cSrcweir sal_uInt16 nBitmap; 158*cdf0e10cSrcweir for( nBitmap = 0; nBitmap < CAPTYPE_BITMAPS_COUNT; nBitmap++ ) 159*cdf0e10cSrcweir { 160*cdf0e10cSrcweir delete mpBmpCapTypes[nBitmap]; 161*cdf0e10cSrcweir delete mpBmpCapTypesH[nBitmap]; 162*cdf0e10cSrcweir } 163*cdf0e10cSrcweir } 164*cdf0e10cSrcweir 165*cdf0e10cSrcweir // ----------------------------------------------------------------------- 166*cdf0e10cSrcweir 167*cdf0e10cSrcweir void SvxCaptionTabPage::Construct() 168*cdf0e10cSrcweir { 169*cdf0e10cSrcweir // Setzen des Rechtecks und der Workingarea 170*cdf0e10cSrcweir DBG_ASSERT( pView, "Keine gueltige View Uebergeben!" ); 171*cdf0e10cSrcweir } 172*cdf0e10cSrcweir 173*cdf0e10cSrcweir // ----------------------------------------------------------------------- 174*cdf0e10cSrcweir 175*cdf0e10cSrcweir sal_Bool SvxCaptionTabPage::FillItemSet( SfxItemSet& _rOutAttrs) 176*cdf0e10cSrcweir { 177*cdf0e10cSrcweir SfxItemPool* pPool = _rOutAttrs.GetPool(); 178*cdf0e10cSrcweir DBG_ASSERT( pPool, "Wo ist der Pool" ); 179*cdf0e10cSrcweir 180*cdf0e10cSrcweir SfxMapUnit eUnit; 181*cdf0e10cSrcweir 182*cdf0e10cSrcweir nCaptionType = aCT_CAPTTYPE.GetSelectItemId()-1; 183*cdf0e10cSrcweir 184*cdf0e10cSrcweir _rOutAttrs.Put( SdrCaptionTypeItem( (SdrCaptionType) nCaptionType ) ); 185*cdf0e10cSrcweir 186*cdf0e10cSrcweir if( aMF_ABSTAND.IsValueModified() ) 187*cdf0e10cSrcweir { 188*cdf0e10cSrcweir eUnit = pPool->GetMetric( GetWhich( SDRATTR_CAPTIONGAP ) ); 189*cdf0e10cSrcweir _rOutAttrs.Put( SdrCaptionGapItem( GetCoreValue(aMF_ABSTAND, eUnit ) ) ); 190*cdf0e10cSrcweir } 191*cdf0e10cSrcweir 192*cdf0e10cSrcweir // Sonderbehandlung!!! XXX 193*cdf0e10cSrcweir if( nCaptionType==SDRCAPT_TYPE1 ) 194*cdf0e10cSrcweir { 195*cdf0e10cSrcweir switch( nEscDir ) 196*cdf0e10cSrcweir { 197*cdf0e10cSrcweir case SDRCAPT_ESCHORIZONTAL: nEscDir=SDRCAPT_ESCVERTICAL;break; 198*cdf0e10cSrcweir case SDRCAPT_ESCVERTICAL: nEscDir=SDRCAPT_ESCHORIZONTAL;break; 199*cdf0e10cSrcweir } 200*cdf0e10cSrcweir } 201*cdf0e10cSrcweir 202*cdf0e10cSrcweir _rOutAttrs.Put( SdrCaptionEscDirItem( (SdrCaptionEscDir)nEscDir ) ); 203*cdf0e10cSrcweir 204*cdf0e10cSrcweir bEscRel = aLB_ANSATZ_REL.IsVisible(); 205*cdf0e10cSrcweir _rOutAttrs.Put( SdrCaptionEscIsRelItem( bEscRel ) ); 206*cdf0e10cSrcweir 207*cdf0e10cSrcweir if( bEscRel ) 208*cdf0e10cSrcweir { 209*cdf0e10cSrcweir long nVal = 0; 210*cdf0e10cSrcweir 211*cdf0e10cSrcweir switch( aLB_ANSATZ_REL.GetSelectEntryPos() ) 212*cdf0e10cSrcweir { 213*cdf0e10cSrcweir case AT_OBEN: nVal=0;break; 214*cdf0e10cSrcweir case AT_MITTE: nVal=5000;break; 215*cdf0e10cSrcweir case AT_UNTEN: nVal=10000;break; 216*cdf0e10cSrcweir } 217*cdf0e10cSrcweir _rOutAttrs.Put( SdrCaptionEscRelItem( nVal ) ); 218*cdf0e10cSrcweir } 219*cdf0e10cSrcweir else 220*cdf0e10cSrcweir { 221*cdf0e10cSrcweir if( aMF_ANSATZ.IsValueModified() ) 222*cdf0e10cSrcweir { 223*cdf0e10cSrcweir eUnit = pPool->GetMetric( GetWhich( SDRATTR_CAPTIONESCABS ) ); 224*cdf0e10cSrcweir _rOutAttrs.Put( SdrCaptionEscAbsItem( GetCoreValue(aMF_ANSATZ, eUnit ) ) ); 225*cdf0e10cSrcweir } 226*cdf0e10cSrcweir } 227*cdf0e10cSrcweir 228*cdf0e10cSrcweir bFitLineLen = aCB_LAENGE.IsChecked(); 229*cdf0e10cSrcweir _rOutAttrs.Put( SdrCaptionFitLineLenItem( bFitLineLen ) ); 230*cdf0e10cSrcweir 231*cdf0e10cSrcweir if( ! bFitLineLen ) 232*cdf0e10cSrcweir { 233*cdf0e10cSrcweir if( aMF_LAENGE.IsValueModified() ) 234*cdf0e10cSrcweir { 235*cdf0e10cSrcweir eUnit = pPool->GetMetric( GetWhich( SDRATTR_CAPTIONLINELEN ) ); 236*cdf0e10cSrcweir _rOutAttrs.Put( SdrCaptionLineLenItem( GetCoreValue(aMF_LAENGE, eUnit ) ) ); 237*cdf0e10cSrcweir } 238*cdf0e10cSrcweir } 239*cdf0e10cSrcweir 240*cdf0e10cSrcweir //NYI-------------die Winkel muessen noch hier rein!!! XXX---------------------- 241*cdf0e10cSrcweir 242*cdf0e10cSrcweir return( sal_True ); 243*cdf0e10cSrcweir } 244*cdf0e10cSrcweir 245*cdf0e10cSrcweir // ----------------------------------------------------------------------- 246*cdf0e10cSrcweir 247*cdf0e10cSrcweir void SvxCaptionTabPage::Reset( const SfxItemSet& ) 248*cdf0e10cSrcweir { 249*cdf0e10cSrcweir 250*cdf0e10cSrcweir //------------Metrik einstellen----------------------------- 251*cdf0e10cSrcweir 252*cdf0e10cSrcweir FieldUnit eFUnit = GetModuleFieldUnit( rOutAttrs ); 253*cdf0e10cSrcweir 254*cdf0e10cSrcweir switch ( eFUnit ) 255*cdf0e10cSrcweir { 256*cdf0e10cSrcweir case FUNIT_CM: 257*cdf0e10cSrcweir case FUNIT_M: 258*cdf0e10cSrcweir case FUNIT_KM: 259*cdf0e10cSrcweir eFUnit = FUNIT_MM; 260*cdf0e10cSrcweir break; 261*cdf0e10cSrcweir default: ;//prevent warning 262*cdf0e10cSrcweir } 263*cdf0e10cSrcweir SetFieldUnit( aMF_ABSTAND, eFUnit ); 264*cdf0e10cSrcweir SetFieldUnit( aMF_ANSATZ, eFUnit ); 265*cdf0e10cSrcweir SetFieldUnit( aMF_LAENGE, eFUnit ); 266*cdf0e10cSrcweir 267*cdf0e10cSrcweir SfxItemPool* pPool = rOutAttrs.GetPool(); 268*cdf0e10cSrcweir DBG_ASSERT( pPool, "Wo ist der Pool" ); 269*cdf0e10cSrcweir 270*cdf0e10cSrcweir sal_uInt16 nWhich; 271*cdf0e10cSrcweir SfxMapUnit eUnit; 272*cdf0e10cSrcweir 273*cdf0e10cSrcweir //------- Winkel ---------- 274*cdf0e10cSrcweir nWhich = GetWhich( SDRATTR_CAPTIONANGLE ); 275*cdf0e10cSrcweir nFixedAngle = ( ( const SdrCaptionAngleItem& ) rOutAttrs.Get( nWhich ) ).GetValue(); 276*cdf0e10cSrcweir 277*cdf0e10cSrcweir //------- absolute Ansatzentfernung ---------- 278*cdf0e10cSrcweir nWhich = GetWhich( SDRATTR_CAPTIONESCABS ); 279*cdf0e10cSrcweir eUnit = pPool->GetMetric( nWhich ); 280*cdf0e10cSrcweir nEscAbs = ( ( const SdrCaptionEscAbsItem& ) rOutAttrs.Get( nWhich ) ).GetValue(); 281*cdf0e10cSrcweir SetMetricValue( aMF_ANSATZ, nEscAbs, eUnit ); 282*cdf0e10cSrcweir nEscAbs = static_cast<long>(aMF_ANSATZ.GetValue()); 283*cdf0e10cSrcweir 284*cdf0e10cSrcweir //------- relative Ansatzentfernung ---------- 285*cdf0e10cSrcweir nWhich = GetWhich( SDRATTR_CAPTIONESCREL ); 286*cdf0e10cSrcweir nEscRel = (long)( ( const SdrCaptionEscRelItem& ) rOutAttrs.Get( nWhich ) ).GetValue(); 287*cdf0e10cSrcweir 288*cdf0e10cSrcweir //------- Linienlaenge ---------- 289*cdf0e10cSrcweir nWhich = GetWhich( SDRATTR_CAPTIONLINELEN ); 290*cdf0e10cSrcweir eUnit = pPool->GetMetric( nWhich ); 291*cdf0e10cSrcweir nLineLen = ( ( const SdrCaptionLineLenItem& ) rOutAttrs.Get( nWhich ) ).GetValue(); 292*cdf0e10cSrcweir SetMetricValue( aMF_LAENGE, nLineLen, eUnit ); 293*cdf0e10cSrcweir nLineLen = static_cast<long>(aMF_LAENGE.GetValue()); 294*cdf0e10cSrcweir 295*cdf0e10cSrcweir //------- Abstand zur Box ---------- 296*cdf0e10cSrcweir nWhich = GetWhich( SDRATTR_CAPTIONGAP ); 297*cdf0e10cSrcweir eUnit = pPool->GetMetric( nWhich ); 298*cdf0e10cSrcweir nGap = ( ( const SdrCaptionGapItem& ) rOutAttrs.Get( nWhich ) ).GetValue(); 299*cdf0e10cSrcweir SetMetricValue( aMF_ABSTAND, nGap, eUnit ); 300*cdf0e10cSrcweir nGap = static_cast<long>(aMF_ABSTAND.GetValue()); 301*cdf0e10cSrcweir 302*cdf0e10cSrcweir nCaptionType = (short)( ( const SdrCaptionTypeItem& ) rOutAttrs.Get( GetWhich( SDRATTR_CAPTIONTYPE ) ) ).GetValue(); 303*cdf0e10cSrcweir bFixedAngle = ( ( const SfxBoolItem& ) rOutAttrs.Get( GetWhich( SDRATTR_CAPTIONFIXEDANGLE ) ) ).GetValue(); 304*cdf0e10cSrcweir bFitLineLen = ( ( const SfxBoolItem& ) rOutAttrs.Get( GetWhich( SDRATTR_CAPTIONFITLINELEN ) ) ).GetValue(); 305*cdf0e10cSrcweir nEscDir = (short)( ( const SdrCaptionEscDirItem& ) rOutAttrs.Get( GetWhich( SDRATTR_CAPTIONESCDIR ) ) ).GetValue(); 306*cdf0e10cSrcweir bEscRel = ( ( const SfxBoolItem& ) rOutAttrs.Get( GetWhich( SDRATTR_CAPTIONESCISREL ) ) ).GetValue(); 307*cdf0e10cSrcweir 308*cdf0e10cSrcweir // Sonderbehandlung!!! XXX 309*cdf0e10cSrcweir if( nCaptionType==SDRCAPT_TYPE1 ) 310*cdf0e10cSrcweir { 311*cdf0e10cSrcweir switch( nEscDir ) 312*cdf0e10cSrcweir { 313*cdf0e10cSrcweir case SDRCAPT_ESCHORIZONTAL: nEscDir=SDRCAPT_ESCVERTICAL;break; 314*cdf0e10cSrcweir case SDRCAPT_ESCVERTICAL: nEscDir=SDRCAPT_ESCHORIZONTAL;break; 315*cdf0e10cSrcweir } 316*cdf0e10cSrcweir } 317*cdf0e10cSrcweir 318*cdf0e10cSrcweir nAnsatzRelPos=AT_MITTE; 319*cdf0e10cSrcweir nAnsatzTypePos=AZ_OPTIMAL; 320*cdf0e10cSrcweir nWinkelTypePos=WK_OPTIMAL; 321*cdf0e10cSrcweir 322*cdf0e10cSrcweir aMF_ABSTAND.SetValue( nGap ); 323*cdf0e10cSrcweir 324*cdf0e10cSrcweir if( nEscDir == SDRCAPT_ESCHORIZONTAL ) 325*cdf0e10cSrcweir { 326*cdf0e10cSrcweir if( bEscRel ) 327*cdf0e10cSrcweir { 328*cdf0e10cSrcweir if( nEscRel < 3333 ) 329*cdf0e10cSrcweir nAnsatzRelPos = AT_OBEN; 330*cdf0e10cSrcweir if( nEscRel > 6666 ) 331*cdf0e10cSrcweir nAnsatzRelPos = AT_UNTEN; 332*cdf0e10cSrcweir nAnsatzTypePos = AZ_HORIZONTAL; 333*cdf0e10cSrcweir } 334*cdf0e10cSrcweir else 335*cdf0e10cSrcweir { 336*cdf0e10cSrcweir nAnsatzTypePos = AZ_VON_OBEN; 337*cdf0e10cSrcweir aMF_ANSATZ.SetValue( nEscAbs ); 338*cdf0e10cSrcweir } 339*cdf0e10cSrcweir } 340*cdf0e10cSrcweir else if( nEscDir == SDRCAPT_ESCVERTICAL ) 341*cdf0e10cSrcweir { 342*cdf0e10cSrcweir if( bEscRel ) 343*cdf0e10cSrcweir { 344*cdf0e10cSrcweir if( nEscRel < 3333 ) 345*cdf0e10cSrcweir nAnsatzRelPos = AT_OBEN; 346*cdf0e10cSrcweir if( nEscRel > 6666 ) 347*cdf0e10cSrcweir nAnsatzRelPos = AT_UNTEN; 348*cdf0e10cSrcweir nAnsatzTypePos = AZ_VERTIKAL; 349*cdf0e10cSrcweir } 350*cdf0e10cSrcweir else 351*cdf0e10cSrcweir { 352*cdf0e10cSrcweir nAnsatzTypePos = AZ_VON_LINKS; 353*cdf0e10cSrcweir aMF_ANSATZ.SetValue( nEscAbs ); 354*cdf0e10cSrcweir } 355*cdf0e10cSrcweir } 356*cdf0e10cSrcweir else if( nEscDir == SDRCAPT_ESCBESTFIT ) 357*cdf0e10cSrcweir { 358*cdf0e10cSrcweir nAnsatzTypePos = AZ_OPTIMAL; 359*cdf0e10cSrcweir } 360*cdf0e10cSrcweir 361*cdf0e10cSrcweir if( bFixedAngle ) 362*cdf0e10cSrcweir { 363*cdf0e10cSrcweir if( nFixedAngle <= 3000 ) 364*cdf0e10cSrcweir nWinkelTypePos=WK_30; 365*cdf0e10cSrcweir else if( nFixedAngle <= 4500 ) 366*cdf0e10cSrcweir nWinkelTypePos=WK_45; 367*cdf0e10cSrcweir else if( nFixedAngle <= 6000 ) 368*cdf0e10cSrcweir nWinkelTypePos=WK_60; 369*cdf0e10cSrcweir else 370*cdf0e10cSrcweir nWinkelTypePos=WK_90; 371*cdf0e10cSrcweir } 372*cdf0e10cSrcweir 373*cdf0e10cSrcweir aCB_LAENGE.Check( bFitLineLen ); 374*cdf0e10cSrcweir aMF_LAENGE.SetValue( nLineLen ); 375*cdf0e10cSrcweir 376*cdf0e10cSrcweir aLB_ANSATZ.SelectEntryPos( nAnsatzTypePos ); 377*cdf0e10cSrcweir aLB_WINKEL.SelectEntryPos( nWinkelTypePos ); 378*cdf0e10cSrcweir 379*cdf0e10cSrcweir SetupAnsatz_Impl( nAnsatzTypePos ); 380*cdf0e10cSrcweir aCT_CAPTTYPE.SelectItem( nCaptionType+1 );// Enum beginnt bei 0! 381*cdf0e10cSrcweir SetupType_Impl( nCaptionType+1 ); 382*cdf0e10cSrcweir } 383*cdf0e10cSrcweir 384*cdf0e10cSrcweir // ----------------------------------------------------------------------- 385*cdf0e10cSrcweir 386*cdf0e10cSrcweir SfxTabPage* SvxCaptionTabPage::Create( Window* pWindow, 387*cdf0e10cSrcweir const SfxItemSet& rOutAttrs ) 388*cdf0e10cSrcweir { 389*cdf0e10cSrcweir return( new SvxCaptionTabPage( pWindow, rOutAttrs ) ); 390*cdf0e10cSrcweir } 391*cdf0e10cSrcweir 392*cdf0e10cSrcweir //------------------------------------------------------------------------ 393*cdf0e10cSrcweir 394*cdf0e10cSrcweir sal_uInt16* SvxCaptionTabPage::GetRanges() 395*cdf0e10cSrcweir { 396*cdf0e10cSrcweir return( pCaptionRanges ); 397*cdf0e10cSrcweir } 398*cdf0e10cSrcweir 399*cdf0e10cSrcweir //------------------------------------------------------------------------ 400*cdf0e10cSrcweir 401*cdf0e10cSrcweir void SvxCaptionTabPage::SetupAnsatz_Impl( sal_uInt16 nType ) 402*cdf0e10cSrcweir { 403*cdf0e10cSrcweir xub_StrLen nCnt=0, nIdx=0; 404*cdf0e10cSrcweir 405*cdf0e10cSrcweir switch( nType ) 406*cdf0e10cSrcweir { 407*cdf0e10cSrcweir case AZ_OPTIMAL: 408*cdf0e10cSrcweir // aMF_ANSATZ.Hide(); //XXX auch bei OPTIMAL werden Abswerte genommen 409*cdf0e10cSrcweir // aFT_UM.Hide(); 410*cdf0e10cSrcweir aMF_ANSATZ.Show(); 411*cdf0e10cSrcweir aFT_UM.Show(); 412*cdf0e10cSrcweir aFT_ANSATZ_REL.Hide(); 413*cdf0e10cSrcweir aLB_ANSATZ_REL.Hide(); 414*cdf0e10cSrcweir nEscDir = SDRCAPT_ESCBESTFIT; 415*cdf0e10cSrcweir break; 416*cdf0e10cSrcweir 417*cdf0e10cSrcweir case AZ_VON_OBEN: 418*cdf0e10cSrcweir aMF_ANSATZ.Show(); 419*cdf0e10cSrcweir aFT_UM.Show(); 420*cdf0e10cSrcweir aFT_ANSATZ_REL.Hide(); 421*cdf0e10cSrcweir aLB_ANSATZ_REL.Hide(); 422*cdf0e10cSrcweir nEscDir = SDRCAPT_ESCHORIZONTAL; 423*cdf0e10cSrcweir break; 424*cdf0e10cSrcweir 425*cdf0e10cSrcweir case AZ_VON_LINKS: 426*cdf0e10cSrcweir aMF_ANSATZ.Show(); 427*cdf0e10cSrcweir aFT_UM.Show(); 428*cdf0e10cSrcweir aFT_ANSATZ_REL.Hide(); 429*cdf0e10cSrcweir aLB_ANSATZ_REL.Hide(); 430*cdf0e10cSrcweir nEscDir = SDRCAPT_ESCVERTICAL; 431*cdf0e10cSrcweir break; 432*cdf0e10cSrcweir 433*cdf0e10cSrcweir case AZ_HORIZONTAL: 434*cdf0e10cSrcweir aLB_ANSATZ_REL.Clear(); 435*cdf0e10cSrcweir nCnt = aStrHorzList.GetTokenCount(); 436*cdf0e10cSrcweir for( nIdx=0 ; nIdx<nCnt ; nIdx++ ) 437*cdf0e10cSrcweir aLB_ANSATZ_REL.InsertEntry( aStrHorzList.GetToken(nIdx) ); 438*cdf0e10cSrcweir aLB_ANSATZ_REL.SelectEntryPos( nAnsatzRelPos ); 439*cdf0e10cSrcweir 440*cdf0e10cSrcweir aMF_ANSATZ.Hide(); 441*cdf0e10cSrcweir aFT_UM.Hide(); 442*cdf0e10cSrcweir aFT_ANSATZ_REL.Show(); 443*cdf0e10cSrcweir aLB_ANSATZ_REL.Show(); 444*cdf0e10cSrcweir nEscDir = SDRCAPT_ESCHORIZONTAL; 445*cdf0e10cSrcweir break; 446*cdf0e10cSrcweir 447*cdf0e10cSrcweir case AZ_VERTIKAL: 448*cdf0e10cSrcweir aLB_ANSATZ_REL.Clear(); 449*cdf0e10cSrcweir nCnt = aStrVertList.GetTokenCount(); 450*cdf0e10cSrcweir for( nIdx=0 ; nIdx<nCnt ; nIdx++ ) 451*cdf0e10cSrcweir aLB_ANSATZ_REL.InsertEntry( aStrVertList.GetToken(nIdx) ); 452*cdf0e10cSrcweir aLB_ANSATZ_REL.SelectEntryPos( nAnsatzRelPos ); 453*cdf0e10cSrcweir 454*cdf0e10cSrcweir aMF_ANSATZ.Hide(); 455*cdf0e10cSrcweir aFT_UM.Hide(); 456*cdf0e10cSrcweir aFT_ANSATZ_REL.Show(); 457*cdf0e10cSrcweir aLB_ANSATZ_REL.Show(); 458*cdf0e10cSrcweir nEscDir = SDRCAPT_ESCVERTICAL; 459*cdf0e10cSrcweir break; 460*cdf0e10cSrcweir } 461*cdf0e10cSrcweir } 462*cdf0e10cSrcweir 463*cdf0e10cSrcweir //------------------------------------------------------------------------ 464*cdf0e10cSrcweir 465*cdf0e10cSrcweir IMPL_LINK_INLINE_START( SvxCaptionTabPage, AnsatzSelectHdl_Impl, ListBox *, pListBox ) 466*cdf0e10cSrcweir { 467*cdf0e10cSrcweir if( pListBox == &aLB_ANSATZ ) 468*cdf0e10cSrcweir { 469*cdf0e10cSrcweir SetupAnsatz_Impl( aLB_ANSATZ.GetSelectEntryPos() ); 470*cdf0e10cSrcweir } 471*cdf0e10cSrcweir return 0; 472*cdf0e10cSrcweir } 473*cdf0e10cSrcweir IMPL_LINK_INLINE_END( SvxCaptionTabPage, AnsatzSelectHdl_Impl, ListBox *, pListBox ) 474*cdf0e10cSrcweir 475*cdf0e10cSrcweir //------------------------------------------------------------------------ 476*cdf0e10cSrcweir 477*cdf0e10cSrcweir IMPL_LINK_INLINE_START( SvxCaptionTabPage, AnsatzRelSelectHdl_Impl, ListBox *, pListBox ) 478*cdf0e10cSrcweir { 479*cdf0e10cSrcweir if( pListBox == &aLB_ANSATZ_REL ) 480*cdf0e10cSrcweir { 481*cdf0e10cSrcweir nAnsatzRelPos = aLB_ANSATZ_REL.GetSelectEntryPos(); 482*cdf0e10cSrcweir } 483*cdf0e10cSrcweir return 0; 484*cdf0e10cSrcweir } 485*cdf0e10cSrcweir IMPL_LINK_INLINE_END( SvxCaptionTabPage, AnsatzRelSelectHdl_Impl, ListBox *, pListBox ) 486*cdf0e10cSrcweir 487*cdf0e10cSrcweir //------------------------------------------------------------------------ 488*cdf0e10cSrcweir 489*cdf0e10cSrcweir IMPL_LINK( SvxCaptionTabPage, LineOptHdl_Impl, Button *, pButton ) 490*cdf0e10cSrcweir { 491*cdf0e10cSrcweir if( pButton == &aCB_LAENGE ) 492*cdf0e10cSrcweir { 493*cdf0e10cSrcweir if( aCB_LAENGE.IsChecked() || ! aCB_LAENGE.IsEnabled() ) 494*cdf0e10cSrcweir { 495*cdf0e10cSrcweir aFT_LAENGE.Disable(); 496*cdf0e10cSrcweir aMF_LAENGE.Disable(); 497*cdf0e10cSrcweir } 498*cdf0e10cSrcweir else 499*cdf0e10cSrcweir { 500*cdf0e10cSrcweir aFT_LAENGE.Enable(); 501*cdf0e10cSrcweir aMF_LAENGE.Enable(); 502*cdf0e10cSrcweir } 503*cdf0e10cSrcweir } 504*cdf0e10cSrcweir return 0; 505*cdf0e10cSrcweir } 506*cdf0e10cSrcweir 507*cdf0e10cSrcweir //------------------------------------------------------------------------ 508*cdf0e10cSrcweir 509*cdf0e10cSrcweir IMPL_LINK_INLINE_START( SvxCaptionTabPage, SelectCaptTypeHdl_Impl, void *, EMPTYARG ) 510*cdf0e10cSrcweir { 511*cdf0e10cSrcweir SetupType_Impl( aCT_CAPTTYPE.GetSelectItemId() ); 512*cdf0e10cSrcweir return 0; 513*cdf0e10cSrcweir } 514*cdf0e10cSrcweir IMPL_LINK_INLINE_END( SvxCaptionTabPage, SelectCaptTypeHdl_Impl, void *, EMPTYARG ) 515*cdf0e10cSrcweir 516*cdf0e10cSrcweir //------------------------------------------------------------------------ 517*cdf0e10cSrcweir 518*cdf0e10cSrcweir void SvxCaptionTabPage::SetupType_Impl( sal_uInt16 nType ) 519*cdf0e10cSrcweir { 520*cdf0e10cSrcweir switch( nType-1 ) 521*cdf0e10cSrcweir { 522*cdf0e10cSrcweir case SDRCAPT_TYPE1: 523*cdf0e10cSrcweir aFT_WINKEL.Disable(); 524*cdf0e10cSrcweir aLB_WINKEL.Disable(); 525*cdf0e10cSrcweir aFT_LAENGE.Disable(); 526*cdf0e10cSrcweir aCB_LAENGE.Disable(); 527*cdf0e10cSrcweir LineOptHdl_Impl( &aCB_LAENGE ); 528*cdf0e10cSrcweir break; 529*cdf0e10cSrcweir 530*cdf0e10cSrcweir case SDRCAPT_TYPE2: 531*cdf0e10cSrcweir aFT_WINKEL.Enable(); 532*cdf0e10cSrcweir aLB_WINKEL.Enable(); 533*cdf0e10cSrcweir aFT_LAENGE.Disable(); 534*cdf0e10cSrcweir aCB_LAENGE.Disable(); 535*cdf0e10cSrcweir LineOptHdl_Impl( &aCB_LAENGE ); 536*cdf0e10cSrcweir break; 537*cdf0e10cSrcweir 538*cdf0e10cSrcweir case SDRCAPT_TYPE3: 539*cdf0e10cSrcweir aFT_WINKEL.Enable(); 540*cdf0e10cSrcweir aLB_WINKEL.Enable(); 541*cdf0e10cSrcweir aFT_LAENGE.Enable(); 542*cdf0e10cSrcweir aCB_LAENGE.Enable(); 543*cdf0e10cSrcweir LineOptHdl_Impl( &aCB_LAENGE ); 544*cdf0e10cSrcweir break; 545*cdf0e10cSrcweir 546*cdf0e10cSrcweir case SDRCAPT_TYPE4: 547*cdf0e10cSrcweir aFT_WINKEL.Enable(); 548*cdf0e10cSrcweir aLB_WINKEL.Enable(); 549*cdf0e10cSrcweir aFT_LAENGE.Enable(); 550*cdf0e10cSrcweir aCB_LAENGE.Enable(); 551*cdf0e10cSrcweir LineOptHdl_Impl( &aCB_LAENGE ); 552*cdf0e10cSrcweir break; 553*cdf0e10cSrcweir } 554*cdf0e10cSrcweir } 555*cdf0e10cSrcweir 556*cdf0e10cSrcweir // ----------------------------------------------------------------------- 557*cdf0e10cSrcweir 558*cdf0e10cSrcweir void SvxCaptionTabPage::DataChanged( const DataChangedEvent& rDCEvt ) 559*cdf0e10cSrcweir { 560*cdf0e10cSrcweir SfxTabPage::DataChanged( rDCEvt ); 561*cdf0e10cSrcweir 562*cdf0e10cSrcweir if ( (rDCEvt.GetType() == DATACHANGED_SETTINGS) && (rDCEvt.GetFlags() & SETTINGS_STYLE) ) 563*cdf0e10cSrcweir FillValueSet(); 564*cdf0e10cSrcweir } 565*cdf0e10cSrcweir 566*cdf0e10cSrcweir // ----------------------------------------------------------------------- 567*cdf0e10cSrcweir 568*cdf0e10cSrcweir void SvxCaptionTabPage::FillValueSet() 569*cdf0e10cSrcweir { 570*cdf0e10cSrcweir bool bHighContrast = GetSettings().GetStyleSettings().GetHighContrastMode(); 571*cdf0e10cSrcweir 572*cdf0e10cSrcweir Image** ppBitmaps = bHighContrast ? mpBmpCapTypesH : mpBmpCapTypes; 573*cdf0e10cSrcweir aCT_CAPTTYPE.SetItemImage(BMP_CAPTTYPE_1, *(ppBitmaps[0]) ); 574*cdf0e10cSrcweir aCT_CAPTTYPE.SetItemImage(BMP_CAPTTYPE_2, *(ppBitmaps[1]) ); 575*cdf0e10cSrcweir aCT_CAPTTYPE.SetItemImage(BMP_CAPTTYPE_3, *(ppBitmaps[2]) ); 576*cdf0e10cSrcweir } 577*cdf0e10cSrcweir 578*cdf0e10cSrcweir //======================================================================== 579*cdf0e10cSrcweir 580*cdf0e10cSrcweir 581*cdf0e10cSrcweir SvxCaptionTabDialog::SvxCaptionTabDialog(Window* pParent, const SdrView* pSdrView, sal_uInt16 nAnchorTypes) 582*cdf0e10cSrcweir : SfxTabDialog( pParent, CUI_RES( RID_SVXDLG_CAPTION ) ), 583*cdf0e10cSrcweir pView ( pSdrView ), 584*cdf0e10cSrcweir nAnchorCtrls(nAnchorTypes) 585*cdf0e10cSrcweir { 586*cdf0e10cSrcweir FreeResource(); 587*cdf0e10cSrcweir 588*cdf0e10cSrcweir DBG_ASSERT( pView, "Keine gueltige View Uebergeben!" ); 589*cdf0e10cSrcweir 590*cdf0e10cSrcweir //different positioning page in Writer 591*cdf0e10cSrcweir if(nAnchorCtrls & 0x00ff ) 592*cdf0e10cSrcweir { 593*cdf0e10cSrcweir AddTabPage( RID_SVXPAGE_SWPOSSIZE, SvxSwPosSizeTabPage::Create, 594*cdf0e10cSrcweir SvxSwPosSizeTabPage::GetRanges ); 595*cdf0e10cSrcweir RemoveTabPage( RID_SVXPAGE_POSITION_SIZE); 596*cdf0e10cSrcweir } 597*cdf0e10cSrcweir else 598*cdf0e10cSrcweir { 599*cdf0e10cSrcweir AddTabPage( RID_SVXPAGE_POSITION_SIZE, SvxPositionSizeTabPage::Create, 600*cdf0e10cSrcweir SvxPositionSizeTabPage::GetRanges ); 601*cdf0e10cSrcweir RemoveTabPage( RID_SVXPAGE_SWPOSSIZE ); 602*cdf0e10cSrcweir } 603*cdf0e10cSrcweir AddTabPage( RID_SVXPAGE_CAPTION, SvxCaptionTabPage::Create, 604*cdf0e10cSrcweir SvxCaptionTabPage::GetRanges ); 605*cdf0e10cSrcweir } 606*cdf0e10cSrcweir 607*cdf0e10cSrcweir // ----------------------------------------------------------------------- 608*cdf0e10cSrcweir 609*cdf0e10cSrcweir SvxCaptionTabDialog::~SvxCaptionTabDialog() 610*cdf0e10cSrcweir { 611*cdf0e10cSrcweir } 612*cdf0e10cSrcweir 613*cdf0e10cSrcweir // ----------------------------------------------------------------------- 614*cdf0e10cSrcweir 615*cdf0e10cSrcweir void SvxCaptionTabDialog::PageCreated( sal_uInt16 nId, SfxTabPage &rPage ) 616*cdf0e10cSrcweir { 617*cdf0e10cSrcweir switch( nId ) 618*cdf0e10cSrcweir { 619*cdf0e10cSrcweir case RID_SVXPAGE_POSITION_SIZE: 620*cdf0e10cSrcweir ( (SvxPositionSizeTabPage&) rPage ).SetView( pView ); 621*cdf0e10cSrcweir ( (SvxPositionSizeTabPage&) rPage ).Construct(); 622*cdf0e10cSrcweir if( nAnchorCtrls & SVX_OBJ_NORESIZE ) 623*cdf0e10cSrcweir ( (SvxPositionSizeTabPage&) rPage ).DisableResize(); 624*cdf0e10cSrcweir 625*cdf0e10cSrcweir if( nAnchorCtrls & SVX_OBJ_NOPROTECT ) 626*cdf0e10cSrcweir ( (SvxPositionSizeTabPage&) rPage ).DisableProtect(); 627*cdf0e10cSrcweir break; 628*cdf0e10cSrcweir case RID_SVXPAGE_SWPOSSIZE : 629*cdf0e10cSrcweir { 630*cdf0e10cSrcweir SvxSwPosSizeTabPage& rSwPage = static_cast<SvxSwPosSizeTabPage&>(rPage); 631*cdf0e10cSrcweir rSwPage.EnableAnchorTypes(nAnchorCtrls); 632*cdf0e10cSrcweir rSwPage.SetValidateFramePosLink( aValidateLink ); 633*cdf0e10cSrcweir } 634*cdf0e10cSrcweir break; 635*cdf0e10cSrcweir 636*cdf0e10cSrcweir case RID_SVXPAGE_CAPTION: 637*cdf0e10cSrcweir ( (SvxCaptionTabPage&) rPage ).SetView( pView ); 638*cdf0e10cSrcweir ( (SvxCaptionTabPage&) rPage ).Construct(); 639*cdf0e10cSrcweir break; 640*cdf0e10cSrcweir } 641*cdf0e10cSrcweir } 642*cdf0e10cSrcweir /*-- 05.03.2004 13:54:26--------------------------------------------------- 643*cdf0e10cSrcweir 644*cdf0e10cSrcweir -----------------------------------------------------------------------*/ 645*cdf0e10cSrcweir void SvxCaptionTabDialog::SetValidateFramePosLink( const Link& rLink ) 646*cdf0e10cSrcweir { 647*cdf0e10cSrcweir aValidateLink = rLink; 648*cdf0e10cSrcweir } 649*cdf0e10cSrcweir 650*cdf0e10cSrcweir 651