&& !myPort->Node()->IsMacro())
popup->insertItem(tr("ITM_COPY_PORT"), this, SLOT(copy()));
-//int anItem = popup->insertItem(tr("MSG_BROWSE"), this, SLOT(browse()));
+ /*int anItem = */popup->insertItem(tr("MSG_BROWSE"), this, SLOT(browse()));
// if (getEngine()->IsLinked())
// popup->setItemEnabled(anItem, getEngine()->State() == SUPERV_Ready);
// else
void SUPERVGUI_CanvasPortOut::sync()
{
+ /* asv : 26.01.05 : Bug PAL7164 : sometimes CanvasPortOut::sync() is called twice (or maybe even more)
+ by mistake. It happens because of incorrect Qt events, or other reason, but it is not a
+ stable feature (bug). Adding an object in the study in sync() is therefore called more than once
+ which is a BUG. I decided to move call to putDataStudy() method to Event handling function.
+ When a node successfully finishes execution - check the ports and put out-value to study,
+ if the corresponding flag is set.
bool ok = getEngine()->State() == SUPERV_Ready;
if (ok && myInStudy) {
myInStudy = getMain()->putDataStudy(getEngine(), STUDY_PORT_OUT);
}
+ */
SUPERVGUI_CanvasPort::update();
}
#include "SUPERVGUI_Notification.h"
#include "SUPERVGUI_Information.h"
#include "SUPERVGUI_CanvasControlNode.h"
+#include "SUPERVGUI_CanvasPort.h"
#include <qvalidator.h>
#include <qlayout.h>
/**
* Called by thread when dataflow is executing
*/
-void SUPERVGUI_Main::execute(char * theNodeName, SUPERV::GraphState theNodeState) {
+void SUPERVGUI_Main::execute( char * theNodeName, SUPERV::GraphState theNodeState ) {
if (myCurrentView == CANVAS || myCurrentView == CONTROLFLOW) {
SUPERVGUI_CanvasNode* aNode = (SUPERVGUI_CanvasNode*) myCanvas->child(theNodeName, "SUPERVGUI_CanvasNode");
if ( aNode ) {
SUPERVGUI_CanvasCellNode* aNode = (SUPERVGUI_CanvasCellNode*) myArray->child(theNodeName, "SUPERVGUI_CanvasCellNode");
if (aNode) aNode->sync();
}
+
+ // asv : 26.01.05 : Bug PAL7164 : puting out-value to study if the "put_to_Study" flag is set on a
+ // CanvasPort the functionality was moved from SUPERVGUI_CanvasPortOut::sync() method please, see
+ // comment in that method for details.
+ if ( theNodeState == SUPERV::DoneState ) {
+ SUPERVGUI_CanvasNode* aNode = (SUPERVGUI_CanvasNode*) myCanvas->child(theNodeName, "SUPERVGUI_CanvasNode");
+ if ( aNode ) {
+ //cout << " *** theNode " << theNodeName << " received DONE_STATE *** " << endl;
+ SUPERVGUI_CanvasPortOut* aPortOut;
+ QObjectList* aPortList = aNode->queryList("SUPERVGUI_CanvasPortOut");
+ QObjectListIt aPortIt(*aPortList);
+ while ((aPortOut=(SUPERVGUI_CanvasPortOut*)aPortIt.current()) != 0) {
+ ++aPortIt;
+ if ( aPortOut->isInStudy() && aPortOut->getEngine()->State() == SUPERV::ReadyState ) {
+ //cout << " *** " << theNodeName << "[" << aPortOut->name() << "]--> goes into study *** " << endl;
+ putDataStudy( aPortOut->getEngine(), STUDY_PORT_OUT );
+ }
+ }
+ delete aPortList;
+ }
+ //else //normal case if Node is not found is when node is a graph! it can receive DoneState as well!
+ // MESSAGE( "ERROR in SUPERVGUI_Main::execute() : CanvasNode \"" << theNodeName << "\" NOT FOUND in myCanvas" );
+ }
}