class Dispatcher;
class InterfaceItem;
+#include "Parameters.h"
class Parameters;
class AbstractBlock;
class GroupScene;
#define ABI_TO_BI(ptr) ((BoxItem*)ptr)
#define ABI_TO_GI(ptr) ((GroupItem*)ptr)
-#define ABI_TO_SI(ptr) ((SourceItem*)ptr)
+#define ABI_TO_SI(ptr) ((StimuliItem*)ptr)
class AbstractBoxItem : public QGraphicsItem {
public:
enum BorderType { NoBorder = 0, BorderEast, BorderNorth, BorderWest, BorderSouth, CornerSouthEast, Title};
- enum ChangeType { Resize = 0, InterfaceMove };
- enum LockType { NoLock = 0, Position = 1, Dimension = 2, Interfaces = 4, Names = 8};
+ enum ChangeType { Creation = 0, Resize, InterfaceMove };
- AbstractBoxItem(AbstractBlock *_refBlock, Dispatcher *_dispatcher, Parameters *_params, LockType _lock = NoLock, QGraphicsItem* parent = Q_NULLPTR);
- AbstractBoxItem(Dispatcher *_dispatcher, Parameters *_params, LockType _lock = NoLock, QGraphicsItem* parent = Q_NULLPTR);
+ static int NoLock;
+ static int Position;
+ static int Dimension;
+ static int Interfaces;
+ static int Names;
+
+ AbstractBoxItem(AbstractBlock *_refBlock, Dispatcher *_dispatcher, Parameters *_params, int _lock = NoLock, QGraphicsItem* parent = Q_NULLPTR);
+ AbstractBoxItem(Dispatcher *_dispatcher, Parameters *_params, int _lock = NoLock, QGraphicsItem* parent = Q_NULLPTR);
virtual ~AbstractBoxItem();
inline int getIfaceMargin() { return ifaceMargin; }
inline int getNameMargin() { return nameMargin; }
inline QPointF getOriginPoint() { return originPoint; }
+ inline int getMinimumBoxWidth() { return minimumBoxWidth; }
+ inline int getMinimumBoxHeight() { return minimumBoxHeight; }
// setters
void setRefBlock(AbstractBlock* _refBlock);
inline void setId(int _id){ id = _id; }
inline void setSelected(bool _selected) { selected = _selected; }
+ inline void setVisible(bool state) { visible = state; }
void setRstClkVisible(bool b);
void setWishboneVisible(bool b);
void setDimension(int x, int y);
+ inline void setWidth(int width) { boxWidth = width; }
+ inline void setHeight(int height) {boxHeight = height; }
inline void setCurrentInterface(InterfaceItem* iface) { currentInterface = iface; }
inline void setLock(int _lock) { lock = _lock; }
inline void lockPosition() { lock = lock | Position; }
// testers
virtual bool isBoxItem();
virtual bool isGroupItem();
- virtual bool isSourceItem();
+ virtual bool isStimuliItem();
+ inline bool isVisible() { return visible; }
inline bool isSelected() { return selected; }
inline bool isRstClkVisible(){ return rstClkVisible;}
inline bool isWishboneVisible(){ return wishboneVisible;}
InterfaceItem *searchInterfaceItemByRef(ConnectedInterface* ref);
InterfaceItem* getInterfaceItemFromCursor(qreal x, qreal y);
+ QRectF boundingRect() const;
+
protected:
Dispatcher *dispatcher;
Parameters *params;
int lock;
bool selected;
+ bool visible; //! true if the box is shown
bool rstClkVisible; //! true if clock/reset interfaces are visible
bool wishboneVisible; //! true if wishbone interfaces are visible
virtual void updateMinimumSize() = 0; // modify the minimum size
virtual bool updateGeometry(ChangeType type) = 0; // modify the originPoint and the total dimension
- QRectF boundingRect() const;
+
/* pure virtual method inherited from QGraphicsItem :
virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0) =0;
virtual QRectF boundingRect() const =0;
*/
- void initInterfaceItems();
+ void createInterfaceItems(Parameters::Direction posInputs = Parameters::West, Parameters::Direction posOutputs = Parameters::East, Parameters::Direction posBidirs = Parameters::South);
int nbInterfacesByOrientation(int orientation);
};