]> Creatis software - bbtk.git/blob - kernel/src/bbtkWidgetBlackBoxWindow.txx
bc77e9b989c4aee5e394e2bf88b33e1db3c0de70
[bbtk.git] / kernel / src / bbtkWidgetBlackBoxWindow.txx
1 /*=========================================================================                                                                               
2   Program:   bbtk
3   Module:    $RCSfile: bbtkWidgetBlackBoxWindow.txx,v $
4   Language:  C++
5   Date:      $Date: 2009/06/10 11:36:52 $
6   Version:   $Revision: 1.4 $
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     std::cout << "**** WidgetBlackBoxWindow::~WidgetBlackBoxWindow() "
70               <<this<<std::endl;
71     bbHide();
72     if (!mBox.expired())
73       {
74         mBox.lock()->DecNbWindowsAlive();
75         mBox.lock()->bbSetWindow(0);
76       }
77   }
78   //========================================================================= 
79
80
81   //=========================================================================
82   template <class W>
83   void WidgetBlackBoxWindow<W>::bbShow()
84   {
85     if (bbIsShown()) return;
86     bbtkDebugMessage("widget",9,"WidgetBlackBoxWindow::bbShow() ["
87                      <<mBox.lock()->bbGetName()<<"]"<<std::endl);
88     mBox.lock()->IncNbWindowsShown();
89     mShown = true;
90     if (bbGetBlackBox()) bbGetBlackBox()->bbUserOnShow();
91   }
92   //=========================================================================
93
94   //=========================================================================
95   template <class W>
96   void WidgetBlackBoxWindow<W>::bbHide()
97   {
98     if ((!bbIsShown())||(mBox.expired())) return;
99     bbtkDebugMessage("widget",9,"WidgetBlackBoxWindow::bbHide() ["
100                      <<mBox.lock()->bbGetName()<<"]"<<std::endl);
101     mBox.lock()->DecNbWindowsShown();
102     mShown = false;
103   }
104   //=========================================================================
105
106   //=========================================================================
107   template <class W>
108   void WidgetBlackBoxWindow<W>::bbDestroy()
109   {
110     
111     if (mBox.expired()) return;
112     bbtkDebugMessage("widget",9,"WidgetBlackBoxWindow::bbDestroy() [" 
113                      <<mBox.lock()->bbGetName()<<"]"<<std::endl);
114     bbHide();
115     mBox.lock()->DecNbWindowsAlive();
116     mBox.lock()->bbSetWindow(0);
117     
118   }
119   //=========================================================================
120
121
122
123 }//namespace bbtk
124
125
126