Salome HOME
Stream Links show
[modules/superv.git] / src / SUPERVGUI / SUPERVGUI_Main.h
index b274fa837231e3c2fd749efffc163bf2145ced8c..08692040f8072f66d921cc84aba2bdc8f257d265 100644 (file)
 #include "QAD_Desktop.h"
 #include "SUPERVGUI_Port.h"
 
+#include <qobject.h>
+#include <qapplication.h>
+#include <qthread.h>
+
 class QAD_Study;
 class QAD_ObjectBrowser;
 class QAD_Message;
 class NOTIFICATION_Consumer;
-
+class SUPERVGUI_Thread;
 
 class SUPERVGUI_Main: public SUPERVGraph_View {
   Q_OBJECT
@@ -87,7 +91,7 @@ class SUPERVGUI_Main: public SUPERVGraph_View {
     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 setPaletteBackgroundColor(const QColor& color);
@@ -95,8 +99,27 @@ class SUPERVGUI_Main: public SUPERVGraph_View {
     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();
+
   public slots:
-    void execute();
+    void execute(char * theNodeNode, SUPERV::GraphState theNodeState);
     void sync();
     void syncAsync();
     bool addStudy();
@@ -111,11 +134,10 @@ class SUPERVGUI_Main: public SUPERVGraph_View {
  
   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);
 
@@ -124,8 +146,7 @@ class SUPERVGUI_Main: public SUPERVGraph_View {
     QAD_ObjectBrowser*      objectBrowser;
     QAD_Message*            message;
     SUPERVGUI_Graph*        graph;
-    QTimer*                 timer;
-
+    
     GraphViewType   myCurrentView;
     SUPERVGUI_Array*   array;
 
@@ -152,6 +173,31 @@ class SUPERVGUI_Main: public SUPERVGraph_View {
     bool                   myVerbose;
     bool                   myIsKilled;
     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 stopThread(const char* m);
+  void setMain(SUPERVGUI_Main* theMain);
+
+ protected:
+  void run();
+
+ private:
+  bool                myIsActive;
+  SUPERVGUI_Main*     myMain;
+
 };
 
 #endif