-/*=========================================================================
-
-Program: bbtk
-Module: $RCSfile: bbtkComplexBlackBox.cxx,v $
-Language: C++
-Date: $Date: 2008/04/22 14:30:25 $
-Version: $Revision: 1.15 $
-
-Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
-l'Image). All rights reserved. See Doc/License.txt or
-http://www.creatis.insa-lyon.fr/Public/bbtk/License.html for details.
-
-This software is distributed WITHOUT ANY WARRANTY; without even
-the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
-PURPOSE. See the above copyright notices for more information.
-
+/*=========================================================================
+ Program: bbtk
+ Module: $RCSfile: bbtkComplexBlackBox.cxx,v $
+ Language: C++
+ Date: $Date: 2008/10/17 08:18:12 $
+ Version: $Revision: 1.21 $
=========================================================================*/
+/* ---------------------------------------------------------------------
+
+* Copyright (c) CREATIS-LRMN (Centre de Recherche en Imagerie Medicale)
+* Authors : Eduardo Davila, Laurent Guigues, Jean-Pierre Roux
+*
+* This software is governed by the CeCILL-B license under French law and
+* abiding by the rules of distribution of free software. You can use,
+* modify and/ or redistribute the software under the terms of the CeCILL-B
+* license as circulated by CEA, CNRS and INRIA at the following URL
+* http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
+* or in the file LICENSE.txt.
+*
+* As a counterpart to the access to the source code and rights to copy,
+* modify and redistribute granted by the license, users are provided only
+* with a limited warranty and the software's author, the holder of the
+* economic rights, and the successive licensors have only limited
+* liability.
+*
+* 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 class bbtk::ComplexBlackBox : user defined complex black boxes
*/
#include "bbtkComplexBlackBox.h"
+#include "bbtkWx.h"
#include "bbtkBlackBoxDescriptor.h"
#include "bbtkFactory.h"
#include "bbtkConfigurationFile.h"
<<from.bbGetName()<<"\",\""
<<name<<"\")"<<std::endl);
bbtkDebugMessage("object",4," * Cloning Black Boxes"<<std::endl);
+
+ // We have to make the shared_ptr on this because it is used
+ // in bbUnsafeAddBlackBox !
+ MakeBlackBoxPointer(this,true);
+
BlackBoxMapType::const_iterator i;
for ( i = from.mBlackBoxMap.begin(); i != from.mBlackBoxMap.end(); ++i )
{
bbtkDebugMessageInc("object",5," * Cloning \""<<i->first<<"\""<<std::endl);
BlackBox::Pointer B = i->second->bbClone(i->second->bbGetName());
bbUnsafeAddBlackBox(B);
-
}
bbtkDebugMessage("object",4," * Cloning Connections"<<std::endl);
/// Executes the box so that its outputs are up-to-date on exit
void ComplexBlackBox::bbExecute(bool force)
{
- bbtkDebugMessageInc("Process",1,
- "ComplexBlackBox::bbExecute() ["
+ bbtkDebugMessageInc("process",2,
+ "=> ComplexBlackBox::bbExecute() ["
<<bbGetFullName()<<"]"<<std::endl);
- Wx::BeginBusyCursor();
+ Wx::BusyCursor wait;
if (mExecutionList.size() != 0)
{
i!=mExecutionList.end();
++i)
{
- bbtkDebugMessage("Process",2," -> Executing '"<<*i<<"'"<<std::endl);
+ bbtkDebugMessage("process",3," -> Executing '"<<*i<<"'"<<std::endl);
mBlackBoxMap[*i]->bbExecute(force);
}
}
}
}
- Wx::EndBusyCursor();
-
-
- bbtkDebugDecTab("Process",1);
-
}
//==================================================================
//==================================================================
void ComplexBlackBox::bbSetModifiedStatus(BlackBoxInputConnector* c)
{
- bbtkDebugMessage("Process",3,
- "ComplexBlackBox::bbSetModifiedStatus("
+ bbtkDebugMessage("modified",1,
+ "==> ComplexBlackBox::bbSetModifiedStatus("
<<c<<") ["<<bbGetFullName()<<"]"<<std::endl);
c->GetBlackBox()->bbSetModifiedStatus(c);
- bbtkDebugMessage("Process",3,
- "EO ComplexBlackBox::bbSetModifiedStatus("
+ /*
+ bbtkDebugMessage("modified",1,
+ "<== ComplexBlackBox::bbSetModifiedStatus("
<<c<<") ["<<bbGetFullName()<<"]"<<std::endl);
+ */
}
//==================================================================
//==================================================================
IOStatus ComplexBlackBox::bbBackwardUpdate(Connection::Pointer caller)
{
- bbtkDebugMessageInc("Process",1,
- "ComplexBlackBox::bbBackwardUpdate("
+ bbtkDebugMessageInc("process",3,
+ "==> ComplexBlackBox::bbBackwardUpdate("
<<(caller?caller->GetFullName():"0")<<") ["
<<bbGetFullName()<<"]"<<std::endl);
// bbtkInternalError("ComplexBlackBox::bbBackwardUpdate should never be called !");
// Get the internal box
BlackBox::Pointer b = bbUnsafeGetBlackBox ( d->GetTarget() );
// Calls BackwardUpdate on it
- bbtkDebugMessageInc("Process",2,"Internal box connected to output : "<<d->GetTarget()<<std::endl);
+ bbtkDebugMessageInc("process",4,"Internal box connected to output : "<<d->GetTarget()<<std::endl);
// Because internal box can also be a complex box we have to
// temporarily change the connection BlackBoxFromOutput to the
// mapped one
// ??? STATUS OF CBBs ???
// ??? Here it is only the final status of the boxes connected to the output
if (s1==MODIFIED) s=MODIFIED;
- bbtkDebugDecTab("Process",2);
}
else
{
bbtkError("Connection '"<<caller->GetFullName()<<"' does not point to a valid output of the complex box !");
}
- bbtkDebugDecTab("Process",1);
return s;