#ifndef ELEMENTS_H #define ELEMENTS_H #include #include #include #include #include #include #include #include #include #include #include //#include //#include class EdgeItem; class NodeItem; class LineItem; class RectItem; class TextItemI; class PixmapItem; //QBrush *tb = 0; //QPen *tp = 0; //QBrush *db = 0; class EdgeItem:public QObject { Q_OBJECT public: EdgeItem( NodeItem*, NodeItem* ); EdgeItem( QDomElement el){el=el;}; virtual void setFromPoint( int x, int y ){x=x;y=y;}; virtual void setToPoint( int x, int y ){x=x;y=y;}; virtual void setPen ( const QPen & pen ) {ipen=pen;}; virtual void setFlag ( QGraphicsItem::GraphicsItemFlag flag, bool enabled = true ) {flag=flag;}; virtual void setBrush ( const QBrush & brush ) {ibrush=brush;}; virtual void setTabs( QTabWidget *properties){}; virtual bool block() {return block_;}; virtual void setBlock(bool s) {block_ = s;}; virtual void paintItem(int x, int y,QPainter *pp, qreal scale){}; virtual QDomElement toXml(QDomDocument doc){return QDomElement();}; NodeItem *from_node; NodeItem *to_node; // QSettings *conf; int item_type; bool block_; QPen ipen; QBrush ibrush; signals: void item_selected(EdgeItem *item); void position_changed(EdgeItem *item); }; class LineItem: public EdgeItem, public QGraphicsLineItem { public: LineItem( NodeItem*, NodeItem* ); LineItem( QDomElement el); virtual void setFromPoint( int x, int y ) ; virtual void setToPoint( int x, int y ); virtual void setPen ( const QPen & pen ) {EdgeItem::setPen(pen);QGraphicsLineItem::setPen(pen);}; virtual void setFlag ( QGraphicsItem::GraphicsItemFlag flag, bool enabled = true ) {QGraphicsLineItem::setFlag(flag, enabled);}; virtual void setBrush ( const QBrush & brush ) {ibrush=brush;}; virtual void setTabs( QTabWidget *properties); virtual QDomElement toXml(QDomDocument doc); virtual void paintItem(int x, int y, QPainter *pp, qreal scale); protected: QVariant itemChange(GraphicsItemChange change, const QVariant &value); }; class RectItem: public EdgeItem, public QGraphicsRectItem { public: RectItem( NodeItem*, NodeItem* ); RectItem( QDomElement el); virtual void setFromPoint( int x, int y ) ; virtual void setToPoint( int x, int y ); virtual void setPen ( const QPen & pen ) {EdgeItem::setPen(pen);QGraphicsRectItem::setPen(pen);}; virtual void setTabs( QTabWidget *properties); virtual void setFlag ( QGraphicsItem::GraphicsItemFlag flag, bool enabled = true ) {QGraphicsRectItem::setFlag(flag, enabled);}; virtual void setBrush ( const QBrush & brush ) {EdgeItem::setBrush(brush);QGraphicsRectItem::setBrush(brush);}; virtual QDomElement toXml(QDomDocument doc); virtual void paintItem(int x, int y,QPainter *pp, qreal scale); protected: QVariant itemChange(GraphicsItemChange change, const QVariant &value); }; class EllipseItem: public EdgeItem, public QGraphicsEllipseItem { public: EllipseItem( NodeItem*, NodeItem* ); EllipseItem( QDomElement el); virtual void setFromPoint( int x, int y ) ; virtual void setToPoint( int x, int y ); virtual void setPen ( const QPen & pen ) {EdgeItem::setPen(pen);QGraphicsEllipseItem::setPen(pen);}; virtual void setTabs( QTabWidget *properties); virtual void setFlag ( QGraphicsItem::GraphicsItemFlag flag, bool enabled = true ) {QGraphicsEllipseItem::setFlag(flag, enabled);}; virtual void setBrush ( const QBrush & brush ) {EdgeItem::setBrush(brush);QGraphicsEllipseItem::setBrush(brush);}; virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget); virtual QDomElement toXml(QDomDocument doc); virtual void paintItem(int x, int y,QPainter *pp, qreal scale); protected: QVariant itemChange(GraphicsItemChange change, const QVariant &value); }; class NodeItem: public QGraphicsRectItem { public: NodeItem(); ~NodeItem() {} void setInEdge( EdgeItem *edge ); void setOutEdge( EdgeItem *edge ) { outItem = edge ; } protected: QVariant itemChange(GraphicsItemChange change, const QVariant &value); void mousePressEvent ( QGraphicsSceneMouseEvent * event ); void mouseReleaseEvent ( QGraphicsSceneMouseEvent * event ); private: EdgeItem *inItem; EdgeItem *outItem; }; #endif