nodeeditor_doxy
src/Impl/nodeitem.h
Go to the documentation of this file.
00001 //dw
00002 #ifndef NodeItem_H
00003 #define NodeItem_H
00004 
00005 #include <QGraphicsPixmapItem>
00006 #include <QList>
00007 
00008 //dw
00009 #include <QGraphicsObject>
00010 #include <QtGui>
00011 #include "nodeconnector.h"
00012 #include "nodeconnection.h"
00013 //dw new
00014 #include "diagramscene.h"
00015 
00016 QT_BEGIN_NAMESPACE
00017 class QPixmap;
00018 class QGraphicsItem;
00019 class QGraphicsScene;
00020 class QTextEdit;
00021 class QGraphicsSceneMouseEvent;
00022 class QMenu;
00023 class QGraphicsSceneContextMenuEvent;
00024 class QPainter;
00025 class QStyleOptionGraphicsItem;
00026 class QWidget;
00027 class QPolygonF;
00028 /*//dw
00029 class QGraphicsProxyWidget;*/
00030 QT_END_NAMESPACE
00031 
00032 class NodeConnector;
00033 class NodeConnection;
00034 
00036 class NodeItem : public /*QGraphicsPolygonItem //dw*/ /*QFrame*/ /*QGraphicsProxyWidget*/ QGraphicsObject
00037 {
00038         Q_OBJECT
00039 public:
00040     enum { Type = UserType + 666 + 1 };
00041         int type() const
00042         { return Type;}
00043 
00044     NodeItem(QMenu *contextMenu, QGraphicsItem *parent = 0, QGraphicsScene *scene = 0, Qt::WindowFlags wFlags = 0);
00045         virtual ~NodeItem();
00046     void deleteConnections();
00047 
00048         void addConnector(NodeConnector* nc);
00049 
00050 
00051         //dw
00052         void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget);
00053         //void setWidget(QWidget *widget);
00054 
00055         QRectF boundingRect() const;
00056         QPainterPath shape() const;
00057 
00058         //void update(const QRectF & rect = QRectF());
00059 
00060         QList<NodeConnector *> connectors;
00061 
00062         /*
00063         public slots:
00064                 void deleted();
00065                 void deleted(int result);
00066 
00067                 //dw try overriding QWidget slot
00068                 void hide();
00069                 */
00070 
00071 /*
00072 void    accepted ()
00073 void    finished ( int result )
00074 void    rejected ()
00075 */
00076 
00077 //dw666 orig:   QList<NodeConnector *> connectors;
00078 
00079 protected:
00080     void contextMenuEvent(QGraphicsSceneContextMenuEvent *event);
00081     QVariant itemChange(GraphicsItemChange change, const QVariant &value);
00082 
00083         /*//dw FIXME
00084         void mousePressEvent(QGraphicsSceneMouseEvent *mouseEvent);
00085         void mouseMoveEvent(QGraphicsSceneMouseEvent *mouseEvent);
00086         void mouseReleaseEvent(QGraphicsSceneMouseEvent *mouseEvent);
00087 
00088         bool shouldMoveNode(QGraphicsSceneMouseEvent *mouseEvent);
00089         //const static QStringList shouldNotMoveTypes << "foo" << "bar";
00090         //const static char* shouldNotMoveTypes = {};
00091         const static char* shouldMoveOnClickTypes[];
00092         */
00093 
00094 
00095         void hoverMoveEvent ( QGraphicsSceneHoverEvent * event );
00096 
00097 
00098         bool mControlResizeHandles;
00099         bool mNoResize;
00100 
00101         /*//dw FIXME:only proxified
00102         //dw 669: new
00103         void resizeEvent ( QGraphicsSceneResizeEvent * event );
00104         */
00105 
00106 
00107 private:
00108     QMenu *mContextMenu;
00109 
00110 
00111 
00112         void updateConnectorsPos();
00113 
00114         bool isMoving;
00115 
00116         void removeWigetFromConnectors();
00117 
00118         void debugPaint(QPainter *painter);
00119 
00120         int mMaxRadius;
00121 
00122 
00123 };
00124 
00125 
00127 
00128 
00129 #endif