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

Private GIT Repository
nearly finished GroupBlock VHDL gen
[blast.git] / SourceItem.h
1 #ifndef __SOURCEITEM_H__
2 #define __SOURCEITEM_H__
3
4 #include <iostream>
5
6 #include <QtCore>
7 #include <QtGui>
8 #include <QtXml>
9 #include <QtXmlPatterns>
10
11
12 #include "AbstractBoxItem.h"
13 class AbstractBoxItem;
14
15 class Parameters;
16 class Dispacther;
17
18 #include "Exception.h"
19
20 using namespace std;
21 using namespace Qt;
22
23 /*!
24  * \brief The SourceItem class
25  * A SourceItem represents a special type of block that is added only
26  * to the top scene, in order to simulate inputs on the FPGA input
27  * pins. This, the reference block used as a source must be chosen
28  * among blocks that have no inputs and only outputs (with multiplicity
29  * = 1)
30  */
31 class SourceItem : public AbstractBoxItem {
32
33 public:
34   SourceItem(AbstractBlock *_refBlock, Dispatcher *_dispatcher, Parameters *_params) throw(Exception);
35   SourceItem(Dispatcher *_dispatcher, Parameters *_params) throw(Exception);
36   ~SourceItem();
37
38   void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0);  
39
40   // testers
41   bool isSourceItem();
42
43   // others
44   void nameChanged();
45   void moveTo(QPointF dest);
46   void load(QDomElement funcElement) throw(Exception);
47   void save(QXmlStreamWriter& writer);
48
49 protected:
50
51   void updateMinimumSize(); // modify the minimum size
52   bool updateGeometry(ChangeType type); // modify the originPoint and the total dimension
53
54   void mousePressEvent(QGraphicsSceneMouseEvent *event);
55   void mouseReleaseEvent(QGraphicsSceneMouseEvent *event);
56   void mouseMoveEvent(QGraphicsSceneMouseEvent *event);
57   void contextMenuEvent(QGraphicsSceneContextMenuEvent *event);
58   void hoverMoveEvent( QGraphicsSceneHoverEvent *event);  
59   
60 };
61
62 #endif // __SOURCEITEM_H__