]> Creatis software - bbtk.git/blob - kernel/src/bbtkWidgetBlackBoxWindow.txx
aee878575f2f0af8ae148fd51a109ef16bbe04f1
[bbtk.git] / kernel / src / bbtkWidgetBlackBoxWindow.txx
1 /*=========================================================================                                                                               
2   Program:   bbtk
3   Module:    $RCSfile: bbtkWidgetBlackBoxWindow.txx,v $
4   Language:  C++
5   Date:      $Date: 2009/05/19 10:19:23 $
6   Version:   $Revision: 1.2 $
7 =========================================================================*/
8
9 /* ---------------------------------------------------------------------
10
11 * Copyright (c) CREATIS-LRMN (Centre de Recherche en Imagerie Medicale)
12 * Authors : Eduardo Davila, Laurent Guigues, Jean-Pierre Roux
13 *
14 *  This software is governed by the CeCILL-B license under French law and 
15 *  abiding by the rules of distribution of free software. You can  use, 
16 *  modify and/ or redistribute the software under the terms of the CeCILL-B 
17 *  license as circulated by CEA, CNRS and INRIA at the following URL 
18 *  http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html 
19 *  or in the file LICENSE.txt.
20 *
21 *  As a counterpart to the access to the source code and  rights to copy,
22 *  modify and redistribute granted by the license, users are provided only
23 *  with a limited warranty  and the software's author,  the holder of the
24 *  economic rights,  and the successive licensors  have only  limited
25 *  liability. 
26 *
27 *  The fact that you are presently reading this means that you have had
28 *  knowledge of the CeCILL-B license and that you accept its terms.
29 * ------------------------------------------------------------------------ */                                                                         
30
31 /**
32  *  \file 
33  *  \brief 
34  */
35  
36
37 namespace bbtk
38 {
39
40
41
42
43   //=========================================================================
44   // WidgetBlackBoxWindow
45   //=========================================================================
46
47
48
49   //=========================================================================
50   template <class W>
51   WidgetBlackBoxWindow<W>::WidgetBlackBoxWindow
52   (typename WidgetBlackBox<W>::Pointer box)
53     : mBox(box), mShown(false)
54   {
55     bbtkDebugMessage("widget",9,"WidgetBlackBoxWindow::WidgetBlackBoxWindow("
56                      <<mBox.lock()->bbGetName()<<")"<<std::endl);
57     mBox.lock()->bbSetWindow(this);
58     mBox.lock()->IncNbWindowsAlive();
59   }
60   //=========================================================================
61
62   //=========================================================================
63   template <class W>
64   WidgetBlackBoxWindow<W>::~WidgetBlackBoxWindow()
65   {
66     bbtkDebugMessage("widget",9,
67                      "WidgetBlackBoxWindow::~WidgetBlackBoxWindow() "
68                      <<this<<std::endl);
69     bbHide();
70     if (!mBox.expired())
71       {
72         mBox.lock()->DecNbWindowsAlive();
73         mBox.lock()->bbSetWindow(0);
74       }
75   }
76   //========================================================================= 
77
78
79   //=========================================================================
80   template <class W>
81   void WidgetBlackBoxWindow<W>::bbShow()
82   {
83     if (bbIsShown()) return;
84     bbtkDebugMessage("widget",9,"WidgetBlackBoxWindow::bbShow() ["
85                      <<mBox.lock()->bbGetName()<<"]"<<std::endl);
86     mBox.lock()->IncNbWindowsShown();
87     mShown = true;
88     if (bbGetBlackBox()) bbGetBlackBox()->bbUserOnShow();
89   }
90   //=========================================================================
91
92   //=========================================================================
93   template <class W>
94   void WidgetBlackBoxWindow<W>::bbHide()
95   {
96     if ((!bbIsShown())||(mBox.expired())) return;
97     bbtkDebugMessage("widget",9,"WidgetBlackBoxWindow::bbHide() ["
98                      <<mBox.lock()->bbGetName()<<"]"<<std::endl);
99     mBox.lock()->DecNbWindowsShown();
100     mShown = false;
101   }
102   //=========================================================================
103
104   //=========================================================================
105   template <class W>
106   void WidgetBlackBoxWindow<W>::bbDestroy()
107   {
108     if (mBox.expired()) return;
109     bbtkDebugMessage("widget",9,"WidgetBlackBoxWindow::bbDestroy() [" 
110                      <<mBox.lock()->bbGetName()<<"]"<<std::endl);
111     bbHide();
112     mBox.lock()->DecNbWindowsAlive();
113     mBox.lock()->bbSetWindow(0);
114   }
115   //=========================================================================
116
117
118
119 }//namespace bbtk
120
121
122