Line data Source code
1 : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 : /*
3 : * This file is part of the LibreOffice project.
4 : *
5 : * This Source Code Form is subject to the terms of the Mozilla Public
6 : * License, v. 2.0. If a copy of the MPL was not distributed with this
7 : * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 : *
9 : * This file incorporates work covered by the following license notice:
10 : *
11 : * Licensed to the Apache Software Foundation (ASF) under one or more
12 : * contributor license agreements. See the NOTICE file distributed
13 : * with this work for additional information regarding copyright
14 : * ownership. The ASF licenses this file to you under the Apache
15 : * License, Version 2.0 (the "License"); you may not use this file
16 : * except in compliance with the License. You may obtain a copy of
17 : * the License at http://www.apache.org/licenses/LICENSE-2.0 .
18 : */
19 :
20 : #include <comphelper/string.hxx>
21 : #include <cuires.hrc>
22 : #include <dialmgr.hxx>
23 : #include <sfx2/app.hxx>
24 : #include <sfx2/module.hxx>
25 : #include <swpossizetabpage.hxx>
26 : #include <vcl/settings.hxx>
27 :
28 : #include <svx/dialogs.hrc>
29 : #include <svx/svddef.hxx>
30 : #include <svx/sxcaitm.hxx>
31 : #include <svx/sxcecitm.hxx>
32 : #include <svx/sxcgitm.hxx>
33 : #include <svx/sxcllitm.hxx>
34 : #include <svx/sxctitm.hxx>
35 :
36 : #include "svx/dlgutil.hxx"
37 : #include "labdlg.hxx"
38 : #include "transfrm.hxx"
39 :
40 : // define ----------------------------------------------------------------
41 :
42 : #define AZ_OPTIMAL 0
43 : #define AZ_VON_OBEN 1
44 : #define AZ_VON_LINKS 2
45 : #define AZ_HORIZONTAL 3
46 : #define AZ_VERTIKAL 4
47 :
48 : #define AT_OBEN 0
49 : #define AT_MITTE 1
50 : #define AT_UNTEN 2
51 :
52 : #define BMP_CAPTTYPE_1 1
53 : #define BMP_CAPTTYPE_2 2
54 : #define BMP_CAPTTYPE_3 3
55 :
56 : // static ----------------------------------------------------------------
57 :
58 : static const sal_uInt16 pCaptionRanges[] =
59 : {
60 : SDRATTR_CAPTIONTYPE,
61 : SDRATTR_CAPTIONFIXEDANGLE,
62 : SDRATTR_CAPTIONANGLE,
63 : SDRATTR_CAPTIONGAP,
64 : SDRATTR_CAPTIONESCDIR,
65 : SDRATTR_CAPTIONESCISREL,
66 : SDRATTR_CAPTIONESCREL,
67 : SDRATTR_CAPTIONESCABS,
68 : SDRATTR_CAPTIONLINELEN,
69 : SDRATTR_CAPTIONFITLINELEN,
70 : 0
71 : };
72 :
73 0 : SvxCaptionTabPage::SvxCaptionTabPage(vcl::Window* pParent, const SfxItemSet& rInAttrs)
74 : : SfxTabPage(pParent, "CalloutPage", "cui/ui/calloutpage.ui", &rInAttrs)
75 : , nCaptionType(0)
76 : , nGap(0)
77 : , nEscDir(0)
78 : , bEscRel(false)
79 : , nEscAbs(0)
80 : , nEscRel(0)
81 : , nLineLen(0)
82 : , bFitLineLen(false)
83 : , nAnsatzRelPos(0)
84 : , nAnsatzTypePos(0)
85 : , rOutAttrs(rInAttrs)
86 0 : , pView(NULL)
87 : {
88 0 : get(m_pCT_CAPTTYPE, "valueset");
89 :
90 0 : Size aSize(m_pCT_CAPTTYPE->LogicToPixel(Size(187, 38), MAP_APPFONT));
91 0 : m_pCT_CAPTTYPE->set_width_request(aSize.Width());
92 0 : m_pCT_CAPTTYPE->set_height_request(aSize.Height());
93 :
94 0 : get(m_pMF_ABSTAND, "spacing");
95 0 : get(m_pLB_ANSATZ, "extension");
96 0 : get(m_pFT_UM, "byft");
97 0 : get(m_pMF_ANSATZ, "by");
98 0 : get(m_pFT_ANSATZ_REL, "positionft");
99 0 : get(m_pLB_ANSATZ_REL, "position");
100 :
101 : assert(m_pLB_ANSATZ_REL->GetEntryCount() == 6);
102 0 : for (int i = 0; i < 3; ++i)
103 0 : m_aStrHorzList.push_back(m_pLB_ANSATZ_REL->GetEntry(i));
104 0 : for (int i = 3; i < 6; ++i)
105 0 : m_aStrVertList.push_back(m_pLB_ANSATZ_REL->GetEntry(i));
106 0 : m_pLB_ANSATZ_REL->Clear();
107 :
108 0 : ListBox *pLineTypes = get<ListBox>("linetypes");
109 : assert(pLineTypes->GetEntryCount() == 3);
110 0 : for (int i = 0; i < 3; ++i)
111 0 : m_aLineTypes.push_back(pLineTypes->GetEntry(i));
112 :
113 0 : get(m_pFT_LAENGE, "lengthft");
114 0 : get(m_pMF_LAENGE, "length");
115 0 : get(m_pCB_LAENGE, "optimal");
116 :
117 0 : for(sal_uInt16 nBitmap = 0; nBitmap < CAPTYPE_BITMAPS_COUNT; ++nBitmap)
118 : {
119 0 : FixedImage *pImage = get<FixedImage>(OString("legtyp") + OString::number(nBitmap+1));
120 0 : m_aBmpCapTypes[nBitmap] = pImage->GetImage();
121 : }
122 :
123 : //------------install ValueSet--------------------------
124 0 : m_pCT_CAPTTYPE->SetStyle( m_pCT_CAPTTYPE->GetStyle() | WB_ITEMBORDER | WB_DOUBLEBORDER | WB_NAMEFIELD );
125 0 : m_pCT_CAPTTYPE->SetColCount(5);//XXX
126 0 : m_pCT_CAPTTYPE->SetLineCount(1);
127 0 : m_pCT_CAPTTYPE->SetSelectHdl(LINK( this, SvxCaptionTabPage, SelectCaptTypeHdl_Impl));
128 :
129 0 : Image aImage;
130 0 : m_pCT_CAPTTYPE->InsertItem(BMP_CAPTTYPE_1, aImage, m_aLineTypes[0]);
131 0 : m_pCT_CAPTTYPE->InsertItem(BMP_CAPTTYPE_2, aImage, m_aLineTypes[1]);
132 0 : m_pCT_CAPTTYPE->InsertItem(BMP_CAPTTYPE_3, aImage, m_aLineTypes[2]);
133 :
134 0 : FillValueSet();
135 :
136 0 : m_pLB_ANSATZ->SetSelectHdl(LINK(this,SvxCaptionTabPage,AnsatzSelectHdl_Impl));
137 0 : m_pLB_ANSATZ_REL->SetSelectHdl(LINK(this,SvxCaptionTabPage,AnsatzRelSelectHdl_Impl));
138 0 : m_pCB_LAENGE->SetClickHdl(LINK(this,SvxCaptionTabPage,LineOptHdl_Impl));
139 0 : }
140 :
141 0 : void SvxCaptionTabPage::Construct()
142 : {
143 : // set rectangle and working area
144 : DBG_ASSERT( pView, "Keine gueltige View Uebergeben!" );
145 0 : }
146 :
147 :
148 :
149 0 : bool SvxCaptionTabPage::FillItemSet( SfxItemSet* _rOutAttrs)
150 : {
151 0 : SfxItemPool* pPool = _rOutAttrs->GetPool();
152 : DBG_ASSERT( pPool, "Wo ist der Pool" );
153 :
154 : SfxMapUnit eUnit;
155 :
156 0 : nCaptionType = m_pCT_CAPTTYPE->GetSelectItemId()-1;
157 :
158 0 : _rOutAttrs->Put( SdrCaptionTypeItem( (SdrCaptionType) nCaptionType ) );
159 :
160 0 : if( m_pMF_ABSTAND->IsValueModified() )
161 : {
162 0 : eUnit = pPool->GetMetric( GetWhich( SDRATTR_CAPTIONGAP ) );
163 0 : _rOutAttrs->Put( SdrCaptionGapItem( GetCoreValue(*m_pMF_ABSTAND, eUnit ) ) );
164 : }
165 :
166 : // special treatment!!! XXX
167 0 : if( nCaptionType==SDRCAPT_TYPE1 )
168 : {
169 0 : switch( nEscDir )
170 : {
171 0 : case SDRCAPT_ESCHORIZONTAL: nEscDir=SDRCAPT_ESCVERTICAL;break;
172 0 : case SDRCAPT_ESCVERTICAL: nEscDir=SDRCAPT_ESCHORIZONTAL;break;
173 : }
174 : }
175 :
176 0 : _rOutAttrs->Put( SdrCaptionEscDirItem( (SdrCaptionEscDir)nEscDir ) );
177 :
178 0 : bEscRel = m_pLB_ANSATZ_REL->IsVisible();
179 0 : _rOutAttrs->Put( SdrCaptionEscIsRelItem( bEscRel ) );
180 :
181 0 : if( bEscRel )
182 : {
183 0 : long nVal = 0;
184 :
185 0 : switch( m_pLB_ANSATZ_REL->GetSelectEntryPos() )
186 : {
187 0 : case AT_OBEN: nVal=0;break;
188 0 : case AT_MITTE: nVal=5000;break;
189 0 : case AT_UNTEN: nVal=10000;break;
190 : }
191 0 : _rOutAttrs->Put( SdrCaptionEscRelItem( nVal ) );
192 : }
193 : else
194 : {
195 0 : if( m_pMF_ANSATZ->IsValueModified() )
196 : {
197 0 : eUnit = pPool->GetMetric( GetWhich( SDRATTR_CAPTIONESCABS ) );
198 0 : _rOutAttrs->Put( SdrCaptionEscAbsItem( GetCoreValue(*m_pMF_ANSATZ, eUnit ) ) );
199 : }
200 : }
201 :
202 0 : bFitLineLen = m_pCB_LAENGE->IsChecked();
203 0 : _rOutAttrs->Put( SdrCaptionFitLineLenItem( bFitLineLen ) );
204 :
205 0 : if( ! bFitLineLen )
206 : {
207 0 : if( m_pMF_LAENGE->IsValueModified() )
208 : {
209 0 : eUnit = pPool->GetMetric( GetWhich( SDRATTR_CAPTIONLINELEN ) );
210 0 : _rOutAttrs->Put( SdrCaptionLineLenItem( GetCoreValue(*m_pMF_LAENGE, eUnit ) ) );
211 : }
212 : }
213 :
214 : //NYI-------------the angles have to be added here!!! XXX----------------------
215 :
216 0 : return true;
217 : }
218 :
219 :
220 :
221 0 : void SvxCaptionTabPage::Reset( const SfxItemSet* )
222 : {
223 :
224 : //------------set metric-----------------------------
225 :
226 0 : FieldUnit eFUnit = GetModuleFieldUnit( rOutAttrs );
227 :
228 0 : switch ( eFUnit )
229 : {
230 : case FUNIT_CM:
231 : case FUNIT_M:
232 : case FUNIT_KM:
233 0 : eFUnit = FUNIT_MM;
234 0 : break;
235 : default: ;//prevent warning
236 : }
237 0 : SetFieldUnit( *m_pMF_ABSTAND, eFUnit );
238 0 : SetFieldUnit( *m_pMF_ANSATZ, eFUnit );
239 0 : SetFieldUnit( *m_pMF_LAENGE, eFUnit );
240 :
241 0 : SfxItemPool* pPool = rOutAttrs.GetPool();
242 : DBG_ASSERT( pPool, "Wo ist der Pool" );
243 :
244 : sal_uInt16 nWhich;
245 : SfxMapUnit eUnit;
246 :
247 0 : nWhich = GetWhich( SDRATTR_CAPTIONESCABS );
248 0 : eUnit = pPool->GetMetric( nWhich );
249 0 : nEscAbs = static_cast<const SdrCaptionEscAbsItem&>( rOutAttrs.Get( nWhich ) ).GetValue();
250 0 : SetMetricValue( *m_pMF_ANSATZ, nEscAbs, eUnit );
251 0 : nEscAbs = static_cast<long>(m_pMF_ANSATZ->GetValue());
252 :
253 0 : nWhich = GetWhich( SDRATTR_CAPTIONESCREL );
254 0 : nEscRel = (long)static_cast<const SdrCaptionEscRelItem&>( rOutAttrs.Get( nWhich ) ).GetValue();
255 :
256 : //------- line length ----------
257 0 : nWhich = GetWhich( SDRATTR_CAPTIONLINELEN );
258 0 : eUnit = pPool->GetMetric( nWhich );
259 0 : nLineLen = static_cast<const SdrCaptionLineLenItem&>( rOutAttrs.Get( nWhich ) ).GetValue();
260 0 : SetMetricValue( *m_pMF_LAENGE, nLineLen, eUnit );
261 0 : nLineLen = static_cast<long>(m_pMF_LAENGE->GetValue());
262 :
263 : //------- distance to box ----------
264 0 : nWhich = GetWhich( SDRATTR_CAPTIONGAP );
265 0 : eUnit = pPool->GetMetric( nWhich );
266 0 : nGap = static_cast<const SdrCaptionGapItem&>( rOutAttrs.Get( nWhich ) ).GetValue();
267 0 : SetMetricValue( *m_pMF_ABSTAND, nGap, eUnit );
268 0 : nGap = static_cast<long>(m_pMF_ABSTAND->GetValue());
269 :
270 0 : nCaptionType = (short)static_cast<const SdrCaptionTypeItem&>( rOutAttrs.Get( GetWhich( SDRATTR_CAPTIONTYPE ) ) ).GetValue();
271 0 : bFitLineLen = static_cast<const SfxBoolItem&>( rOutAttrs.Get( GetWhich( SDRATTR_CAPTIONFITLINELEN ) ) ).GetValue();
272 0 : nEscDir = (short)static_cast<const SdrCaptionEscDirItem&>( rOutAttrs.Get( GetWhich( SDRATTR_CAPTIONESCDIR ) ) ).GetValue();
273 0 : bEscRel = static_cast<const SfxBoolItem&>( rOutAttrs.Get( GetWhich( SDRATTR_CAPTIONESCISREL ) ) ).GetValue();
274 :
275 : // special treatment!!! XXX
276 0 : if( nCaptionType==SDRCAPT_TYPE1 )
277 : {
278 0 : switch( nEscDir )
279 : {
280 0 : case SDRCAPT_ESCHORIZONTAL: nEscDir=SDRCAPT_ESCVERTICAL;break;
281 0 : case SDRCAPT_ESCVERTICAL: nEscDir=SDRCAPT_ESCHORIZONTAL;break;
282 : }
283 : }
284 :
285 0 : nAnsatzRelPos=AT_MITTE;
286 0 : nAnsatzTypePos=AZ_OPTIMAL;
287 :
288 0 : m_pMF_ABSTAND->SetValue( nGap );
289 :
290 0 : if( nEscDir == SDRCAPT_ESCHORIZONTAL )
291 : {
292 0 : if( bEscRel )
293 : {
294 0 : if( nEscRel < 3333 )
295 0 : nAnsatzRelPos = AT_OBEN;
296 0 : if( nEscRel > 6666 )
297 0 : nAnsatzRelPos = AT_UNTEN;
298 0 : nAnsatzTypePos = AZ_HORIZONTAL;
299 : }
300 : else
301 : {
302 0 : nAnsatzTypePos = AZ_VON_OBEN;
303 0 : m_pMF_ANSATZ->SetValue( nEscAbs );
304 : }
305 : }
306 0 : else if( nEscDir == SDRCAPT_ESCVERTICAL )
307 : {
308 0 : if( bEscRel )
309 : {
310 0 : if( nEscRel < 3333 )
311 0 : nAnsatzRelPos = AT_OBEN;
312 0 : if( nEscRel > 6666 )
313 0 : nAnsatzRelPos = AT_UNTEN;
314 0 : nAnsatzTypePos = AZ_VERTIKAL;
315 : }
316 : else
317 : {
318 0 : nAnsatzTypePos = AZ_VON_LINKS;
319 0 : m_pMF_ANSATZ->SetValue( nEscAbs );
320 : }
321 : }
322 0 : else if( nEscDir == SDRCAPT_ESCBESTFIT )
323 : {
324 0 : nAnsatzTypePos = AZ_OPTIMAL;
325 : }
326 :
327 0 : m_pCB_LAENGE->Check( bFitLineLen );
328 0 : m_pMF_LAENGE->SetValue( nLineLen );
329 :
330 0 : m_pLB_ANSATZ->SelectEntryPos( nAnsatzTypePos );
331 :
332 0 : SetupAnsatz_Impl( nAnsatzTypePos );
333 0 : m_pCT_CAPTTYPE->SelectItem( nCaptionType+1 ); // Enum starts at 0!
334 0 : SetupType_Impl( nCaptionType+1 );
335 0 : }
336 :
337 :
338 :
339 0 : SfxTabPage* SvxCaptionTabPage::Create( vcl::Window* pWindow,
340 : const SfxItemSet* rOutAttrs )
341 : {
342 0 : return( new SvxCaptionTabPage( pWindow, *rOutAttrs ) );
343 : }
344 :
345 :
346 :
347 0 : const sal_uInt16* SvxCaptionTabPage::GetRanges()
348 : {
349 0 : return( pCaptionRanges );
350 : }
351 :
352 :
353 :
354 0 : void SvxCaptionTabPage::SetupAnsatz_Impl( sal_uInt16 nType )
355 : {
356 0 : switch( nType )
357 : {
358 : case AZ_OPTIMAL:
359 0 : m_pMF_ANSATZ->Show();
360 0 : m_pFT_UM->Show();
361 0 : m_pFT_ANSATZ_REL->Hide();
362 0 : m_pLB_ANSATZ_REL->Hide();
363 0 : nEscDir = SDRCAPT_ESCBESTFIT;
364 0 : break;
365 :
366 : case AZ_VON_OBEN:
367 0 : m_pMF_ANSATZ->Show();
368 0 : m_pFT_UM->Show();
369 0 : m_pFT_ANSATZ_REL->Hide();
370 0 : m_pLB_ANSATZ_REL->Hide();
371 0 : nEscDir = SDRCAPT_ESCHORIZONTAL;
372 0 : break;
373 :
374 : case AZ_VON_LINKS:
375 0 : m_pMF_ANSATZ->Show();
376 0 : m_pFT_UM->Show();
377 0 : m_pFT_ANSATZ_REL->Hide();
378 0 : m_pLB_ANSATZ_REL->Hide();
379 0 : nEscDir = SDRCAPT_ESCVERTICAL;
380 0 : break;
381 :
382 : case AZ_HORIZONTAL:
383 0 : m_pLB_ANSATZ_REL->Clear();
384 0 : for (size_t i = 0 ; i < m_aStrHorzList.size(); ++i)
385 0 : m_pLB_ANSATZ_REL->InsertEntry(m_aStrHorzList[i]);
386 0 : m_pLB_ANSATZ_REL->SelectEntryPos(nAnsatzRelPos);
387 :
388 0 : m_pMF_ANSATZ->Hide();
389 0 : m_pFT_UM->Hide();
390 0 : m_pFT_ANSATZ_REL->Show();
391 0 : m_pLB_ANSATZ_REL->Show();
392 0 : nEscDir = SDRCAPT_ESCHORIZONTAL;
393 0 : break;
394 :
395 : case AZ_VERTIKAL:
396 0 : m_pLB_ANSATZ_REL->Clear();
397 0 : for (size_t i = 0 ; i < m_aStrVertList.size(); ++i)
398 0 : m_pLB_ANSATZ_REL->InsertEntry(m_aStrVertList[i]);
399 0 : m_pLB_ANSATZ_REL->SelectEntryPos(nAnsatzRelPos);
400 :
401 0 : m_pMF_ANSATZ->Hide();
402 0 : m_pFT_UM->Hide();
403 0 : m_pFT_ANSATZ_REL->Show();
404 0 : m_pLB_ANSATZ_REL->Show();
405 0 : nEscDir = SDRCAPT_ESCVERTICAL;
406 0 : break;
407 : }
408 0 : }
409 :
410 :
411 :
412 0 : IMPL_LINK_INLINE_START( SvxCaptionTabPage, AnsatzSelectHdl_Impl, ListBox *, pListBox )
413 : {
414 0 : if (pListBox == m_pLB_ANSATZ)
415 : {
416 0 : SetupAnsatz_Impl( m_pLB_ANSATZ->GetSelectEntryPos() );
417 : }
418 0 : return 0;
419 : }
420 0 : IMPL_LINK_INLINE_END( SvxCaptionTabPage, AnsatzSelectHdl_Impl, ListBox *, pListBox )
421 :
422 :
423 :
424 0 : IMPL_LINK_INLINE_START( SvxCaptionTabPage, AnsatzRelSelectHdl_Impl, ListBox *, pListBox )
425 : {
426 0 : if (pListBox == m_pLB_ANSATZ_REL)
427 : {
428 0 : nAnsatzRelPos = m_pLB_ANSATZ_REL->GetSelectEntryPos();
429 : }
430 0 : return 0;
431 : }
432 0 : IMPL_LINK_INLINE_END( SvxCaptionTabPage, AnsatzRelSelectHdl_Impl, ListBox *, pListBox )
433 :
434 :
435 :
436 0 : IMPL_LINK( SvxCaptionTabPage, LineOptHdl_Impl, Button *, pButton )
437 : {
438 0 : if (pButton == m_pCB_LAENGE)
439 : {
440 0 : if( m_pCB_LAENGE->IsChecked() || ! m_pCB_LAENGE->IsEnabled() )
441 : {
442 0 : m_pFT_LAENGE->Disable();
443 0 : m_pMF_LAENGE->Disable();
444 : }
445 : else
446 : {
447 0 : m_pFT_LAENGE->Enable();
448 0 : m_pMF_LAENGE->Enable();
449 : }
450 : }
451 0 : return 0;
452 : }
453 :
454 :
455 :
456 0 : IMPL_LINK_NOARG_INLINE_START(SvxCaptionTabPage, SelectCaptTypeHdl_Impl)
457 : {
458 0 : SetupType_Impl( m_pCT_CAPTTYPE->GetSelectItemId() );
459 0 : return 0;
460 : }
461 0 : IMPL_LINK_NOARG_INLINE_END(SvxCaptionTabPage, SelectCaptTypeHdl_Impl)
462 :
463 :
464 :
465 0 : void SvxCaptionTabPage::SetupType_Impl( sal_uInt16 nType )
466 : {
467 0 : switch( nType-1 )
468 : {
469 : case SDRCAPT_TYPE1:
470 0 : m_pFT_LAENGE->Disable();
471 0 : m_pCB_LAENGE->Disable();
472 0 : LineOptHdl_Impl( m_pCB_LAENGE );
473 0 : break;
474 :
475 : case SDRCAPT_TYPE2:
476 0 : m_pFT_LAENGE->Disable();
477 0 : m_pCB_LAENGE->Disable();
478 0 : LineOptHdl_Impl( m_pCB_LAENGE );
479 0 : break;
480 :
481 : case SDRCAPT_TYPE3:
482 0 : m_pFT_LAENGE->Enable();
483 0 : m_pCB_LAENGE->Enable();
484 0 : LineOptHdl_Impl( m_pCB_LAENGE );
485 0 : break;
486 :
487 : case SDRCAPT_TYPE4:
488 0 : m_pFT_LAENGE->Enable();
489 0 : m_pCB_LAENGE->Enable();
490 0 : LineOptHdl_Impl( m_pCB_LAENGE );
491 0 : break;
492 : }
493 0 : }
494 :
495 :
496 :
497 0 : void SvxCaptionTabPage::DataChanged( const DataChangedEvent& rDCEvt )
498 : {
499 0 : SfxTabPage::DataChanged( rDCEvt );
500 :
501 0 : if ( (rDCEvt.GetType() == DATACHANGED_SETTINGS) && (rDCEvt.GetFlags() & SETTINGS_STYLE) )
502 0 : FillValueSet();
503 0 : }
504 :
505 :
506 :
507 0 : void SvxCaptionTabPage::FillValueSet()
508 : {
509 0 : m_pCT_CAPTTYPE->SetItemImage(BMP_CAPTTYPE_1, m_aBmpCapTypes[0] );
510 0 : m_pCT_CAPTTYPE->SetItemImage(BMP_CAPTTYPE_2, m_aBmpCapTypes[1] );
511 0 : m_pCT_CAPTTYPE->SetItemImage(BMP_CAPTTYPE_3, m_aBmpCapTypes[2] );
512 0 : }
513 :
514 :
515 :
516 :
517 0 : SvxCaptionTabDialog::SvxCaptionTabDialog(vcl::Window* pParent, const SdrView* pSdrView,
518 : sal_uInt16 nAnchorTypes)
519 : : SfxTabDialog( pParent, "CalloutDialog", "cui/ui/calloutdialog.ui")
520 : , pView(pSdrView)
521 : , nAnchorCtrls(nAnchorTypes)
522 : , m_nSwPosSizePageId(0)
523 : , m_nPositionSizePageId(0)
524 0 : , m_nCaptionPageId(0)
525 : {
526 : assert(pView); //Keine gueltige View Uebergeben!
527 :
528 : //different positioning page in Writer
529 0 : if (nAnchorCtrls & 0x00ff)
530 : {
531 : m_nSwPosSizePageId = AddTabPage("RID_SVXPAGE_SWPOSSIZE", SvxSwPosSizeTabPage::Create,
532 0 : SvxSwPosSizeTabPage::GetRanges );
533 0 : RemoveTabPage("RID_SVXPAGE_POSITION_SIZE");
534 : }
535 : else
536 : {
537 : m_nPositionSizePageId = AddTabPage("RID_SVXPAGE_POSITION_SIZE", SvxPositionSizeTabPage::Create,
538 0 : SvxPositionSizeTabPage::GetRanges );
539 0 : RemoveTabPage("RID_SVXPAGE_SWPOSSIZE");
540 : }
541 : m_nCaptionPageId = AddTabPage("RID_SVXPAGE_CAPTION", SvxCaptionTabPage::Create,
542 0 : SvxCaptionTabPage::GetRanges );
543 0 : }
544 :
545 0 : void SvxCaptionTabDialog::PageCreated( sal_uInt16 nId, SfxTabPage &rPage )
546 : {
547 0 : if (nId == m_nPositionSizePageId)
548 : {
549 0 : static_cast<SvxPositionSizeTabPage&>( rPage ).SetView( pView );
550 0 : static_cast<SvxPositionSizeTabPage&>( rPage ).Construct();
551 0 : if( nAnchorCtrls & SVX_OBJ_NORESIZE )
552 0 : static_cast<SvxPositionSizeTabPage&>( rPage ).DisableResize();
553 :
554 0 : if( nAnchorCtrls & SVX_OBJ_NOPROTECT )
555 0 : static_cast<SvxPositionSizeTabPage&>( rPage ).DisableProtect();
556 : }
557 0 : else if (nId == m_nSwPosSizePageId)
558 : {
559 0 : SvxSwPosSizeTabPage& rSwPage = static_cast<SvxSwPosSizeTabPage&>(rPage);
560 0 : rSwPage.EnableAnchorTypes(nAnchorCtrls);
561 0 : rSwPage.SetValidateFramePosLink( aValidateLink );
562 : }
563 0 : else if (nId == m_nCaptionPageId)
564 : {
565 0 : static_cast<SvxCaptionTabPage&>( rPage ).SetView( pView );
566 0 : static_cast<SvxCaptionTabPage&>( rPage ).Construct();
567 : }
568 0 : }
569 :
570 0 : void SvxCaptionTabDialog::SetValidateFramePosLink( const Link& rLink )
571 : {
572 0 : aValidateLink = rLink;
573 0 : }
574 :
575 :
576 : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|