summaryrefslogtreecommitdiff
path: root/cui/source/tabpages/labdlg.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'cui/source/tabpages/labdlg.cxx')
-rw-r--r--cui/source/tabpages/labdlg.cxx653
1 files changed, 653 insertions, 0 deletions
diff --git a/cui/source/tabpages/labdlg.cxx b/cui/source/tabpages/labdlg.cxx
new file mode 100644
index 000000000000..259e32a5aaae
--- /dev/null
+++ b/cui/source/tabpages/labdlg.cxx
@@ -0,0 +1,653 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2008 by Sun Microsystems, Inc.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: labdlg.cxx,v $
+ * $Revision: 1.19 $
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_cui.hxx"
+
+// include ---------------------------------------------------------------
+#include <tools/shl.hxx>
+#include <sfx2/app.hxx>
+#include <sfx2/module.hxx>
+#include <swpossizetabpage.hxx>
+
+#define _SVX_LABDLG_CXX
+
+#include <svx/svdattrx.hxx>
+#include <svx/dialogs.hrc>
+#include <svx/dialmgr.hxx>
+#include "svx/dlgutil.hxx"
+#include "transfrm.hxx"
+
+#include "labdlg.hrc"
+#include "labdlg.hxx"
+
+// define ----------------------------------------------------------------
+
+#define AZ_OPTIMAL 0
+#define AZ_VON_OBEN 1
+#define AZ_VON_LINKS 2
+#define AZ_HORIZONTAL 3
+#define AZ_VERTIKAL 4
+
+#define AT_OBEN 0
+#define AT_MITTE 1
+#define AT_UNTEN 2
+
+#define WK_OPTIMAL 0
+#define WK_30 1
+#define WK_45 2
+#define WK_60 3
+#define WK_90 4
+
+// static ----------------------------------------------------------------
+
+static USHORT pCaptionRanges[] =
+{
+ SDRATTR_CAPTIONTYPE,
+ SDRATTR_CAPTIONFIXEDANGLE,
+ SDRATTR_CAPTIONANGLE,
+ SDRATTR_CAPTIONGAP,
+ SDRATTR_CAPTIONESCDIR,
+ SDRATTR_CAPTIONESCISREL,
+ SDRATTR_CAPTIONESCREL,
+ SDRATTR_CAPTIONESCABS,
+ SDRATTR_CAPTIONLINELEN,
+ SDRATTR_CAPTIONFITLINELEN,
+ 0
+};
+
+// -----------------------------------------------------------------------
+
+SvxCaptionTabPage::SvxCaptionTabPage(Window* pParent, const SfxItemSet& rInAttrs)
+ : SfxTabPage( pParent, SVX_RES( RID_SVXPAGE_CAPTION ), rInAttrs ),
+
+ aCT_CAPTTYPE( this, SVX_RES( CT_CAPTTYPE ) ),
+ aFT_ABSTAND( this, SVX_RES( FT_ABSTAND ) ),
+ aMF_ABSTAND( this, SVX_RES( MF_ABSTAND ) ),
+ aFT_WINKEL( this, SVX_RES( FT_WINKEL ) ),
+ aLB_WINKEL( this, SVX_RES( LB_WINKEL ) ),
+ aFT_ANSATZ( this, SVX_RES( FT_ANSATZ ) ),
+ aLB_ANSATZ( this, SVX_RES( LB_ANSATZ ) ),
+ aFT_UM( this, SVX_RES( FT_UM ) ),
+ aMF_ANSATZ( this, SVX_RES( MF_ANSATZ ) ),
+ aFT_ANSATZ_REL( this, SVX_RES( FT_ANSATZ_REL ) ),
+ aLB_ANSATZ_REL( this, SVX_RES( LB_ANSATZ_REL ) ),
+ aFT_LAENGE( this, SVX_RES( FT_LAENGE ) ),
+ aMF_LAENGE( this, SVX_RES( MF_LAENGE ) ),
+ aCB_LAENGE( this, SVX_RES( CB_LAENGE ) ),
+
+ aStrHorzList( SVX_RES(STR_HORZ_LIST) ),
+ aStrVertList( SVX_RES(STR_VERT_LIST) ),
+
+ rOutAttrs ( rInAttrs )
+{
+ //------------NYI-------------------------------------------
+ aFT_WINKEL.Hide();
+ aLB_WINKEL.Hide();
+
+ //------------Positionen korrigieren-------------------------
+ aFT_ANSATZ_REL.SetPosPixel( aFT_UM.GetPosPixel() );
+ aLB_ANSATZ_REL.SetPosPixel(
+ Point(
+ aFT_ANSATZ_REL.GetPosPixel().X()+aFT_ANSATZ_REL.GetSizePixel().Width()+6,
+ aLB_ANSATZ.GetPosPixel().Y() )
+ );
+
+ aMF_ANSATZ.SetPosPixel(
+ Point(
+ aFT_UM.GetPosPixel().X()+aFT_UM.GetSizePixel().Width()+6,
+ aLB_ANSATZ.GetPosPixel().Y() )
+ );
+
+ sal_uInt16 nBitmap;
+ for( nBitmap = 0; nBitmap < CAPTYPE_BITMAPS_COUNT; nBitmap++ )
+ {
+ mpBmpCapTypes[nBitmap] = new Image(Bitmap(SVX_RES(BMP_CAPTTYPE_1 + nBitmap)), COL_LIGHTMAGENTA );
+ mpBmpCapTypesH[nBitmap] = new Image(Bitmap(SVX_RES(BMP_CAPTTYPE_1_H + nBitmap)), COL_LIGHTMAGENTA );
+ }
+
+ //------------ValueSet installieren--------------------------
+ aCT_CAPTTYPE.SetStyle( aCT_CAPTTYPE.GetStyle() | WB_ITEMBORDER | WB_DOUBLEBORDER | WB_NAMEFIELD );
+ aCT_CAPTTYPE.SetColCount(5);//XXX
+ aCT_CAPTTYPE.SetLineCount(1);
+ aCT_CAPTTYPE.SetSelectHdl(LINK( this, SvxCaptionTabPage, SelectCaptTypeHdl_Impl));
+
+ Image aImage;
+ aCT_CAPTTYPE.InsertItem(BMP_CAPTTYPE_1, aImage, String(SVX_RES(STR_CAPTTYPE_1)));
+ aCT_CAPTTYPE.InsertItem(BMP_CAPTTYPE_2, aImage, String(SVX_RES(STR_CAPTTYPE_2)));
+ aCT_CAPTTYPE.InsertItem(BMP_CAPTTYPE_3, aImage, String(SVX_RES(STR_CAPTTYPE_3)));
+
+ FillValueSet();
+
+ aLB_ANSATZ.SetSelectHdl(LINK(this,SvxCaptionTabPage,AnsatzSelectHdl_Impl));
+ aLB_ANSATZ_REL.SetSelectHdl(LINK(this,SvxCaptionTabPage,AnsatzRelSelectHdl_Impl));
+ aCB_LAENGE.SetClickHdl(LINK(this,SvxCaptionTabPage,LineOptHdl_Impl));
+
+ FreeResource();
+}
+
+// -----------------------------------------------------------------------
+
+SvxCaptionTabPage::~SvxCaptionTabPage()
+{
+ sal_uInt16 nBitmap;
+ for( nBitmap = 0; nBitmap < CAPTYPE_BITMAPS_COUNT; nBitmap++ )
+ {
+ delete mpBmpCapTypes[nBitmap];
+ delete mpBmpCapTypesH[nBitmap];
+ }
+}
+
+// -----------------------------------------------------------------------
+
+void SvxCaptionTabPage::Construct()
+{
+ // Setzen des Rechtecks und der Workingarea
+ DBG_ASSERT( pView, "Keine gueltige View Uebergeben!" );
+}
+
+// -----------------------------------------------------------------------
+
+BOOL SvxCaptionTabPage::FillItemSet( SfxItemSet& _rOutAttrs)
+{
+ SfxItemPool* pPool = _rOutAttrs.GetPool();
+ DBG_ASSERT( pPool, "Wo ist der Pool" );
+
+ SfxMapUnit eUnit;
+
+ nCaptionType = aCT_CAPTTYPE.GetSelectItemId()-1;
+
+ _rOutAttrs.Put( SdrCaptionTypeItem( (SdrCaptionType) nCaptionType ) );
+
+ if( aMF_ABSTAND.IsValueModified() )
+ {
+ eUnit = pPool->GetMetric( GetWhich( SDRATTR_CAPTIONGAP ) );
+ _rOutAttrs.Put( SdrCaptionGapItem( GetCoreValue(aMF_ABSTAND, eUnit ) ) );
+ }
+
+ // Sonderbehandlung!!! XXX
+ if( nCaptionType==SDRCAPT_TYPE1 )
+ {
+ switch( nEscDir )
+ {
+ case SDRCAPT_ESCHORIZONTAL: nEscDir=SDRCAPT_ESCVERTICAL;break;
+ case SDRCAPT_ESCVERTICAL: nEscDir=SDRCAPT_ESCHORIZONTAL;break;
+ }
+ }
+
+ _rOutAttrs.Put( SdrCaptionEscDirItem( (SdrCaptionEscDir)nEscDir ) );
+
+ bEscRel = aLB_ANSATZ_REL.IsVisible();
+ _rOutAttrs.Put( SdrCaptionEscIsRelItem( bEscRel ) );
+
+ if( bEscRel )
+ {
+ long nVal = 0;
+
+ switch( aLB_ANSATZ_REL.GetSelectEntryPos() )
+ {
+ case AT_OBEN: nVal=0;break;
+ case AT_MITTE: nVal=5000;break;
+ case AT_UNTEN: nVal=10000;break;
+ }
+ _rOutAttrs.Put( SdrCaptionEscRelItem( nVal ) );
+ }
+ else
+ {
+ if( aMF_ANSATZ.IsValueModified() )
+ {
+ eUnit = pPool->GetMetric( GetWhich( SDRATTR_CAPTIONESCABS ) );
+ _rOutAttrs.Put( SdrCaptionEscAbsItem( GetCoreValue(aMF_ANSATZ, eUnit ) ) );
+ }
+ }
+
+ bFitLineLen = aCB_LAENGE.IsChecked();
+ _rOutAttrs.Put( SdrCaptionFitLineLenItem( bFitLineLen ) );
+
+ if( ! bFitLineLen )
+ {
+ if( aMF_LAENGE.IsValueModified() )
+ {
+ eUnit = pPool->GetMetric( GetWhich( SDRATTR_CAPTIONLINELEN ) );
+ _rOutAttrs.Put( SdrCaptionLineLenItem( GetCoreValue(aMF_LAENGE, eUnit ) ) );
+ }
+ }
+
+//NYI-------------die Winkel muessen noch hier rein!!! XXX----------------------
+
+ return( TRUE );
+}
+
+// -----------------------------------------------------------------------
+
+void SvxCaptionTabPage::Reset( const SfxItemSet& )
+{
+
+ //------------Metrik einstellen-----------------------------
+
+ FieldUnit eFUnit = GetModuleFieldUnit( &rOutAttrs );
+
+ switch ( eFUnit )
+ {
+ case FUNIT_CM:
+ case FUNIT_M:
+ case FUNIT_KM:
+ eFUnit = FUNIT_MM;
+ break;
+ default: ;//prevent warning
+ }
+ SetFieldUnit( aMF_ABSTAND, eFUnit );
+ SetFieldUnit( aMF_ANSATZ, eFUnit );
+ SetFieldUnit( aMF_LAENGE, eFUnit );
+
+ SfxItemPool* pPool = rOutAttrs.GetPool();
+ DBG_ASSERT( pPool, "Wo ist der Pool" );
+
+ USHORT nWhich;
+ SfxMapUnit eUnit;
+
+ //------- Winkel ----------
+ nWhich = GetWhich( SDRATTR_CAPTIONANGLE );
+ nFixedAngle = ( ( const SdrCaptionAngleItem& ) rOutAttrs.Get( nWhich ) ).GetValue();
+
+ //------- absolute Ansatzentfernung ----------
+ nWhich = GetWhich( SDRATTR_CAPTIONESCABS );
+ eUnit = pPool->GetMetric( nWhich );
+ nEscAbs = ( ( const SdrCaptionEscAbsItem& ) rOutAttrs.Get( nWhich ) ).GetValue();
+ SetMetricValue( aMF_ANSATZ, nEscAbs, eUnit );
+ nEscAbs = static_cast<long>(aMF_ANSATZ.GetValue());
+
+ //------- relative Ansatzentfernung ----------
+ nWhich = GetWhich( SDRATTR_CAPTIONESCREL );
+ nEscRel = (long)( ( const SdrCaptionEscRelItem& ) rOutAttrs.Get( nWhich ) ).GetValue();
+
+ //------- Linienlaenge ----------
+ nWhich = GetWhich( SDRATTR_CAPTIONLINELEN );
+ eUnit = pPool->GetMetric( nWhich );
+ nLineLen = ( ( const SdrCaptionLineLenItem& ) rOutAttrs.Get( nWhich ) ).GetValue();
+ SetMetricValue( aMF_LAENGE, nLineLen, eUnit );
+ nLineLen = static_cast<long>(aMF_LAENGE.GetValue());
+
+ //------- Abstand zur Box ----------
+ nWhich = GetWhich( SDRATTR_CAPTIONGAP );
+ eUnit = pPool->GetMetric( nWhich );
+ nGap = ( ( const SdrCaptionGapItem& ) rOutAttrs.Get( nWhich ) ).GetValue();
+ SetMetricValue( aMF_ABSTAND, nGap, eUnit );
+ nGap = static_cast<long>(aMF_ABSTAND.GetValue());
+
+ nCaptionType = (short)( ( const SdrCaptionTypeItem& ) rOutAttrs.Get( GetWhich( SDRATTR_CAPTIONTYPE ) ) ).GetValue();
+ bFixedAngle = ( ( const SfxBoolItem& ) rOutAttrs.Get( GetWhich( SDRATTR_CAPTIONFIXEDANGLE ) ) ).GetValue();
+ bFitLineLen = ( ( const SfxBoolItem& ) rOutAttrs.Get( GetWhich( SDRATTR_CAPTIONFITLINELEN ) ) ).GetValue();
+ nEscDir = (short)( ( const SdrCaptionEscDirItem& ) rOutAttrs.Get( GetWhich( SDRATTR_CAPTIONESCDIR ) ) ).GetValue();
+ bEscRel = ( ( const SfxBoolItem& ) rOutAttrs.Get( GetWhich( SDRATTR_CAPTIONESCISREL ) ) ).GetValue();
+
+ // Sonderbehandlung!!! XXX
+ if( nCaptionType==SDRCAPT_TYPE1 )
+ {
+ switch( nEscDir )
+ {
+ case SDRCAPT_ESCHORIZONTAL: nEscDir=SDRCAPT_ESCVERTICAL;break;
+ case SDRCAPT_ESCVERTICAL: nEscDir=SDRCAPT_ESCHORIZONTAL;break;
+ }
+ }
+
+ nAnsatzRelPos=AT_MITTE;
+ nAnsatzTypePos=AZ_OPTIMAL;
+ nWinkelTypePos=WK_OPTIMAL;
+
+ aMF_ABSTAND.SetValue( nGap );
+
+ if( nEscDir == SDRCAPT_ESCHORIZONTAL )
+ {
+ if( bEscRel )
+ {
+ if( nEscRel < 3333 )
+ nAnsatzRelPos = AT_OBEN;
+ if( nEscRel > 6666 )
+ nAnsatzRelPos = AT_UNTEN;
+ nAnsatzTypePos = AZ_HORIZONTAL;
+ }
+ else
+ {
+ nAnsatzTypePos = AZ_VON_OBEN;
+ aMF_ANSATZ.SetValue( nEscAbs );
+ }
+ }
+ else if( nEscDir == SDRCAPT_ESCVERTICAL )
+ {
+ if( bEscRel )
+ {
+ if( nEscRel < 3333 )
+ nAnsatzRelPos = AT_OBEN;
+ if( nEscRel > 6666 )
+ nAnsatzRelPos = AT_UNTEN;
+ nAnsatzTypePos = AZ_VERTIKAL;
+ }
+ else
+ {
+ nAnsatzTypePos = AZ_VON_LINKS;
+ aMF_ANSATZ.SetValue( nEscAbs );
+ }
+ }
+ else if( nEscDir == SDRCAPT_ESCBESTFIT )
+ {
+ nAnsatzTypePos = AZ_OPTIMAL;
+ }
+
+ if( bFixedAngle )
+ {
+ if( nFixedAngle <= 3000 )
+ nWinkelTypePos=WK_30;
+ else if( nFixedAngle <= 4500 )
+ nWinkelTypePos=WK_45;
+ else if( nFixedAngle <= 6000 )
+ nWinkelTypePos=WK_60;
+ else
+ nWinkelTypePos=WK_90;
+ }
+
+ aCB_LAENGE.Check( bFitLineLen );
+ aMF_LAENGE.SetValue( nLineLen );
+
+ aLB_ANSATZ.SelectEntryPos( nAnsatzTypePos );
+ aLB_WINKEL.SelectEntryPos( nWinkelTypePos );
+
+ SetupAnsatz_Impl( nAnsatzTypePos );
+ aCT_CAPTTYPE.SelectItem( nCaptionType+1 );// Enum beginnt bei 0!
+ SetupType_Impl( nCaptionType+1 );
+}
+
+// -----------------------------------------------------------------------
+
+SfxTabPage* SvxCaptionTabPage::Create( Window* pWindow,
+ const SfxItemSet& rOutAttrs )
+{
+ return( new SvxCaptionTabPage( pWindow, rOutAttrs ) );
+}
+
+//------------------------------------------------------------------------
+
+USHORT* SvxCaptionTabPage::GetRanges()
+{
+ return( pCaptionRanges );
+}
+
+//------------------------------------------------------------------------
+
+void SvxCaptionTabPage::SetupAnsatz_Impl( USHORT nType )
+{
+ xub_StrLen nCnt=0, nIdx=0;
+
+ switch( nType )
+ {
+ case AZ_OPTIMAL:
+// aMF_ANSATZ.Hide(); //XXX auch bei OPTIMAL werden Abswerte genommen
+// aFT_UM.Hide();
+ aMF_ANSATZ.Show();
+ aFT_UM.Show();
+ aFT_ANSATZ_REL.Hide();
+ aLB_ANSATZ_REL.Hide();
+ nEscDir = SDRCAPT_ESCBESTFIT;
+ break;
+
+ case AZ_VON_OBEN:
+ aMF_ANSATZ.Show();
+ aFT_UM.Show();
+ aFT_ANSATZ_REL.Hide();
+ aLB_ANSATZ_REL.Hide();
+ nEscDir = SDRCAPT_ESCHORIZONTAL;
+ break;
+
+ case AZ_VON_LINKS:
+ aMF_ANSATZ.Show();
+ aFT_UM.Show();
+ aFT_ANSATZ_REL.Hide();
+ aLB_ANSATZ_REL.Hide();
+ nEscDir = SDRCAPT_ESCVERTICAL;
+ break;
+
+ case AZ_HORIZONTAL:
+ aLB_ANSATZ_REL.Clear();
+ nCnt = aStrHorzList.GetTokenCount();
+ for( nIdx=0 ; nIdx<nCnt ; nIdx++ )
+ aLB_ANSATZ_REL.InsertEntry( aStrHorzList.GetToken(nIdx) );
+ aLB_ANSATZ_REL.SelectEntryPos( nAnsatzRelPos );
+
+ aMF_ANSATZ.Hide();
+ aFT_UM.Hide();
+ aFT_ANSATZ_REL.Show();
+ aLB_ANSATZ_REL.Show();
+ nEscDir = SDRCAPT_ESCHORIZONTAL;
+ break;
+
+ case AZ_VERTIKAL:
+ aLB_ANSATZ_REL.Clear();
+ nCnt = aStrVertList.GetTokenCount();
+ for( nIdx=0 ; nIdx<nCnt ; nIdx++ )
+ aLB_ANSATZ_REL.InsertEntry( aStrVertList.GetToken(nIdx) );
+ aLB_ANSATZ_REL.SelectEntryPos( nAnsatzRelPos );
+
+ aMF_ANSATZ.Hide();
+ aFT_UM.Hide();
+ aFT_ANSATZ_REL.Show();
+ aLB_ANSATZ_REL.Show();
+ nEscDir = SDRCAPT_ESCVERTICAL;
+ break;
+ }
+}
+
+//------------------------------------------------------------------------
+
+IMPL_LINK_INLINE_START( SvxCaptionTabPage, AnsatzSelectHdl_Impl, ListBox *, pListBox )
+{
+ if( pListBox == &aLB_ANSATZ )
+ {
+ SetupAnsatz_Impl( aLB_ANSATZ.GetSelectEntryPos() );
+ }
+ return 0;
+}
+IMPL_LINK_INLINE_END( SvxCaptionTabPage, AnsatzSelectHdl_Impl, ListBox *, pListBox )
+
+//------------------------------------------------------------------------
+
+IMPL_LINK_INLINE_START( SvxCaptionTabPage, AnsatzRelSelectHdl_Impl, ListBox *, pListBox )
+{
+ if( pListBox == &aLB_ANSATZ_REL )
+ {
+ nAnsatzRelPos = aLB_ANSATZ_REL.GetSelectEntryPos();
+ }
+ return 0;
+}
+IMPL_LINK_INLINE_END( SvxCaptionTabPage, AnsatzRelSelectHdl_Impl, ListBox *, pListBox )
+
+//------------------------------------------------------------------------
+
+IMPL_LINK( SvxCaptionTabPage, LineOptHdl_Impl, Button *, pButton )
+{
+ if( pButton == &aCB_LAENGE )
+ {
+ if( aCB_LAENGE.IsChecked() || ! aCB_LAENGE.IsEnabled() )
+ {
+ aFT_LAENGE.Disable();
+ aMF_LAENGE.Disable();
+ }
+ else
+ {
+ aFT_LAENGE.Enable();
+ aMF_LAENGE.Enable();
+ }
+ }
+ return 0;
+}
+
+//------------------------------------------------------------------------
+
+IMPL_LINK_INLINE_START( SvxCaptionTabPage, SelectCaptTypeHdl_Impl, void *, EMPTYARG )
+{
+ SetupType_Impl( aCT_CAPTTYPE.GetSelectItemId() );
+ return 0;
+}
+IMPL_LINK_INLINE_END( SvxCaptionTabPage, SelectCaptTypeHdl_Impl, void *, EMPTYARG )
+
+//------------------------------------------------------------------------
+
+void SvxCaptionTabPage::SetupType_Impl( USHORT nType )
+{
+ switch( nType-1 )
+ {
+ case SDRCAPT_TYPE1:
+ aFT_WINKEL.Disable();
+ aLB_WINKEL.Disable();
+ aFT_LAENGE.Disable();
+ aCB_LAENGE.Disable();
+ LineOptHdl_Impl( &aCB_LAENGE );
+ break;
+
+ case SDRCAPT_TYPE2:
+ aFT_WINKEL.Enable();
+ aLB_WINKEL.Enable();
+ aFT_LAENGE.Disable();
+ aCB_LAENGE.Disable();
+ LineOptHdl_Impl( &aCB_LAENGE );
+ break;
+
+ case SDRCAPT_TYPE3:
+ aFT_WINKEL.Enable();
+ aLB_WINKEL.Enable();
+ aFT_LAENGE.Enable();
+ aCB_LAENGE.Enable();
+ LineOptHdl_Impl( &aCB_LAENGE );
+ break;
+
+ case SDRCAPT_TYPE4:
+ aFT_WINKEL.Enable();
+ aLB_WINKEL.Enable();
+ aFT_LAENGE.Enable();
+ aCB_LAENGE.Enable();
+ LineOptHdl_Impl( &aCB_LAENGE );
+ break;
+ }
+}
+
+// -----------------------------------------------------------------------
+
+void SvxCaptionTabPage::DataChanged( const DataChangedEvent& rDCEvt )
+{
+ SfxTabPage::DataChanged( rDCEvt );
+
+ if ( (rDCEvt.GetType() == DATACHANGED_SETTINGS) && (rDCEvt.GetFlags() & SETTINGS_STYLE) )
+ FillValueSet();
+}
+
+// -----------------------------------------------------------------------
+
+void SvxCaptionTabPage::FillValueSet()
+{
+ bool bHighContrast = GetDisplayBackground().GetColor().IsDark() != 0;
+
+ Image** ppBitmaps = bHighContrast ? mpBmpCapTypesH : mpBmpCapTypes;
+ aCT_CAPTTYPE.SetItemImage(BMP_CAPTTYPE_1, *(ppBitmaps[0]) );
+ aCT_CAPTTYPE.SetItemImage(BMP_CAPTTYPE_2, *(ppBitmaps[1]) );
+ aCT_CAPTTYPE.SetItemImage(BMP_CAPTTYPE_3, *(ppBitmaps[2]) );
+}
+
+//========================================================================
+
+
+SvxCaptionTabDialog::SvxCaptionTabDialog(Window* pParent, const SdrView* pSdrView, USHORT nAnchorTypes)
+ : SfxTabDialog( pParent, SVX_RES( RID_SVXDLG_CAPTION ) ),
+ pView ( pSdrView ),
+ nAnchorCtrls(nAnchorTypes)
+{
+ FreeResource();
+
+ DBG_ASSERT( pView, "Keine gueltige View Uebergeben!" );
+
+ //different positioning page in Writer
+ if(nAnchorCtrls & 0x00ff )
+ {
+ AddTabPage( RID_SVXPAGE_SWPOSSIZE, SvxSwPosSizeTabPage::Create,
+ SvxSwPosSizeTabPage::GetRanges );
+ RemoveTabPage( RID_SVXPAGE_POSITION_SIZE);
+ }
+ else
+ {
+ AddTabPage( RID_SVXPAGE_POSITION_SIZE, SvxPositionSizeTabPage::Create,
+ SvxPositionSizeTabPage::GetRanges );
+ RemoveTabPage( RID_SVXPAGE_SWPOSSIZE );
+ }
+ AddTabPage( RID_SVXPAGE_CAPTION, SvxCaptionTabPage::Create,
+ SvxCaptionTabPage::GetRanges );
+}
+
+// -----------------------------------------------------------------------
+
+SvxCaptionTabDialog::~SvxCaptionTabDialog()
+{
+}
+
+// -----------------------------------------------------------------------
+
+void SvxCaptionTabDialog::PageCreated( USHORT nId, SfxTabPage &rPage )
+{
+ switch( nId )
+ {
+ case RID_SVXPAGE_POSITION_SIZE:
+ ( (SvxPositionSizeTabPage&) rPage ).SetView( pView );
+ ( (SvxPositionSizeTabPage&) rPage ).Construct();
+ if( nAnchorCtrls & SVX_OBJ_NORESIZE )
+ ( (SvxPositionSizeTabPage&) rPage ).DisableResize();
+
+ if( nAnchorCtrls & SVX_OBJ_NOPROTECT )
+ ( (SvxPositionSizeTabPage&) rPage ).DisableProtect();
+ break;
+ case RID_SVXPAGE_SWPOSSIZE :
+ {
+ SvxSwPosSizeTabPage& rSwPage = static_cast<SvxSwPosSizeTabPage&>(rPage);
+ rSwPage.EnableAnchorTypes(nAnchorCtrls);
+ rSwPage.SetValidateFramePosLink( aValidateLink );
+ }
+ break;
+
+ case RID_SVXPAGE_CAPTION:
+ ( (SvxCaptionTabPage&) rPage ).SetView( pView );
+ ( (SvxCaptionTabPage&) rPage ).Construct();
+ break;
+ }
+}
+/*-- 05.03.2004 13:54:26---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+void SvxCaptionTabDialog::SetValidateFramePosLink( const Link& rLink )
+{
+ aValidateLink = rLink;
+}
+
+