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 : const sal_uInt16 SvxCaptionTabPage::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 : SvxCaptionTabPage::~SvxCaptionTabPage()
142 : {
143 0 : disposeOnce();
144 0 : }
145 :
146 0 : void SvxCaptionTabPage::dispose()
147 : {
148 0 : m_pCT_CAPTTYPE.clear();
149 0 : m_pMF_ABSTAND.clear();
150 0 : m_pLB_ANSATZ.clear();
151 0 : m_pFT_UM.clear();
152 0 : m_pMF_ANSATZ.clear();
153 0 : m_pFT_ANSATZ_REL.clear();
154 0 : m_pLB_ANSATZ_REL.clear();
155 0 : m_pFT_LAENGE.clear();
156 0 : m_pMF_LAENGE.clear();
157 0 : m_pCB_LAENGE.clear();
158 0 : SfxTabPage::dispose();
159 0 : }
160 :
161 0 : void SvxCaptionTabPage::Construct()
162 : {
163 : // set rectangle and working area
164 : DBG_ASSERT( pView, "Keine gueltige View Uebergeben!" );
165 0 : }
166 :
167 :
168 :
169 0 : bool SvxCaptionTabPage::FillItemSet( SfxItemSet* _rOutAttrs)
170 : {
171 0 : SfxItemPool* pPool = _rOutAttrs->GetPool();
172 : DBG_ASSERT( pPool, "Wo ist der Pool" );
173 :
174 : SfxMapUnit eUnit;
175 :
176 0 : nCaptionType = m_pCT_CAPTTYPE->GetSelectItemId()-1;
177 :
178 0 : _rOutAttrs->Put( SdrCaptionTypeItem( (SdrCaptionType) nCaptionType ) );
179 :
180 0 : if( m_pMF_ABSTAND->IsValueModified() )
181 : {
182 0 : eUnit = pPool->GetMetric( GetWhich( SDRATTR_CAPTIONGAP ) );
183 0 : _rOutAttrs->Put( SdrCaptionGapItem( GetCoreValue(*m_pMF_ABSTAND, eUnit ) ) );
184 : }
185 :
186 : // special treatment!!! XXX
187 0 : if( nCaptionType==SDRCAPT_TYPE1 )
188 : {
189 0 : switch( nEscDir )
190 : {
191 0 : case SDRCAPT_ESCHORIZONTAL: nEscDir=SDRCAPT_ESCVERTICAL;break;
192 0 : case SDRCAPT_ESCVERTICAL: nEscDir=SDRCAPT_ESCHORIZONTAL;break;
193 : }
194 : }
195 :
196 0 : _rOutAttrs->Put( SdrCaptionEscDirItem( (SdrCaptionEscDir)nEscDir ) );
197 :
198 0 : bEscRel = m_pLB_ANSATZ_REL->IsVisible();
199 0 : _rOutAttrs->Put( SdrCaptionEscIsRelItem( bEscRel ) );
200 :
201 0 : if( bEscRel )
202 : {
203 0 : long nVal = 0;
204 :
205 0 : switch( m_pLB_ANSATZ_REL->GetSelectEntryPos() )
206 : {
207 0 : case AT_OBEN: nVal=0;break;
208 0 : case AT_MITTE: nVal=5000;break;
209 0 : case AT_UNTEN: nVal=10000;break;
210 : }
211 0 : _rOutAttrs->Put( SdrCaptionEscRelItem( nVal ) );
212 : }
213 : else
214 : {
215 0 : if( m_pMF_ANSATZ->IsValueModified() )
216 : {
217 0 : eUnit = pPool->GetMetric( GetWhich( SDRATTR_CAPTIONESCABS ) );
218 0 : _rOutAttrs->Put( SdrCaptionEscAbsItem( GetCoreValue(*m_pMF_ANSATZ, eUnit ) ) );
219 : }
220 : }
221 :
222 0 : bFitLineLen = m_pCB_LAENGE->IsChecked();
223 0 : _rOutAttrs->Put( SdrCaptionFitLineLenItem( bFitLineLen ) );
224 :
225 0 : if( ! bFitLineLen )
226 : {
227 0 : if( m_pMF_LAENGE->IsValueModified() )
228 : {
229 0 : eUnit = pPool->GetMetric( GetWhich( SDRATTR_CAPTIONLINELEN ) );
230 0 : _rOutAttrs->Put( SdrCaptionLineLenItem( GetCoreValue(*m_pMF_LAENGE, eUnit ) ) );
231 : }
232 : }
233 :
234 : //NYI-------------the angles have to be added here!!! XXX----------------------
235 :
236 0 : return true;
237 : }
238 :
239 :
240 :
241 0 : void SvxCaptionTabPage::Reset( const SfxItemSet* )
242 : {
243 :
244 : //------------set metric-----------------------------
245 :
246 0 : FieldUnit eFUnit = GetModuleFieldUnit( rOutAttrs );
247 :
248 0 : switch ( eFUnit )
249 : {
250 : case FUNIT_CM:
251 : case FUNIT_M:
252 : case FUNIT_KM:
253 0 : eFUnit = FUNIT_MM;
254 0 : break;
255 : default: ;//prevent warning
256 : }
257 0 : SetFieldUnit( *m_pMF_ABSTAND, eFUnit );
258 0 : SetFieldUnit( *m_pMF_ANSATZ, eFUnit );
259 0 : SetFieldUnit( *m_pMF_LAENGE, eFUnit );
260 :
261 0 : SfxItemPool* pPool = rOutAttrs.GetPool();
262 : DBG_ASSERT( pPool, "Wo ist der Pool" );
263 :
264 : sal_uInt16 nWhich;
265 : SfxMapUnit eUnit;
266 :
267 0 : nWhich = GetWhich( SDRATTR_CAPTIONESCABS );
268 0 : eUnit = pPool->GetMetric( nWhich );
269 0 : nEscAbs = static_cast<const SdrCaptionEscAbsItem&>( rOutAttrs.Get( nWhich ) ).GetValue();
270 0 : SetMetricValue( *m_pMF_ANSATZ, nEscAbs, eUnit );
271 0 : nEscAbs = static_cast<long>(m_pMF_ANSATZ->GetValue());
272 :
273 0 : nWhich = GetWhich( SDRATTR_CAPTIONESCREL );
274 0 : nEscRel = (long)static_cast<const SdrCaptionEscRelItem&>( rOutAttrs.Get( nWhich ) ).GetValue();
275 :
276 : //------- line length ----------
277 0 : nWhich = GetWhich( SDRATTR_CAPTIONLINELEN );
278 0 : eUnit = pPool->GetMetric( nWhich );
279 0 : nLineLen = static_cast<const SdrCaptionLineLenItem&>( rOutAttrs.Get( nWhich ) ).GetValue();
280 0 : SetMetricValue( *m_pMF_LAENGE, nLineLen, eUnit );
281 0 : nLineLen = static_cast<long>(m_pMF_LAENGE->GetValue());
282 :
283 : //------- distance to box ----------
284 0 : nWhich = GetWhich( SDRATTR_CAPTIONGAP );
285 0 : eUnit = pPool->GetMetric( nWhich );
286 0 : nGap = static_cast<const SdrCaptionGapItem&>( rOutAttrs.Get( nWhich ) ).GetValue();
287 0 : SetMetricValue( *m_pMF_ABSTAND, nGap, eUnit );
288 0 : nGap = static_cast<long>(m_pMF_ABSTAND->GetValue());
289 :
290 0 : nCaptionType = (short)static_cast<const SdrCaptionTypeItem&>( rOutAttrs.Get( GetWhich( SDRATTR_CAPTIONTYPE ) ) ).GetValue();
291 0 : bFitLineLen = static_cast<const SfxBoolItem&>( rOutAttrs.Get( GetWhich( SDRATTR_CAPTIONFITLINELEN ) ) ).GetValue();
292 0 : nEscDir = (short)static_cast<const SdrCaptionEscDirItem&>( rOutAttrs.Get( GetWhich( SDRATTR_CAPTIONESCDIR ) ) ).GetValue();
293 0 : bEscRel = static_cast<const SfxBoolItem&>( rOutAttrs.Get( GetWhich( SDRATTR_CAPTIONESCISREL ) ) ).GetValue();
294 :
295 : // special treatment!!! XXX
296 0 : if( nCaptionType==SDRCAPT_TYPE1 )
297 : {
298 0 : switch( nEscDir )
299 : {
300 0 : case SDRCAPT_ESCHORIZONTAL: nEscDir=SDRCAPT_ESCVERTICAL;break;
301 0 : case SDRCAPT_ESCVERTICAL: nEscDir=SDRCAPT_ESCHORIZONTAL;break;
302 : }
303 : }
304 :
305 0 : nAnsatzRelPos=AT_MITTE;
306 0 : nAnsatzTypePos=AZ_OPTIMAL;
307 :
308 0 : m_pMF_ABSTAND->SetValue( nGap );
309 :
310 0 : if( nEscDir == SDRCAPT_ESCHORIZONTAL )
311 : {
312 0 : if( bEscRel )
313 : {
314 0 : if( nEscRel < 3333 )
315 0 : nAnsatzRelPos = AT_OBEN;
316 0 : if( nEscRel > 6666 )
317 0 : nAnsatzRelPos = AT_UNTEN;
318 0 : nAnsatzTypePos = AZ_HORIZONTAL;
319 : }
320 : else
321 : {
322 0 : nAnsatzTypePos = AZ_VON_OBEN;
323 0 : m_pMF_ANSATZ->SetValue( nEscAbs );
324 : }
325 : }
326 0 : else if( nEscDir == SDRCAPT_ESCVERTICAL )
327 : {
328 0 : if( bEscRel )
329 : {
330 0 : if( nEscRel < 3333 )
331 0 : nAnsatzRelPos = AT_OBEN;
332 0 : if( nEscRel > 6666 )
333 0 : nAnsatzRelPos = AT_UNTEN;
334 0 : nAnsatzTypePos = AZ_VERTIKAL;
335 : }
336 : else
337 : {
338 0 : nAnsatzTypePos = AZ_VON_LINKS;
339 0 : m_pMF_ANSATZ->SetValue( nEscAbs );
340 : }
341 : }
342 0 : else if( nEscDir == SDRCAPT_ESCBESTFIT )
343 : {
344 0 : nAnsatzTypePos = AZ_OPTIMAL;
345 : }
346 :
347 0 : m_pCB_LAENGE->Check( bFitLineLen );
348 0 : m_pMF_LAENGE->SetValue( nLineLen );
349 :
350 0 : m_pLB_ANSATZ->SelectEntryPos( nAnsatzTypePos );
351 :
352 0 : SetupAnsatz_Impl( nAnsatzTypePos );
353 0 : m_pCT_CAPTTYPE->SelectItem( nCaptionType+1 ); // Enum starts at 0!
354 0 : SetupType_Impl( nCaptionType+1 );
355 0 : }
356 :
357 :
358 :
359 0 : VclPtr<SfxTabPage> SvxCaptionTabPage::Create( vcl::Window* pWindow,
360 : const SfxItemSet* rOutAttrs )
361 : {
362 0 : return VclPtr<SvxCaptionTabPage>::Create( pWindow, *rOutAttrs );
363 : }
364 :
365 :
366 :
367 0 : void SvxCaptionTabPage::SetupAnsatz_Impl( sal_uInt16 nType )
368 : {
369 0 : switch( nType )
370 : {
371 : case AZ_OPTIMAL:
372 0 : m_pMF_ANSATZ->Show();
373 0 : m_pFT_UM->Show();
374 0 : m_pFT_ANSATZ_REL->Hide();
375 0 : m_pLB_ANSATZ_REL->Hide();
376 0 : nEscDir = SDRCAPT_ESCBESTFIT;
377 0 : break;
378 :
379 : case AZ_VON_OBEN:
380 0 : m_pMF_ANSATZ->Show();
381 0 : m_pFT_UM->Show();
382 0 : m_pFT_ANSATZ_REL->Hide();
383 0 : m_pLB_ANSATZ_REL->Hide();
384 0 : nEscDir = SDRCAPT_ESCHORIZONTAL;
385 0 : break;
386 :
387 : case AZ_VON_LINKS:
388 0 : m_pMF_ANSATZ->Show();
389 0 : m_pFT_UM->Show();
390 0 : m_pFT_ANSATZ_REL->Hide();
391 0 : m_pLB_ANSATZ_REL->Hide();
392 0 : nEscDir = SDRCAPT_ESCVERTICAL;
393 0 : break;
394 :
395 : case AZ_HORIZONTAL:
396 0 : m_pLB_ANSATZ_REL->Clear();
397 0 : for (size_t i = 0 ; i < m_aStrHorzList.size(); ++i)
398 0 : m_pLB_ANSATZ_REL->InsertEntry(m_aStrHorzList[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_ESCHORIZONTAL;
406 0 : break;
407 :
408 : case AZ_VERTIKAL:
409 0 : m_pLB_ANSATZ_REL->Clear();
410 0 : for (size_t i = 0 ; i < m_aStrVertList.size(); ++i)
411 0 : m_pLB_ANSATZ_REL->InsertEntry(m_aStrVertList[i]);
412 0 : m_pLB_ANSATZ_REL->SelectEntryPos(nAnsatzRelPos);
413 :
414 0 : m_pMF_ANSATZ->Hide();
415 0 : m_pFT_UM->Hide();
416 0 : m_pFT_ANSATZ_REL->Show();
417 0 : m_pLB_ANSATZ_REL->Show();
418 0 : nEscDir = SDRCAPT_ESCVERTICAL;
419 0 : break;
420 : }
421 0 : }
422 :
423 :
424 :
425 0 : IMPL_LINK( SvxCaptionTabPage, AnsatzSelectHdl_Impl, ListBox *, pListBox )
426 : {
427 0 : if (pListBox == m_pLB_ANSATZ)
428 : {
429 0 : SetupAnsatz_Impl( m_pLB_ANSATZ->GetSelectEntryPos() );
430 : }
431 0 : return 0;
432 : }
433 :
434 0 : IMPL_LINK( SvxCaptionTabPage, AnsatzRelSelectHdl_Impl, ListBox *, pListBox )
435 : {
436 0 : if (pListBox == m_pLB_ANSATZ_REL)
437 : {
438 0 : nAnsatzRelPos = m_pLB_ANSATZ_REL->GetSelectEntryPos();
439 : }
440 0 : return 0;
441 : }
442 :
443 0 : IMPL_LINK( SvxCaptionTabPage, LineOptHdl_Impl, Button *, pButton )
444 : {
445 0 : if (pButton == m_pCB_LAENGE)
446 : {
447 0 : if( m_pCB_LAENGE->IsChecked() || ! m_pCB_LAENGE->IsEnabled() )
448 : {
449 0 : m_pFT_LAENGE->Disable();
450 0 : m_pMF_LAENGE->Disable();
451 : }
452 : else
453 : {
454 0 : m_pFT_LAENGE->Enable();
455 0 : m_pMF_LAENGE->Enable();
456 : }
457 : }
458 0 : return 0;
459 : }
460 :
461 :
462 :
463 0 : IMPL_LINK_NOARG(SvxCaptionTabPage, SelectCaptTypeHdl_Impl)
464 : {
465 0 : SetupType_Impl( m_pCT_CAPTTYPE->GetSelectItemId() );
466 0 : return 0;
467 : }
468 :
469 0 : void SvxCaptionTabPage::SetupType_Impl( sal_uInt16 nType )
470 : {
471 0 : switch( nType-1 )
472 : {
473 : case SDRCAPT_TYPE1:
474 0 : m_pFT_LAENGE->Disable();
475 0 : m_pCB_LAENGE->Disable();
476 0 : LineOptHdl_Impl( m_pCB_LAENGE );
477 0 : break;
478 :
479 : case SDRCAPT_TYPE2:
480 0 : m_pFT_LAENGE->Disable();
481 0 : m_pCB_LAENGE->Disable();
482 0 : LineOptHdl_Impl( m_pCB_LAENGE );
483 0 : break;
484 :
485 : case SDRCAPT_TYPE3:
486 0 : m_pFT_LAENGE->Enable();
487 0 : m_pCB_LAENGE->Enable();
488 0 : LineOptHdl_Impl( m_pCB_LAENGE );
489 0 : break;
490 :
491 : case SDRCAPT_TYPE4:
492 0 : m_pFT_LAENGE->Enable();
493 0 : m_pCB_LAENGE->Enable();
494 0 : LineOptHdl_Impl( m_pCB_LAENGE );
495 0 : break;
496 : }
497 0 : }
498 :
499 :
500 :
501 0 : void SvxCaptionTabPage::DataChanged( const DataChangedEvent& rDCEvt )
502 : {
503 0 : SfxTabPage::DataChanged( rDCEvt );
504 :
505 0 : if ( (rDCEvt.GetType() == DataChangedEventType::SETTINGS) && (rDCEvt.GetFlags() & AllSettingsFlags::STYLE) )
506 0 : FillValueSet();
507 0 : }
508 :
509 :
510 :
511 0 : void SvxCaptionTabPage::FillValueSet()
512 : {
513 0 : m_pCT_CAPTTYPE->SetItemImage(BMP_CAPTTYPE_1, m_aBmpCapTypes[0] );
514 0 : m_pCT_CAPTTYPE->SetItemImage(BMP_CAPTTYPE_2, m_aBmpCapTypes[1] );
515 0 : m_pCT_CAPTTYPE->SetItemImage(BMP_CAPTTYPE_3, m_aBmpCapTypes[2] );
516 0 : }
517 :
518 :
519 :
520 :
521 0 : SvxCaptionTabDialog::SvxCaptionTabDialog(vcl::Window* pParent, const SdrView* pSdrView,
522 : sal_uInt16 nAnchorTypes)
523 : : SfxTabDialog( pParent, "CalloutDialog", "cui/ui/calloutdialog.ui")
524 : , pView(pSdrView)
525 : , nAnchorCtrls(nAnchorTypes)
526 : , m_nSwPosSizePageId(0)
527 : , m_nPositionSizePageId(0)
528 0 : , m_nCaptionPageId(0)
529 : {
530 : assert(pView); //Keine gueltige View Uebergeben!
531 :
532 : //different positioning page in Writer
533 0 : if (nAnchorCtrls & 0x00ff)
534 : {
535 : m_nSwPosSizePageId = AddTabPage("RID_SVXPAGE_SWPOSSIZE", SvxSwPosSizeTabPage::Create,
536 0 : SvxSwPosSizeTabPage::GetRanges );
537 0 : RemoveTabPage("RID_SVXPAGE_POSITION_SIZE");
538 : }
539 : else
540 : {
541 : m_nPositionSizePageId = AddTabPage("RID_SVXPAGE_POSITION_SIZE", SvxPositionSizeTabPage::Create,
542 0 : SvxPositionSizeTabPage::GetRanges );
543 0 : RemoveTabPage("RID_SVXPAGE_SWPOSSIZE");
544 : }
545 : m_nCaptionPageId = AddTabPage("RID_SVXPAGE_CAPTION", SvxCaptionTabPage::Create,
546 0 : SvxCaptionTabPage::GetRanges );
547 0 : }
548 :
549 0 : void SvxCaptionTabDialog::PageCreated( sal_uInt16 nId, SfxTabPage &rPage )
550 : {
551 0 : if (nId == m_nPositionSizePageId)
552 : {
553 0 : static_cast<SvxPositionSizeTabPage&>( rPage ).SetView( pView );
554 0 : static_cast<SvxPositionSizeTabPage&>( rPage ).Construct();
555 0 : if( nAnchorCtrls & SVX_OBJ_NORESIZE )
556 0 : static_cast<SvxPositionSizeTabPage&>( rPage ).DisableResize();
557 :
558 0 : if( nAnchorCtrls & SVX_OBJ_NOPROTECT )
559 0 : static_cast<SvxPositionSizeTabPage&>( rPage ).DisableProtect();
560 : }
561 0 : else if (nId == m_nSwPosSizePageId)
562 : {
563 0 : SvxSwPosSizeTabPage& rSwPage = static_cast<SvxSwPosSizeTabPage&>(rPage);
564 0 : rSwPage.EnableAnchorTypes(nAnchorCtrls);
565 0 : rSwPage.SetValidateFramePosLink( aValidateLink );
566 : }
567 0 : else if (nId == m_nCaptionPageId)
568 : {
569 0 : static_cast<SvxCaptionTabPage&>( rPage ).SetView( pView );
570 0 : static_cast<SvxCaptionTabPage&>( rPage ).Construct();
571 : }
572 0 : }
573 :
574 0 : void SvxCaptionTabDialog::SetValidateFramePosLink( const Link<>& rLink )
575 : {
576 0 : aValidateLink = rLink;
577 0 : }
578 :
579 :
580 : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|