]> AND Private Git Repository - blast.git/blobdiff - GroupScene.h
Logo AND Algorithmique Numérique Distribuée

Private GIT Repository
add graph modif, progress on vhdl generation
[blast.git] / GroupScene.h
index e7b42ecb1c008c792920891b3ed8e1b25223ed15..e32dd53509fde5a45c9e7be884e5b27cf5d57bdb 100644 (file)
@@ -11,6 +11,7 @@ class AbstractBlock;
 class GroupWidget;
 class GroupItem;
 class BoxItem;
 class GroupWidget;
 class GroupItem;
 class BoxItem;
+class SourceItem;
 class AbstractBoxItem;
 class ConnectionItem;
 class InterfaceItem;
 class AbstractBoxItem;
 class ConnectionItem;
 class InterfaceItem;
@@ -41,14 +42,17 @@ public:
      - AddGroup: while a new group (empty or from selected blocks) is created
      - ItemEdtion: can move/resize blocks/interfaces, remove blocks/interface/group, ...
    */
      - AddGroup: while a new group (empty or from selected blocks) is created
      - ItemEdtion: can move/resize blocks/interfaces, remove blocks/interface/group, ...
    */
-  enum EditMode { InitState, AddBlock, AddConnection, AddGroup, ItemEdition };
+  enum EditMode { InitState, AddConnection, ItemEdition };
 
   GroupScene(GroupScene* _parentScene, GroupWidget* _window, Dispatcher* _dispatcher, Parameters* _params, bool topScene = false, QObject *parent = 0);
   ~GroupScene();
 
 
   GroupScene(GroupScene* _parentScene, GroupWidget* _window, Dispatcher* _dispatcher, Parameters* _params, bool topScene = false, QObject *parent = 0);
   ~GroupScene();
 
+  //void mouseMoveEvent(QGraphicsSceneMouseEvent *event);
+
   // attributes getters
   inline GroupItem* getGroupItem() {return groupItem;}
   // attributes getters
   inline GroupItem* getGroupItem() {return groupItem;}
-  inline QList<BoxItem*> getBlockItems() { return blockItems; }
+  inline QList<BoxItem*> getBoxItems() { return boxItems; }
+  inline QList<SourceItem*> getSourceItems() { return sourceItems; }
   inline QList<ConnectionItem*> getConnectionItems() { return connectionItems; }
   inline QList<GroupScene*> getChildrenScene() { return childrenScene; }
   inline GroupScene* getParentScene() { return parentScene; }
   inline QList<ConnectionItem*> getConnectionItems() { return connectionItems; }
   inline QList<GroupScene*> getChildrenScene() { return childrenScene; }
   inline GroupScene* getParentScene() { return parentScene; }
@@ -67,25 +71,34 @@ public:
   // attributes testers
   inline bool isTopScene() { return topScene; }
 
   // attributes testers
   inline bool isTopScene() { return topScene; }
 
-
   // others  
   // others  
-  BoxItem* createBlockItem(AbstractBlock* block);
-  void addBlockItem(BoxItem* item);
-  void removeBlockItem(BoxItem* item);
+  
+  // BoxItem related
+  BoxItem* createBoxItem(AbstractBlock* block); //! create a new BoxItem and place it at the center of the scene
+  void addBoxItem(BoxItem* item); //! add an already configured BoxItem in the scene.
+  void removeBoxItem(BoxItem* item);
+  
+  // ConnectionItem related
   void createConnectionItem(InterfaceItem* iface1, InterfaceItem* iface2);
   ConnectionItem* searchConnectionItem(InterfaceItem* iface1, InterfaceItem* iface2);
   void addConnectionItem(ConnectionItem* item);
   void removeConnectionItem(ConnectionItem* item);
   void createConnectionItem(InterfaceItem* iface1, InterfaceItem* iface2);
   ConnectionItem* searchConnectionItem(InterfaceItem* iface1, InterfaceItem* iface2);
   void addConnectionItem(ConnectionItem* item);
   void removeConnectionItem(ConnectionItem* item);
+  
+  // GroupItem related
   void removeGroupItem();
   void removeGroupItem();
+  
+  // SourceItem related
+  SourceItem* createSourceItem(AbstractBlock* block); //! create a new SourceItem and place it around the group item
+  void addSourceItem(SourceItem* item); //! add an already configured SourceItem in the scene.
+  void removeSourceItem(SourceItem* item);
+  
+  // child scenes related
   inline void addChildScene(GroupScene* child) { childrenScene.append(child); }
   inline void removeChildScene(GroupScene* child) { childrenScene.removeAll(child); }
   inline int getNbChildScene() { return childrenScene.size(); }
   void unselecteInterfaces();
   inline void addChildScene(GroupScene* child) { childrenScene.append(child); }
   inline void removeChildScene(GroupScene* child) { childrenScene.removeAll(child); }
   inline int getNbChildScene() { return childrenScene.size(); }
   void unselecteInterfaces();
-
-  QList<AbstractBoxItem*> getGroupAndBlocks();
-  QList<BoxItem *> getSelectedBlocks();
-
-  QList<ConnectionItem *> getInterfaceConnections(InterfaceItem *item);
+  
+  QList<BoxItem *> getSelectedBlocks();  
 
   int setItemsId(int countInit=1);
   int setInterfacesId(int countInit=1);
 
   int setItemsId(int countInit=1);
   int setInterfacesId(int countInit=1);
@@ -100,10 +113,11 @@ private:
   GroupScene* parentScene; // the parent scene, =NULL for top scene
   GroupWidget* window; // the GroupWindow that contains that scene
   int id;
   GroupScene* parentScene; // the parent scene, =NULL for top scene
   GroupWidget* window; // the GroupWindow that contains that scene
   int id;
-  GroupItem *groupItem; // mandatory to be an instance of GroupItem.
-  QList<ConnectionItem*> connectionItems;
-  QList<BoxItem*> blockItems;
-  QList<GroupScene*> childrenScene;
+  GroupItem *groupItem; //! for convenience, the group item is directly accessible via this attribute
+  QList<ConnectionItem*> connectionItems; //! for convenience, connections are directly accessible via this attribute
+  QList<BoxItem*> boxItems; //! for convenience, box items are directly accessible via this attribute
+  QList<SourceItem*> sourceItems; //! for convenience, box items are directly accessible via this attribute. Only usefull for top scene
+  QList<GroupScene*> childrenScene;//! for convenience, children scenes are directly accessible via this attribute
   bool topScene;
   EditMode editMode;
   InterfaceItem* selectedInterfaces[2]; // selected iface 1 in AddConnection mode
   bool topScene;
   EditMode editMode;
   InterfaceItem* selectedInterfaces[2]; // selected iface 1 in AddConnection mode