#ifndef SUPERVGUI_Main_H
#define SUPERVGUI_Main_H
-//#include "SUPERVGUI.h"
#include "SUPERVGraph_ViewFrame.h"
-#include "SUPERVGUI_Array.h"
-#include "SUPERVGUI_Graph.h"
#include "QAD_Desktop.h"
-#include "SUPERVGUI_Port.h"
+#include "SUPERVGUI_Canvas.h"
+#include "SUPERVGUI_CanvasView.h"
+#include "SUPERVGUI_ArrayView.h"
+
+#include <qobject.h>
+#include <qapplication.h>
+#include <qthread.h>
class QAD_Study;
class QAD_ObjectBrowser;
class QAD_Message;
+class QAD_SpinBoxDbl;
+class QLineEdit;
+class QComboBox;
class NOTIFICATION_Consumer;
-
+class SUPERVGUI_Thread;
class SUPERVGUI_Main: public SUPERVGraph_View {
Q_OBJECT
+ // asv : 18.11.04 : making Thread class a friend in order to allow it to modify
+ // a private field myGUIEventLoopFinished
+ friend class SUPERVGUI_Thread;
+
public:
- SUPERVGUI_Main(SUPERVGraph_ViewFrame*, QAD_Desktop*, bool fromIOR);
- SUPERVGUI_Main(SUPERVGraph_ViewFrame*, QAD_Desktop*, bool isModify, const char* filename);
SUPERVGUI_Main(SUPERVGraph_ViewFrame*, QAD_Desktop*, SUPERV_Graph);
virtual ~SUPERVGUI_Main();
- void run();
- void startExecute();
+ void run( const bool andSuspend );
void kill();
void suspendResume();
- void stopRestart();
- bool exportDataflow(QString theFile);
+ //void stopRestart();
+ void openSubGraph(SUPERV_CNode theNode, bool correct = false);
bool putDataStudy(SUPERV_Port port, const char* inout);
- void setData(SUPERVGUI_PortIn* p);
- SUPERVGUI_Graph* getGraph();
- SUPERVGUI_Array* getArray();
+ SUPERVGUI_CanvasArray* getCanvasArray();
+ SUPERVGUI_ArrayView* getArrayView();
+ SUPERVGUI_Canvas* getCanvas();
+ SUPERVGUI_CanvasView* getCanvasView();
SUPERV_Graph getDataflow();
QAD_Message* getMessage();
QAD_Study* getStudy();
QString getHashCode()
{ return myHashCode; };
-
+
+ bool isDataflowInStudy() const;
bool isEditable()
{ if (SUPERV_isNull(dataflow)) return false;
return !dataflow->IsReadOnly(); };
- bool isFromStudy() { return myIsFromStudy; }
- void setAsFromStudy(bool theToStudy);
- void checkIsInStudy();
-
void addComputeNode(SUPERV_CNode theNode);
- void addControlNode(SUPERV_CNode theStartNode, SUPERV_CNode theEndNode);
+ void addControlNode(SUPERV_CNode theStartNode, SUPERV_CNode theEndNode, bool Update);
void addGOTONode(SUPERV_CNode theNode);
+ void addMacroNode(SUPERV_CNode theNode);
void setPaletteBackgroundColor(const QColor& color);
void lockedGraph(bool theLock) { myIsLocked = theLock; }
bool isLocked() { return myIsLocked; }
+ SUPERV::GraphState getNodeExecState();
+ void setNodeExecState(SUPERV::GraphState theNodeExecState);
+
+ QPtrList< char * > getEventNodes();
+ void setEventNodes(QPtrList< char * > theEventNodes);
+ bool removeFirstEN() { return myEventNodes.removeFirst(); }
+ void removeEventNodes() { myEventNodes.clear(); }
+
+ QPtrList< SUPERV::GraphState > getStates();
+ void setStates(QPtrList< SUPERV::GraphState > theStates);
+ bool removeFirstS() { return myStates.removeFirst(); }
+ void removeStates() { myStates.clear(); }
+
+ int getNodesNumber();
+ SUPERVGUI_Thread* getMyThread();
+
+ void startTimer();
+ void executionFinished();
+
+ bool eventFilter( QObject* o, QEvent* e);
+
+ void Editing(); // any Editing operation is to be performed ->
+ // activate Editors data model in Engine
+ bool ReadyToModify(); // must be called before any modification
+ // operation - asks to kill execution of dataflow. If returns false -
+ // modification (==Editing() ) is not allowed.
+
+ void removeArrayChild(SUPERV::CNode_ptr theNode);
+
+ GraphViewType getViewType() { return myCurrentView; }
+
+ signals:
+ void KillMyThread(bool theValue);
+
public slots:
- void execute();
+ void execute(char * theNodeNode, SUPERV::GraphState theNodeState);
void sync();
void syncAsync();
- bool addStudy();
+ void addDataflowToStudy();
void insertFile();
void addNode();
void changeInformation();
void copy();
- void showTable();
- void showFullGraph();
+
+ void showCanvasTable();
void showContolFlow();
+ void showCanvas();
+
void filterNotification();
+ void changeDSGraphParameters();
+ void onSubGraphClosed(QAD_StudyFrame* );
+ void onSubGraphActivated(QAD_StudyFrame* );
private slots:
void chooseData(QListViewItem* item);
+ void checkExecution();
private:
void init(QAD_Desktop* parent);
- void StartTimer(const char* m);
- void StopTimer(const char* m);
void syncNotification();
bool isFiltered(char* graph, char* node, char* type, char* message, char* sender, long counter, char* date, long stamp);
+ void closeEvent(QCloseEvent*);
SUPERV_Graph dataflow;
+
+ QMap<QString, QAD_StudyFrame*> mySubGraphs;
+ QMap<QString, QString> mySubGraphMap;
+ QAD_StudyFrame* myLastGraph;
+
QAD_Study* study;
QAD_ObjectBrowser* objectBrowser;
QAD_Message* message;
- SUPERVGUI_Graph* graph;
- QTimer* timer;
- GraphViewType myCurrentView;
- SUPERVGUI_Array* array;
+ GraphViewType myCurrentView;
+ SUPERVGUI_CanvasArray* myArray;
+ SUPERVGUI_ArrayView* myArrayView;
+ SUPERVGUI_Canvas* myCanvas;
+ SUPERVGUI_CanvasView* myCanvasView;
- bool choosing;
- SUPERVGUI_PortIn* portIn;
+ bool choosing;
- QString myHashCode;
+ QString myHashCode;
- bool myIsFromStudy;
- int myCopyNum;
+ bool myIsFromStudy;
+ int myCopyNum;
- SALOME_NamingService* myNService;
- QDateTime myRunTime; // mpv 23.12.2002: we need time of running of dataflow
- // for right Study document modification
+ SALOME_NamingService* myNService;
+ QDateTime myRunTime; // mpv 23.12.2002: we need time of running of dataflow
+ // for correct Study document modification
/* notification data */
- NOTIFICATION_Consumer* notification;
- bool myFiltered;
- bool myLogged;
- QString myLogFileName;
- FILE* myLogFile;
- bool myWarning;
- bool myStep;
- bool myTrace;
- bool myVerbose;
- bool myIsKilled;
- bool myIsLocked;
+ NOTIFICATION_Consumer* notification;
+ bool myFiltered;
+ bool myLogged;
+ QString myLogFileName;
+ FILE* myLogFile;
+ bool myWarning;
+ bool myStep;
+ bool myTrace;
+ bool myVerbose;
+ bool myIsLocked;
+
+ SUPERVGUI_Thread* myThread;
+
+ QPtrList< char * > myEventNodes ;
+ QPtrList< SUPERV::GraphState > myStates ;
+ QTimer* myTimer;
+};
+
+class SUPERVGUI_Thread : public QObject, public QThread {
+ Q_OBJECT;
+ public:
+ SUPERVGUI_Thread();
+ ~SUPERVGUI_Thread();
+
+ void startThread(const char* m);
+ void setMain(SUPERVGUI_Main* theMain);
+
+ public slots:
+ void KillThread(bool theValue);
+
+ protected:
+ void run();
+
+ private:
+ bool myIsActive;
+ SUPERVGUI_Main* myMain;
+ QMutex myMutex;
+
+};
+
+/**
+ * A dialog for setting Graph execution parameters
+ */
+class SUPERVGUI_DSGraphParameters: public QDialog {
+ Q_OBJECT
+
+ public:
+ SUPERVGUI_DSGraphParameters(SUPERV_Graph theGraph, bool isReadOnly);
+ virtual ~SUPERVGUI_DSGraphParameters();
+
+ private slots:
+ void accept();
+
+ private:
+
+ void setData();
+
+ QAD_SpinBoxDbl* myDeltaTime;
+ QLineEdit* myTimeOut;
+ QComboBox* myDataStreamTrace;
+
+ SUPERV_Graph myGraph;
};
#endif