Program: bbtk
Module: $RCSfile: bbtkWidgetBlackBox.txx,v $
Language: C++
- Date: $Date: 2009/04/08 07:56:11 $
- Version: $Revision: 1.1 $
+ Date: $Date: 2010/01/14 13:17:27 $
+ Version: $Revision: 1.6 $
=========================================================================*/
/* ---------------------------------------------------------------------
* The fact that you are presently reading this means that you have had
* knowledge of the CeCILL-B license and that you accept its terms.
* ------------------------------------------------------------------------ */
+
/**
* \file
* \brief
-#include "bbtkWidgetBlackBoxWindow.h"
+//#include "bbtkWidgetBlackBoxWindow.h"
#include "bbtkBlackBoxOutputConnector.h"
//=========================================================================
template <class T>
- void WidgetBlackBox<T>::bbUserConstructor()
+ void WidgetBlackBox<T>::bbUserSetDefaultValues()
{
- bbtkDebugMessage("widget",9,"WidgetBlackBox::bbUserConstructor()"<<std::endl);
- bbInitAttributes();
+ bbtkBlackBoxDebugMessage("widget",9,"WidgetBlackBox::bbUserSetDefaultValues()"<<std::endl);
+ // bbmWindow = 0;
+ bbSetInputWinTitle(bbGetName());
+ bbSetInputWinWidth(800);
+ bbSetInputWinHeight(800);
+ bbSetInputWinDialog(false);
+ bbSetOutputWidget(0);
}
//=========================================================================
+
//=========================================================================
template <class T>
- void WidgetBlackBox<T>::bbUserCopyConstructor(bbtk::BlackBox::Pointer)
+ void WidgetBlackBox<T>::bbUserInitializeProcessing()
{
- bbtkDebugMessage("widget",9,"WidgetBlackBox::bbUserCopyConstructor()"
- <<std::endl);
- bbInitAttributes();
+ bbmShown = false;
}
//=========================================================================
-
//=========================================================================
template <class T>
- void WidgetBlackBox<T>::bbUserDestructor()
+ void WidgetBlackBox<T>::bbUserFinalizeProcessing()
{
- bbtkDebugMessage("widget",9,"==> WidgetBlackBox::bbUserDestructor() ["<<bbGetFullName()<<"]"<<std::endl);
- if (bbGetWindow()) {
- bbGetWindow()->bbClose();
- bbSetWindow(0);
- }
- bbtkDebugMessage("widget",9,"<== WidgetBlackBox::bbUserDestructor() ["<<bbGetFullName()<<"]"<<std::endl);
+ /*
+ std::cout << "****** WidgetBlackBox<T>::bbUserFinalizeProcessing()"<<std::endl;
+ bbtkBlackBoxDebugMessage("widget",9,"==> WidgetBlackBox::bbUserFinalizeProcessing() ["<<bbGetFullName()<<"]"<<std::endl);
+ if (bbGetWindow())
+ {
+ bool shown = bbGetWindow()->bbIsShown();
+ bbGetWindow()->bbDestroy();
+ bbSetWindow(0);
+
+ if (GetUseCount()==0)
+ {
+ bbtkBlackBoxDebugMessage("widget",9,"**** HERE use count == 0"<<std::endl);
+ if (shown) DecNbWindowsShown();
+ DecNbWindowsAlive();
+ }
+
+ }
+ bbtkBlackBoxDebugMessage("widget",9,"<== WidgetBlackBox::bbUserFinalizeProcessing() ["<<bbGetFullName()<<"]"<<std::endl);
+ */
}
//=========================================================================
- //=========================================================================
- /**
- * \brief Initialize the attributes of the class
- *
- */
- template <class T>
- void WidgetBlackBox<T>::bbInitAttributes()
- {
- bbmWindow = 0;
- bbSetInputWinTitle(bbGetName());
- bbSetInputWinWidth(800);
- bbSetInputWinHeight(800);
- bbSetInputWinDialog(false);
- bbSetOutputWidget(0);
- }
- //=========================================================================
-
+
//=========================================================================
template <class T>
if ( ! bbIsOutputWidgetConnected() )
{
// create the Window if does not exist
- if ( bbGetWindow() == 0)
+ if (!bbWindowIsCreated())
{
- bbtkDebugMessage("widget",2,
+ bbtkBlackBoxDebugMessage("widget",2,
"-> Creating the window"
<<std::endl);
+ // Reinitializing
+ bbSetShown(false);
+ bbmNestedWidgetBoxes.clear();
+
// this->InitWindowManagerIfNeeded();
// If is a Dialog requested
if ( bbGetInputWinDialog() )
{
- bbtkDebugMessage("process",2,
+ bbtkBlackBoxDebugMessage("widget",2,
" Input WinDialog set to true : creating a Dialog"
<<std::endl);
this->bbCreateDialogWindow();
// Input WinDialog set to false : creating a Frame
else
{
- bbtkDebugMessage("process",2,
+ bbtkBlackBoxDebugMessage("widget",2,
" Input WinDialog set to false : creating a Frame"
<<std::endl);
this->bbCreateFrameWindow();
}
}
+ /*
// Show the window
if ( !bbGetWindow() )
{
bbtkInternalError("Need to show the Window of widget "<<bbGetName()
<<" however was not created by apropriate cb");
}
- bbtkDebugMessage("widget",2,
+ */
+
+ /*
+ bbtkBlackBoxDebugMessage("widget",2,
"-> Showing the window"
<<std::endl);
- bbGetWindow()->bbShow();
+ // bbGetWindow()->bbShow();
+ this->bbShowWindow();
+ */
}
//
}
template <class T>
typename WidgetBlackBox<T>::WidgetPointer
WidgetBlackBox<T>::bbCreateWidgetOfInput
- (const std::string& in, WidgetBlackBox<T>::WidgetPointer parent)
+ (const std::string& in, typename WidgetBlackBox<T>::WidgetPointer parent)
{
+ bbtkBlackBoxDebugMessage("widget",2,"bbCreateWidgetOfInput("
+ <<in<<","<<parent<<")"
+ <<std::endl);
Widget* w = 0;
// If input is connected
BlackBoxInputConnector* c = bbGetInputConnectorMap().find(in)->second ;
// Cast it into a WidgetBlackBox
typename WidgetBlackBox<T>::Pointer wfrom
= boost::dynamic_pointer_cast<WidgetBlackBox<T> >(from);
- // Call bbCreateWidget
+ // If the black box from construction is not done yet : do it
+ // If not constructed do it
+ wfrom->bbInitializeProcessing();
+ // Call bbUserCreateWidget
wfrom->bbUserCreateWidget(parent);
// Get the widget created
w = wfrom->bbGetOutputWidget();
+ // Insert the box into the NestedWidgetBoxes list
+ bbmNestedWidgetBoxes.push_back(from);
}
return w;
}
}
//==================================================================
+ //==================================================================
+ template <class T>
+ void WidgetBlackBox<T>::bbSetShown(bool b)
+ {
+ if (b==bbmShown) return;
+
+ bbtkBlackBoxDebugMessage("widget",5,"WidgetBlackBox::bbSetShown("
+ <<b<<")"
+ <<std::endl);
+
+ bbmShown = b;
+ if (b)
+ {
+ this->bbUserOnShow();
+ }
+ // Have to propagate to nested widgets
+ std::vector<BlackBox::WeakPointer>::const_iterator i;
+ for (i =bbmNestedWidgetBoxes.begin();
+ i!=bbmNestedWidgetBoxes.end();
+ ++i)
+ {
+ if (!i->expired()) i->lock()->bbSetShown(b);
+ }
+
+ }
+ //==================================================================
+
+ //==================================================================
+ template <class T>
+ bool WidgetBlackBox<T>::bbIsShown()
+ {
+ return bbmShown;
+ }
+ //==================================================================
+
+ /*
//==================================================================
template <class T>
void WidgetBlackBox<T>::bbShowWindow()
{
- bbtkDebugMessageInc("widget",1,"=> WidgetBlackBox::bbShowWindow() ["
+ bbtkBlackBoxDebugMessage("widget",1,"=> WidgetBlackBox::bbShowWindow() ["
<<bbGetFullName()<<"]"<<std::endl);
if (bbGetWindow()!=0) bbGetWindow()->bbShow();
- bbtkDebugMessageDec("widget",2,"<= WidgetBlackBox::bbShowWindow() ["
+ bbtkBlackBoxDebugMessage("widget",1,"<= WidgetBlackBox::bbShowWindow() ["
<<bbGetFullName()<<"]"<<std::endl);
}
//==================================================================
template <class T>
void WidgetBlackBox<T>::bbHideWindow()
{
- bbtkDebugMessageInc("widget",1,"=> WidgetBlackBox::bbHideWindow() ["
+ bbtkBlackBoxDebugMessage("widget",1,"=> WidgetBlackBox::bbHideWindow() ["
<<bbGetFullName()<<"]"<<std::endl);
if (bbGetWindow()!=0) bbGetWindow()->bbHide();
- bbtkDebugMessageDec("widget",2,"<= WidgetBlackBox::bbHideWindow() ["
+ bbtkBlackBoxDebugMessage("widget",1,"<= WidgetBlackBox::bbHideWindow() ["
<<bbGetFullName()<<"]"<<std::endl);
}
//==================================================================
template <class T>
void WidgetBlackBox<T>::bbCloseWindow()
{
- bbtkDebugMessageInc("widget",1,"=> WidgetBlackBox::bbCloseWindow() ["
+ bbtkBlackBoxDebugMessage("widget",1,"=> WidgetBlackBox::bbCloseWindow() ["
<<bbGetFullName()<<"]"<<std::endl);
- if (bbGetWindow()!=0) bbGetWindow()->bbClose();
+ if (bbGetWindow()!=0) bbGetWindow()->bbDestroy();
- bbtkDebugMessageDec("widget",2,"<= WidgetBlackBox::bbCloseWindow() ["
+ bbtkBlackBoxDebugMessage("widget",1,"<= WidgetBlackBox::bbCloseWindow() ["
<<bbGetFullName()<<"]"<<std::endl);
}
//==================================================================
return false;
}
//==================================================================
-
+ */
}//namespace bbtk