1 /**************************************************************
2 *
3 * Licensed to the Apache Software Foundation (ASF) under one
4 * or more contributor license agreements. See the NOTICE file
5 * distributed with this work for additional information
6 * regarding copyright ownership. The ASF licenses this file
7 * to you under the Apache License, Version 2.0 (the
8 * "License"); you may not use this file except in compliance
9 * with the License. You may obtain a copy of the License at
10 *
11 * http://www.apache.org/licenses/LICENSE-2.0
12 *
13 * Unless required by applicable law or agreed to in writing,
14 * software distributed under the License is distributed on an
15 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16 * KIND, either express or implied. See the License for the
17 * specific language governing permissions and limitations
18 * under the License.
19 *
20 *************************************************************/
21
22
23
24 // MARKER(update_precomp.py): autogen include statement, do not remove
25 #include "precompiled_svtools.hxx"
26
27 #define _SVT_WIZDLG_CXX
28 #include <tools/debug.hxx>
29 #ifndef _VCL_FIXED_HXX
30 #include <vcl/fixed.hxx>
31 #endif
32 #ifndef _VCL_BUTTON_HXX
33 #include <vcl/button.hxx>
34 #endif
35 #ifndef _VCL_TABPAGE_HXX
36 #include <vcl/tabpage.hxx>
37 #endif
38 #include <svtools/wizdlg.hxx>
39
40 // =======================================================================
41
42 #define WIZARDDIALOG_BUTTON_OFFSET_Y 6
43 #define WIZARDDIALOG_BUTTON_DLGOFFSET_X 6
44 #define WIZARDDIALOG_VIEW_DLGOFFSET_X 6
45 #define WIZARDDIALOG_VIEW_DLGOFFSET_Y 6
46
47 // =======================================================================
48
49 struct ImplWizPageData
50 {
51 ImplWizPageData* mpNext;
52 TabPage* mpPage;
53 };
54
55 // -----------------------------------------------------------------------
56
57 struct ImplWizButtonData
58 {
59 ImplWizButtonData* mpNext;
60 Button* mpButton;
61 long mnOffset;
62 };
63
64 // =======================================================================
65
ImplInitData()66 void WizardDialog::ImplInitData()
67 {
68 mpFirstPage = NULL;
69 mpFirstBtn = NULL;
70 mpFixedLine = NULL;
71 mpCurTabPage = NULL;
72 mpPrevBtn = NULL;
73 mpNextBtn = NULL;
74 mpViewWindow = NULL;
75 mnCurLevel = 0;
76 meViewAlign = WINDOWALIGN_LEFT;
77 mbEmptyViewMargin = false;
78 mnLeftAlignCount = 0;
79 }
80
81 // -----------------------------------------------------------------------
SetLeftAlignedButtonCount(sal_Int16 _nCount)82 void WizardDialog::SetLeftAlignedButtonCount( sal_Int16 _nCount )
83 {
84 mnLeftAlignCount = _nCount;
85 }
86
87 // -----------------------------------------------------------------------
88
SetEmptyViewMargin()89 void WizardDialog::SetEmptyViewMargin()
90 {
91 mbEmptyViewMargin = true;
92 }
93
94 // -----------------------------------------------------------------------
95
ImplCalcSize(Size & rSize)96 void WizardDialog::ImplCalcSize( Size& rSize )
97 {
98 // ButtonBar-Hoehe berechnen
99 long nMaxHeight = 0;
100 ImplWizButtonData* pBtnData = mpFirstBtn;
101 while ( pBtnData )
102 {
103 long nBtnHeight = pBtnData->mpButton->GetSizePixel().Height();
104 if ( nBtnHeight > nMaxHeight )
105 nMaxHeight = nBtnHeight;
106 pBtnData = pBtnData->mpNext;
107 }
108 if ( nMaxHeight )
109 nMaxHeight += WIZARDDIALOG_BUTTON_OFFSET_Y*2;
110 if ( mpFixedLine && mpFixedLine->IsVisible() )
111 nMaxHeight += mpFixedLine->GetSizePixel().Height();
112 rSize.Height() += nMaxHeight;
113
114 // View-Window-Groesse dazurechnen
115 if ( mpViewWindow && mpViewWindow->IsVisible() )
116 {
117 Size aViewSize = mpViewWindow->GetSizePixel();
118 if ( meViewAlign == WINDOWALIGN_TOP )
119 rSize.Height() += aViewSize.Height();
120 else if ( meViewAlign == WINDOWALIGN_LEFT )
121 rSize.Width() += aViewSize.Width();
122 else if ( meViewAlign == WINDOWALIGN_BOTTOM )
123 rSize.Height() += aViewSize.Height();
124 else if ( meViewAlign == WINDOWALIGN_RIGHT )
125 rSize.Width() += aViewSize.Width();
126 }
127 }
128
129 // -----------------------------------------------------------------------
130
ImplPosCtrls()131 void WizardDialog::ImplPosCtrls()
132 {
133 Size aDlgSize = GetOutputSizePixel();
134 long nBtnWidth = 0;
135 long nMaxHeight = 0;
136 long nOffY = aDlgSize.Height();
137
138 ImplWizButtonData* pBtnData = mpFirstBtn;
139 int j = 0;
140 while ( pBtnData )
141 {
142 if (j >= mnLeftAlignCount)
143 {
144 Size aBtnSize = pBtnData->mpButton->GetSizePixel();
145 long nBtnHeight = aBtnSize.Height();
146 if ( nBtnHeight > nMaxHeight )
147 nMaxHeight = nBtnHeight;
148 nBtnWidth += aBtnSize.Width();
149 nBtnWidth += pBtnData->mnOffset;
150 }
151 pBtnData = pBtnData->mpNext;
152 j++;
153 }
154
155 if ( nMaxHeight )
156 {
157 long nOffX = aDlgSize.Width()-nBtnWidth-WIZARDDIALOG_BUTTON_DLGOFFSET_X;
158 long nOffLeftAlignX = LogicalCoordinateToPixel(6);
159 nOffY -= WIZARDDIALOG_BUTTON_OFFSET_Y+nMaxHeight;
160
161 pBtnData = mpFirstBtn;
162 int i = 0;
163 while ( pBtnData )
164 {
165 Size aBtnSize = pBtnData->mpButton->GetSizePixel();
166 if (i >= mnLeftAlignCount)
167 {
168 Point aPos( nOffX, nOffY+((nMaxHeight-aBtnSize.Height())/2) );
169 pBtnData->mpButton->SetPosPixel( aPos );
170 nOffX += aBtnSize.Width();
171 nOffX += pBtnData->mnOffset;
172 }
173 else
174 {
175 Point aPos( nOffLeftAlignX, nOffY+((nMaxHeight-aBtnSize.Height())/2) );
176 pBtnData->mpButton->SetPosPixel( aPos );
177 nOffLeftAlignX += aBtnSize.Width();
178 nOffLeftAlignX += pBtnData->mnOffset;
179 }
180
181 pBtnData = pBtnData->mpNext;
182 i++;
183 }
184
185 nOffY -= WIZARDDIALOG_BUTTON_OFFSET_Y;
186 }
187
188 if ( mpFixedLine && mpFixedLine->IsVisible() )
189 {
190 nOffY -= mpFixedLine->GetSizePixel().Height();
191 mpFixedLine->SetPosSizePixel( 0, nOffY, aDlgSize.Width(), 0,
192 WINDOW_POSSIZE_POS | WINDOW_POSSIZE_WIDTH );
193 }
194
195 if ( mpViewWindow && mpViewWindow->IsVisible() )
196 {
197 long nViewOffX = 0;
198 long nViewOffY = 0;
199 long nViewWidth = 0;
200 long nViewHeight = 0;
201 long nDlgHeight = nOffY;
202 sal_uInt16 nViewPosFlags = WINDOW_POSSIZE_POS;
203 if ( meViewAlign == WINDOWALIGN_TOP )
204 {
205 nViewOffX = WIZARDDIALOG_VIEW_DLGOFFSET_X;
206 nViewOffY = WIZARDDIALOG_VIEW_DLGOFFSET_Y;
207 nViewWidth = aDlgSize.Width()-(WIZARDDIALOG_VIEW_DLGOFFSET_X*2);
208 nViewPosFlags |= WINDOW_POSSIZE_WIDTH;
209 }
210 else if ( meViewAlign == WINDOWALIGN_LEFT )
211 {
212 if ( mbEmptyViewMargin )
213 {
214 nViewOffX = 0;
215 nViewOffY = 0;
216 nViewHeight = nDlgHeight;
217 }
218 else
219 {
220 nViewOffX = WIZARDDIALOG_VIEW_DLGOFFSET_X;
221 nViewOffY = WIZARDDIALOG_VIEW_DLGOFFSET_Y;
222 nViewHeight = nDlgHeight-(WIZARDDIALOG_VIEW_DLGOFFSET_Y*2);
223 }
224 nViewPosFlags |= WINDOW_POSSIZE_HEIGHT;
225 }
226 else if ( meViewAlign == WINDOWALIGN_BOTTOM )
227 {
228 nViewOffX = WIZARDDIALOG_VIEW_DLGOFFSET_X;
229 nViewOffY = nDlgHeight-mpViewWindow->GetSizePixel().Height()-WIZARDDIALOG_VIEW_DLGOFFSET_Y;
230 nViewWidth = aDlgSize.Width()-(WIZARDDIALOG_VIEW_DLGOFFSET_X*2);
231 nViewPosFlags |= WINDOW_POSSIZE_WIDTH;
232 }
233 else if ( meViewAlign == WINDOWALIGN_RIGHT )
234 {
235 nViewOffX = aDlgSize.Width()-mpViewWindow->GetSizePixel().Width()-WIZARDDIALOG_VIEW_DLGOFFSET_X;
236 nViewOffY = WIZARDDIALOG_VIEW_DLGOFFSET_Y;
237 nViewHeight = nDlgHeight-(WIZARDDIALOG_VIEW_DLGOFFSET_Y*2);
238 nViewPosFlags |= WINDOW_POSSIZE_HEIGHT;
239 }
240 mpViewWindow->SetPosSizePixel( nViewOffX, nViewOffY,
241 nViewWidth, nViewHeight,
242 nViewPosFlags );
243 }
244 }
245
246
LogicalCoordinateToPixel(int iCoordinate)247 long WizardDialog::LogicalCoordinateToPixel(int iCoordinate){
248 Size aLocSize = LogicToPixel(Size( iCoordinate, 0 ), MAP_APPFONT );
249 int iPixelCoordinate = aLocSize.Width();
250 return iPixelCoordinate;
251 }
252
253
254 // -----------------------------------------------------------------------
255
ImplPosTabPage()256 void WizardDialog::ImplPosTabPage()
257 {
258 if ( !mpCurTabPage )
259 return;
260
261 if ( !IsInInitShow() )
262 {
263 // #100199# - On Unix initial size is equal to screen size, on Windows
264 // it's 0,0. One cannot calculate the size unless dialog is visible.
265 if ( !IsReallyVisible() )
266 return;
267 }
268
269 // ButtonBar-Hoehe berechnen
270 long nMaxHeight = 0;
271 ImplWizButtonData* pBtnData = mpFirstBtn;
272 while ( pBtnData )
273 {
274 long nBtnHeight = pBtnData->mpButton->GetSizePixel().Height();
275 if ( nBtnHeight > nMaxHeight )
276 nMaxHeight = nBtnHeight;
277 pBtnData = pBtnData->mpNext;
278 }
279 if ( nMaxHeight )
280 nMaxHeight += WIZARDDIALOG_BUTTON_OFFSET_Y*2;
281 if ( mpFixedLine && mpFixedLine->IsVisible() )
282 nMaxHeight += mpFixedLine->GetSizePixel().Height();
283
284 // TabPage positionieren
285 Size aDlgSize = GetOutputSizePixel();
286 aDlgSize.Height() -= nMaxHeight;
287 long nOffX = 0;
288 long nOffY = 0;
289 if ( mpViewWindow && mpViewWindow->IsVisible() )
290 {
291 Size aViewSize = mpViewWindow->GetSizePixel();
292 if ( meViewAlign == WINDOWALIGN_TOP )
293 {
294 nOffY += aViewSize.Height()+WIZARDDIALOG_VIEW_DLGOFFSET_Y;
295 aDlgSize.Height() -= aViewSize.Height()+WIZARDDIALOG_VIEW_DLGOFFSET_Y;
296 }
297 else if ( meViewAlign == WINDOWALIGN_LEFT )
298 {
299 long nViewOffset = mbEmptyViewMargin ? 0 : WIZARDDIALOG_VIEW_DLGOFFSET_X;
300 nOffX += aViewSize.Width() + nViewOffset;
301 aDlgSize.Width() -= nOffX;
302 }
303 else if ( meViewAlign == WINDOWALIGN_BOTTOM )
304 aDlgSize.Height() -= aViewSize.Height()+WIZARDDIALOG_VIEW_DLGOFFSET_Y;
305 else if ( meViewAlign == WINDOWALIGN_RIGHT )
306 aDlgSize.Width() -= aViewSize.Width()+WIZARDDIALOG_VIEW_DLGOFFSET_X;
307 }
308 Point aPos( nOffX, nOffY );
309 mpCurTabPage->SetPosSizePixel( aPos, aDlgSize );
310 }
311
312 // -----------------------------------------------------------------------
313
ImplShowTabPage(TabPage * pTabPage)314 void WizardDialog::ImplShowTabPage( TabPage* pTabPage )
315 {
316 if ( mpCurTabPage == pTabPage )
317 return;
318
319 TabPage* pOldTabPage = mpCurTabPage;
320 if ( pOldTabPage )
321 pOldTabPage->DeactivatePage();
322
323 mpCurTabPage = pTabPage;
324 if ( pTabPage )
325 {
326 ImplPosTabPage();
327 pTabPage->ActivatePage();
328 pTabPage->Show();
329 }
330
331 if ( pOldTabPage )
332 pOldTabPage->Hide();
333 }
334
335 // -----------------------------------------------------------------------
336
ImplGetPage(sal_uInt16 nLevel) const337 TabPage* WizardDialog::ImplGetPage( sal_uInt16 nLevel ) const
338 {
339 sal_uInt16 nTempLevel = 0;
340 ImplWizPageData* pPageData = mpFirstPage;
341 while ( pPageData )
342 {
343 if ( (nTempLevel == nLevel) || !pPageData->mpNext )
344 break;
345
346 nTempLevel++;
347 pPageData = pPageData->mpNext;
348 }
349
350 if ( pPageData )
351 return pPageData->mpPage;
352 return NULL;
353 }
354
355 // =======================================================================
356
WizardDialog(Window * pParent,WinBits nStyle)357 WizardDialog::WizardDialog( Window* pParent, WinBits nStyle ) :
358 ModalDialog( pParent, nStyle )
359 {
360 ImplInitData();
361 }
362
363 // -----------------------------------------------------------------------
364
WizardDialog(Window * pParent,const ResId & rResId)365 WizardDialog::WizardDialog( Window* pParent, const ResId& rResId ) :
366 ModalDialog( pParent, rResId )
367 {
368 ImplInitData();
369 }
370
371 // -----------------------------------------------------------------------
372
~WizardDialog()373 WizardDialog::~WizardDialog()
374 {
375 if ( mpFixedLine )
376 delete mpFixedLine;
377
378 // Remove all buttons
379 while ( mpFirstBtn )
380 RemoveButton( mpFirstBtn->mpButton );
381
382 // Remove all pages
383 while ( mpFirstPage )
384 RemovePage( mpFirstPage->mpPage );
385 }
386
387 // -----------------------------------------------------------------------
388
Resize()389 void WizardDialog::Resize()
390 {
391 if ( IsReallyShown() && !IsInInitShow() )
392 {
393 ImplPosCtrls();
394 ImplPosTabPage();
395 }
396
397 Dialog::Resize();
398 }
399
400 // -----------------------------------------------------------------------
401
StateChanged(StateChangedType nType)402 void WizardDialog::StateChanged( StateChangedType nType )
403 {
404 if ( nType == STATE_CHANGE_INITSHOW )
405 {
406 if ( IsDefaultSize() )
407 {
408 Size aDlgSize = GetPageSizePixel();
409 if ( !aDlgSize.Width() || !aDlgSize.Height() )
410 {
411 ImplWizPageData* pPageData = mpFirstPage;
412 while ( pPageData )
413 {
414 if ( pPageData->mpPage )
415 {
416 Size aPageSize = pPageData->mpPage->GetSizePixel();
417 if ( aPageSize.Width() > aDlgSize.Width() )
418 aDlgSize.Width() = aPageSize.Width();
419 if ( aPageSize.Height() > aDlgSize.Height() )
420 aDlgSize.Height() = aPageSize.Height();
421 }
422
423 pPageData = pPageData->mpNext;
424 }
425 }
426 ImplCalcSize( aDlgSize );
427 SetOutputSizePixel( aDlgSize );
428 }
429
430 ImplPosCtrls();
431 ImplPosTabPage();
432 ImplShowTabPage( ImplGetPage( mnCurLevel ) );
433 }
434
435 Dialog::StateChanged( nType );
436 }
437
438 // -----------------------------------------------------------------------
439
Notify(NotifyEvent & rNEvt)440 long WizardDialog::Notify( NotifyEvent& rNEvt )
441 {
442 if ( (rNEvt.GetType() == EVENT_KEYINPUT) && mpPrevBtn && mpNextBtn )
443 {
444 const KeyEvent* pKEvt = rNEvt.GetKeyEvent();
445 KeyCode aKeyCode = pKEvt->GetKeyCode();
446 sal_uInt16 nKeyCode = aKeyCode.GetCode();
447
448 if ( aKeyCode.IsMod1() )
449 {
450 if ( aKeyCode.IsShift() || (nKeyCode == KEY_PAGEUP) )
451 {
452 if ( (nKeyCode == KEY_TAB) || (nKeyCode == KEY_PAGEUP) )
453 {
454 if ( mpPrevBtn->IsVisible() &&
455 mpPrevBtn->IsEnabled() && mpPrevBtn->IsInputEnabled() )
456 {
457 mpPrevBtn->SetPressed( sal_True );
458 mpPrevBtn->SetPressed( sal_False );
459 mpPrevBtn->Click();
460 }
461 return sal_True;
462 }
463 }
464 else
465 {
466 if ( (nKeyCode == KEY_TAB) || (nKeyCode == KEY_PAGEDOWN) )
467 {
468 if ( mpNextBtn->IsVisible() &&
469 mpNextBtn->IsEnabled() && mpNextBtn->IsInputEnabled() )
470 {
471 mpNextBtn->SetPressed( sal_True );
472 mpNextBtn->SetPressed( sal_False );
473 mpNextBtn->Click();
474 }
475 return sal_True;
476 }
477 }
478 }
479 }
480
481 return Dialog::Notify( rNEvt );
482 }
483
484 // -----------------------------------------------------------------------
485
ActivatePage()486 void WizardDialog::ActivatePage()
487 {
488 maActivateHdl.Call( this );
489 }
490
491 // -----------------------------------------------------------------------
492
DeactivatePage()493 long WizardDialog::DeactivatePage()
494 {
495 if ( maDeactivateHdl.IsSet() )
496 return maDeactivateHdl.Call( this );
497 else
498 return sal_True;
499 }
500
501 // -----------------------------------------------------------------------
502
ShowNextPage()503 sal_Bool WizardDialog::ShowNextPage()
504 {
505 return ShowPage( mnCurLevel+1 );
506 }
507
508 // -----------------------------------------------------------------------
509
ShowPrevPage()510 sal_Bool WizardDialog::ShowPrevPage()
511 {
512 if ( !mnCurLevel )
513 return sal_False;
514 return ShowPage( mnCurLevel-1 );
515 }
516
517 // -----------------------------------------------------------------------
518
ShowPage(sal_uInt16 nLevel)519 sal_Bool WizardDialog::ShowPage( sal_uInt16 nLevel )
520 {
521 if ( DeactivatePage() )
522 {
523 mnCurLevel = nLevel;
524 ActivatePage();
525 ImplShowTabPage( ImplGetPage( mnCurLevel ) );
526 return sal_True;
527 }
528 else
529 return sal_False;
530 }
531
532 // -----------------------------------------------------------------------
533
Finnish(long nResult)534 sal_Bool WizardDialog::Finnish( long nResult )
535 {
536 if ( DeactivatePage() )
537 {
538 if ( mpCurTabPage )
539 mpCurTabPage->DeactivatePage();
540
541 if ( IsInExecute() )
542 EndDialog( nResult );
543 else if ( GetStyle() & WB_CLOSEABLE )
544 Close();
545 return sal_True;
546 }
547 else
548 return sal_False;
549 }
550
551 // -----------------------------------------------------------------------
552
AddPage(TabPage * pPage)553 void WizardDialog::AddPage( TabPage* pPage )
554 {
555 ImplWizPageData* pNewPageData = new ImplWizPageData;
556 pNewPageData->mpNext = NULL;
557 pNewPageData->mpPage = pPage;
558
559 if ( !mpFirstPage )
560 mpFirstPage = pNewPageData;
561 else
562 {
563 ImplWizPageData* pPageData = mpFirstPage;
564 while ( pPageData->mpNext )
565 pPageData = pPageData->mpNext;
566 pPageData->mpNext = pNewPageData;
567 }
568 }
569
570 // -----------------------------------------------------------------------
571
RemovePage(TabPage * pPage)572 void WizardDialog::RemovePage( TabPage* pPage )
573 {
574 ImplWizPageData* pPrevPageData = NULL;
575 ImplWizPageData* pPageData = mpFirstPage;
576 while ( pPageData )
577 {
578 if ( pPageData->mpPage == pPage )
579 {
580 if ( pPrevPageData )
581 pPrevPageData->mpNext = pPageData->mpNext;
582 else
583 mpFirstPage = pPageData->mpNext;
584 if ( pPage == mpCurTabPage )
585 mpCurTabPage = NULL;
586 delete pPageData;
587 return;
588 }
589
590 pPrevPageData = pPageData;
591 pPageData = pPageData->mpNext;
592 }
593
594 DBG_ERROR( "WizardDialog::RemovePage() - Page not in list" );
595 }
596
597 // -----------------------------------------------------------------------
598
SetPage(sal_uInt16 nLevel,TabPage * pPage)599 void WizardDialog::SetPage( sal_uInt16 nLevel, TabPage* pPage )
600 {
601 sal_uInt16 nTempLevel = 0;
602 ImplWizPageData* pPageData = mpFirstPage;
603 while ( pPageData )
604 {
605 if ( (nTempLevel == nLevel) || !pPageData->mpNext )
606 break;
607
608 nTempLevel++;
609 pPageData = pPageData->mpNext;
610 }
611
612 if ( pPageData )
613 {
614 if ( pPageData->mpPage == mpCurTabPage )
615 mpCurTabPage = NULL;
616 pPageData->mpPage = pPage;
617 }
618 }
619
620 // -----------------------------------------------------------------------
621
GetPage(sal_uInt16 nLevel) const622 TabPage* WizardDialog::GetPage( sal_uInt16 nLevel ) const
623 {
624 sal_uInt16 nTempLevel = 0;
625 ImplWizPageData* pPageData = mpFirstPage;
626 while ( pPageData )
627 {
628 if ( nTempLevel == nLevel )
629 return pPageData->mpPage;
630
631 nTempLevel++;
632 pPageData = pPageData->mpNext;
633 }
634
635 return NULL;
636 }
637
638 // -----------------------------------------------------------------------
639
AddButton(Button * pButton,long nOffset)640 void WizardDialog::AddButton( Button* pButton, long nOffset )
641 {
642 ImplWizButtonData* pNewBtnData = new ImplWizButtonData;
643 pNewBtnData->mpNext = NULL;
644 pNewBtnData->mpButton = pButton;
645 pNewBtnData->mnOffset = nOffset;
646
647 if ( !mpFirstBtn )
648 mpFirstBtn = pNewBtnData;
649 else
650 {
651 ImplWizButtonData* pBtnData = mpFirstBtn;
652 while ( pBtnData->mpNext )
653 pBtnData = pBtnData->mpNext;
654 pBtnData->mpNext = pNewBtnData;
655 }
656 }
657
658 // -----------------------------------------------------------------------
659
RemoveButton(Button * pButton)660 void WizardDialog::RemoveButton( Button* pButton )
661 {
662 ImplWizButtonData* pPrevBtnData = NULL;
663 ImplWizButtonData* pBtnData = mpFirstBtn;
664 while ( pBtnData )
665 {
666 if ( pBtnData->mpButton == pButton )
667 {
668 if ( pPrevBtnData )
669 pPrevBtnData->mpNext = pBtnData->mpNext;
670 else
671 mpFirstBtn = pBtnData->mpNext;
672 delete pBtnData;
673 return;
674 }
675
676 pPrevBtnData = pBtnData;
677 pBtnData = pBtnData->mpNext;
678 }
679
680 DBG_ERROR( "WizardDialog::RemoveButton() - Button not in list" );
681 }
682
683 // -----------------------------------------------------------------------
684
ShowButtonFixedLine(sal_Bool bVisible)685 void WizardDialog::ShowButtonFixedLine( sal_Bool bVisible )
686 {
687 if ( !mpFixedLine )
688 {
689 if ( !bVisible )
690 return;
691
692 mpFixedLine = new FixedLine( this );
693 }
694
695 mpFixedLine->Show( bVisible );
696 }
697
698 // -----------------------------------------------------------------------
699
IsButtonFixedLineVisible()700 sal_Bool WizardDialog::IsButtonFixedLineVisible()
701 {
702 return (mpFixedLine && mpFixedLine->IsVisible());
703 }
704