Program: bbtk
Module: $RCSfile: bbtkBlackBox.cxx,v $
Language: C++
-Date: $Date: 2008/04/18 12:59:15 $
-Version: $Revision: 1.10 $
+Date: $Date: 2008/06/19 09:46:41 $
+Version: $Revision: 1.21 $
Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
l'Image). All rights reserved. See doc/license.txt or
bbtkDebugMessage("object",2,"##> BlackBox::Deleter(\""<<name<<"\") : deleting black box"<<std::endl);
b->bbDelete();
-
+
bbtkDebugMessage("object",2,"##> BlackBox::Deleter(\""<<name<<"\") : releasing descriptor ["<<desc.lock()<<"]"<<std::endl);
if (!desc.expired())
: bbmName(name),
bbmStatus(MODIFIED),
bbmBoxProcessMode("Pipeline"),
- bbmParent(),
- bbmExecuting(false)
+ bbmParent()
+
{
bbtkDebugMessage("object",4,"==> BlackBox::BlackBox(\""
<<name<<"\")"<<std::endl);
}
//=========================================================================
+ //=========================================================================
+ BlackBox::BlackBox(const BlackBox&)
+ {}
//=========================================================================
BlackBox::BlackBox(BlackBox& from, const std::string &name)
: bbmName(name),
bbmStatus(from.bbmStatus),
bbmBoxProcessMode(from.bbmBoxProcessMode),
- bbmParent(),
- bbmExecuting(false)
+ bbmParent()
+
{
bbtkDebugMessage("object",4,"==> BlackBox::BlackBox("
<<from.bbGetFullName()<<",\""
/// Main processing method of the box.
void BlackBox::bbExecute(bool force)
{
- bbtkDebugMessageInc("Process",1,
+ bbtkDebugMessageInc("process",2,
"=> BlackBox::bbExecute() ["
<<bbGetFullName()<<"]"<<std::endl);
- Wx::BeginBusyCursor();
+ wxBusyCursor wait;
+ //EED Wx::BeginBusyCursor();
// If execution frozen : return
if (bbGlobalGetFreezeExecution())
{
- bbtkDebugMessage("Process",1,
+ bbtkDebugMessage("process",2,
" -> FreezeExecution global flag is 'true' : abort execution"<<std::endl);
}
// Calls the main recursive update method
bbBackwardUpdate(Connection::Pointer());
- Wx::EndBusyCursor();
+ //EED Wx::EndBusyCursor();
- bbtkDebugMessageDec("Process",1,
+ bbtkDebugMessageDec("process",2,
"<= BlackBox::bbExecute() ["
<<bbGetFullName()<<"]"<<std::endl);
}
/// User overloadable destruction method of a black box
void BlackBox::bbUserDelete()
{
- bbtkDebugMessage("Process",5,
+ bbtkDebugMessage("process",5,
"=> BlackBox::bbUserDelete() ["
<<bbGetFullName()<<"]"
<<" : not overloaded; using standard deletion"
/// Signals that the BlackBox has been modified
void BlackBox::bbSetModifiedStatus(BlackBoxInputConnector* c)
{
- bbtkDebugMessageInc("Process",5,
- "=> BlackBox::bbSetModifiedStatus("<<c<<") ["
- <<bbGetFullName()<<"]"<<std::endl);
-
+ bbtkDebugMessage("modified",1,
+ "==> BlackBox::bbSetModifiedStatus("<<c<<") ["
+ <<bbGetFullName()<<"]"<<std::endl);
+
if ( (c==bbGetInputConnectorMap().find("WinHide")->second) )
- // && (bbCanReact()))
+ // && (bbCanReact()))
{
- bbtkDebugMessage("Process",9,
+ bbtkDebugMessage("modified",2,
"-> Hide triggered by WinHide input change"
<<std::endl);
this->bbHideWindow();
this->bbSetStatus(MODIFIED);
return;
}
-
+ if ( (c==bbGetInputConnectorMap().find("WinClose")->second) )
+ // && (bbCanReact()))
+ {
+ bbtkDebugMessage("modified",2,
+ "-> Close triggered by WinClose input change"
+ <<std::endl);
+ this->bbHideWindow();
+ this->bbSetStatus(MODIFIED);
+ return;
+ }
+
if ( ( bbBoxProcessModeIsReactive() ||
(c==bbGetInputConnectorMap().find("BoxExecute")->second))
&& (bbCanReact() ) )
{
- bbtkDebugMessage("Process",9,
+ bbtkDebugMessage("modified",2,
"-> Execution triggered by Reactive mode or BoxExecute input change"<<std::endl);
this->bbSetStatus(MODIFIED);
bbGlobalAddToExecutionList( GetThisPointer<BlackBox>() );
}
else if ( bbGetStatus() == MODIFIED ) //! this->bbIsUptodate())
{
- bbtkDebugMessage("Process",5,"-> Already modified"<<std::endl);
- bbtkDebugDecTab("Process",5);
+ bbtkDebugMessage("modified",2,"-> Already modified"<<std::endl);
return;
}
else
{
- bbtkDebugMessage("Process",5,"-> Status set to modified"<<std::endl);
- bbtkDebugDecTab("Process",5);
+ bbtkDebugMessage("modified",2,"-> Status set to modified"<<std::endl);
this->bbSetStatus(MODIFIED);
}
this->bbSignalOutputModification(false);
- bbtkDebugMessageDec("Process",5,
+ /*
+ bbtkDebugMessageDec("process",5,
"<= BlackBox::bbSetModifiedStatus("<<c<<") ["
<<bbGetFullName()<<"]"<<std::endl);
+ */
}
//=========================================================================
//=========================================================================
void BlackBox::bbSignalOutputModification(bool reaction)
{
- bbtkDebugMessageInc("Process",5,
+ bbtkDebugMessageInc("process",5,
"=> BlackBox::bbSignalOutputModification() ["
<<bbGetFullName()<<"]"<<std::endl);
if (reaction) bbGlobalProcessExecutionList();
- bbtkDebugMessageDec("Process",5,
+ bbtkDebugMessageDec("process",5,
"<= BlackBox::bbSignalOutputModification() ["
<<bbGetFullName()<<"]"<<std::endl);
void BlackBox::bbSignalOutputModification(const std::string& output,
bool reaction)
{
- bbtkDebugMessageInc("Process",5,
+ bbtkDebugMessageInc("process",5,
"=> BlackBox::bbSignalOutputModification("
<<output<<") ["
<<bbGetFullName()<<"]"<<std::endl);
}
if (reaction) bbGlobalProcessExecutionList();
- bbtkDebugMessageDec("Process",5,
+ bbtkDebugMessageDec("process",5,
"<= BlackBox::bbSignalOutputModification("
<<output<<") ["
<<bbGetFullName()<<"]"<<std::endl);
void BlackBox::bbSignalOutputModification(const std::vector<std::string>& output,
bool reaction)
{
- bbtkDebugMessageInc("Process",5,
+ bbtkDebugMessageInc("process",5,
"=> BlackBox::bbSignalOutputModification(vector of outputs) ["
<<bbGetFullName()<<"]"<<std::endl);
OutputConnectorMapType::iterator i;
}
if (reaction) bbGlobalProcessExecutionList();
- bbtkDebugMessageDec("Process",5,
+ bbtkDebugMessageDec("process",5,
"<= BlackBox::bbSignalOutputModification(vector of outputs) ["
<<bbGetFullName()<<"]"<<std::endl);
/// else MODIFIED
IOStatus BlackBox::bbUpdateInputs(bool excludeParent)
{
- bbtkDebugMessageInc("Process",4,
+ bbtkDebugMessageInc("process",4,
"=> BlackBox::bbUpdateInputs() ["
<<bbGetFullName()<<"]"
<<std::endl);
if (t==MODIFIED) s = MODIFIED;
}
- bbtkDebugMessageDec("Process",4,
+ bbtkDebugMessageDec("process",4,
"<= BlackBox::bbUpdateInputs() ["
<<bbGetFullName()<<"]"
<<std::endl);
//=========================================================================
/// Connects the input <name> to the connection c
- void BlackBox::bbConnectInput( const std::string& name, Connection::Pointer c)
+ void BlackBox::bbConnectInput( const std::string& name, Connection* c)
{
- bbtkDebugMessageInc("Kernel",7,
- "BlackBox::bbConnectInput(\""<<name<<"\","<<c<<") ["
+ bbtkDebugMessage("connection",2,
+ "==> BlackBox::bbConnectInput(\""
+ <<name<<"\","<<c->GetFullName()<<") ["
<<bbGetFullName()<<"]"
<<std::endl);
+
+
InputConnectorMapType::iterator i = bbGetInputConnectorMap().find(name);
if (i==bbGetInputConnectorMap().end())
{
}
i->second->SetConnection(c);
+ bbtkDebugMessage("connection",2,
+ "<== BlackBox::bbConnectInput(\""
+ <<name<<"\","<<c->GetFullName()<<") ["
+ <<bbGetFullName()<<"]"
+ <<std::endl);
// bbSetModifiedStatus();
- bbtkDebugDecTab("Kernel",7);
}
//=========================================================================
//=========================================================================
/// Connects the output <name> to the connection c
- void BlackBox::bbConnectOutput( const std::string& name, Connection::Pointer c)
+ void BlackBox::bbConnectOutput( const std::string& name, Connection* c)
{
- bbtkDebugMessageInc("Kernel",7,
- "BlackBox::bbConnectOutput(\""<<name<<"\","<<c<<") ["
- <<bbGetFullName()<<"]"<<std::endl);
-
+ bbtkDebugMessage("connection",2,
+ "==> BlackBox::bbConnectOutput(\""<<name<<"\","
+ <<c->GetFullName()<<") ["
+ <<bbGetFullName()<<"]"<<std::endl);
+
OutputConnectorMapType::iterator i = bbGetOutputConnectorMap().find(name);
if (i==bbGetOutputConnectorMap().end())
{
}
i->second->SetConnection(c);
- bbtkDebugDecTab("Kernel",7);
+ bbtkDebugMessage("connection",2,
+ "<== BlackBox::bbConnectOutput(\""<<name<<"\","
+ <<c->GetFullName()<<") ["
+ <<bbGetFullName()<<"]"<<std::endl);
+
}
//=========================================================================
//=========================================================================
/// Disconnects the input <name> from the connection c
- void BlackBox::bbDisconnectInput( const std::string& name, Connection::Pointer c)
+ void BlackBox::bbDisconnectInput( const std::string& name, Connection* c)
{
- if (!c) return;
- bbtkDebugMessageInc("Kernel",7,
- "BlackBox::bbDisconnectInput(\""<<name
- <<"\","<<c<<") ["
- <<bbGetFullName()<<"]"
- <<std::endl);
+
+ bbtkDebugMessage("connection",2,
+ "==> BlackBox::bbDisconnectInput(\""<<name
+ <<"\","<<c->GetFullName()<<") ["
+ <<bbGetFullName()<<"]"
+ <<std::endl);
+
+ if (!c)
+ {
+
+ bbtkDebugMessage("connection",2,"c==0"<<std::endl);
+ return;
+ }
InputConnectorMapType::iterator i = bbGetInputConnectorMap().find(name);
if (i==bbGetInputConnectorMap().end())
}
i->second->UnsetConnection(c);
- bbtkDebugDecTab("Kernel",7);
+ bbtkDebugMessage("connection",2,
+ "<== BlackBox::bbDisconnectInput(\""<<name
+ <<"\","<<c->GetFullName()<<") ["
+ <<bbGetFullName()<<"]"
+ <<std::endl);
+
}
//=========================================================================
//=========================================================================
/// Disconnects the output <name> from the connection c
- void BlackBox::bbDisconnectOutput( const std::string& name, Connection::Pointer c)
+ void BlackBox::bbDisconnectOutput( const std::string& name, Connection* c)
{
- if (!c) return;
- bbtkDebugMessageInc("Kernel",7,
- "BlackBox::bbDisconnectOutput(\""<<name
- <<"\","<<c<<") ["
- <<bbGetFullName()<<"]"
- <<std::endl);
+ bbtkDebugMessage("connection",2,
+ "==> BlackBox::bbDisconnectOutput(\""<<name
+ <<"\","<<c->GetFullName()<<") ["
+ <<bbGetFullName()<<"]"
+ <<std::endl);
+ if (!c)
+ {
+
+ bbtkDebugMessage("connection",2,"c==0"<<std::endl);
+ return;
+ }
OutputConnectorMapType::iterator i = bbGetOutputConnectorMap().find(name);
if (i==bbGetOutputConnectorMap().end())
}
i->second->UnsetConnection(c);
- bbtkDebugDecTab("Kernel",7);
+ bbtkDebugMessage("connection",2,
+ "<== BlackBox::bbDisconnectOutput(\""<<name
+ <<"\","<<c->GetFullName()<<") ["
+ <<bbGetFullName()<<"]"
+ <<std::endl);
}
//=========================================================================
{
if (i->second)
{
- Connection::Pointer con = i->second->GetConnection();
+ Connection* con = i->second->GetConnection();
if (con!=NULL){
- BlackBox::Pointer a=con->GetBlackBoxFrom();
- BlackBox::Pointer b=con->GetBlackBoxTo();
+ BlackBox::Pointer a=con->GetOriginalBlackBoxFrom();
+ BlackBox::Pointer b=con->GetOriginalBlackBoxTo();
fprintf(ff," ");
a->bbWriteDotInputOutputName(ff,false,detail,level);
if (detail==1)
{
- fprintf(ff,":%s",con->GetBlackBoxFromOutput().c_str());
+ fprintf(ff,":%s",con->GetOriginalBlackBoxFromOutput().c_str());
}
fprintf(ff,"->");
b->bbWriteDotInputOutputName(ff,true,detail,level);
if (detail==1)
{
- fprintf(ff,":%s",con->GetBlackBoxToInput().c_str());
+ fprintf(ff,":%s",con->GetOriginalBlackBoxToInput().c_str());
}
fprintf(ff,"%s\n",";");
} // if con
ivalue.push_back(bbGetInputAsString(i->first));
if (ivalue.back().size()>valuelmax) valuelmax = ivalue.back().size();
std::string s("");
- Connection::Pointer con = i->second->GetConnection();
+ Connection* con = i->second->GetConnection();
if (con!=0){
- s = con->GetBlackBoxFrom()->bbGetName();
+ s = con->GetOriginalBlackBoxFrom()->bbGetName();
s += ".";
- s += con->GetBlackBoxFromOutput();
+ s += con->GetOriginalBlackBoxFromOutput();
} // if con
iconn.push_back(s);
}
ovalue.push_back(bbGetOutputAsString(o->first));
if (ovalue.back().size()>valuelmax) valuelmax = ovalue.back().size();
std::vector<std::string> ss;
- const std::vector<Connection::WeakPointer>& con
+ const std::vector<Connection*>& con
= o->second->GetConnectionVector();
- std::vector<Connection::WeakPointer>::const_iterator c;
+ std::vector<Connection*>::const_iterator c;
for (c=con.begin();c!=con.end();++c)
{
std::string s;
- s = (*c).lock()->GetBlackBoxTo()->bbGetName();
+ s = (*c)->GetOriginalBlackBoxTo()->bbGetName();
s += ".";
- s += (*c).lock()->GetBlackBoxToInput();
+ s += (*c)->GetOriginalBlackBoxToInput();
ss.push_back(s);
} // if con
oconn.push_back(ss);
//=========================================================================
void BlackBox::bbGlobalProcessExecutionList()
{
- bbtkDebugMessageInc("Process",1,
+ bbtkDebugMessageInc("process",3,
"=> BlackBox::bbGlobalProcessExecutionList()"
<<std::endl);
i!=bbmgExecutionList.end();
++i)
{
- bbtkDebugMessage("Process",2,
+ bbtkDebugMessage("process",4,
" -> Executing "<<(*i)->bbGetFullName()<<std::endl);
(*i)->bbExecute(true);
}
bbmgExecutionList.clear();
- bbtkDebugMessageDec("Process",1,
+ bbtkDebugMessageDec("process",3,
"<= BlackBox::bbGlobalProcessExecutionList()"
<<std::endl);
}
- //=========================================================================
- // Static members initialization
-/*EED
- bool BlackBox::bbmgSomeBoxExecuting = false;
- bool BlackBox::bbmgFreezeExecution = false;
- std::set<BlackBox*> BlackBox::bbmgExecutionList;
-*/
//=========================================================================
//=========================================================================
void BlackBox::Check(bool recursive)
{
- bbtkMessage("Debug",1,"*** Checking Black Box "<<(void*)this<<" ["<<bbGetFullName()
+ bbtkMessage("debug",1,"*** Checking Black Box "<<(void*)this<<" ["<<bbGetFullName()
<<"] ... OK"<<std::endl);
}
//=========================================================================
+ void BlackBox::bbUserOnShowWidget(std::string nameInput)
+ {
+ bbtk::BlackBoxInputConnector *cc;
+ cc = this->bbGetInputConnectorMap().find( nameInput.c_str() )->second;
+ if (cc->GetConnection()!=NULL)
+ {
+ cc->GetConnection()->GetBlackBoxFrom()->bbUserOnShow();
+ }
+ }
+
} // EO namespace bbtk