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