nodeeditor_doxy
src/Impl/diagramscene.h
Go to the documentation of this file.
00001 #ifndef DIAGRAMSCENE_H
00002 #define DIAGRAMSCENE_H
00003 
00004 #include <QGraphicsScene>
00005 
00006 //dw
00007 #include "NodeItem.h"
00008 #include "nodeconnection.h"
00009 #include "nodeconnector.h"
00010 
00011 QT_BEGIN_NAMESPACE
00012 class QGraphicsSceneMouseEvent;
00013 class QMenu;
00014 class QPointF;
00015 class QGraphicsLineItem;
00016 class QFont;
00017 class QGraphicsTextItem;
00018 class QColor;
00019 QT_END_NAMESPACE
00020 
00021 //dw new
00022 class NodeItem;
00023 
00025 class DiagramScene : public QGraphicsScene
00026 {
00027     Q_OBJECT
00028 
00029 public:
00030     enum Mode { InsertItem, InsertLine, InsertText, MoveItem, /*//dw*/ InsertNode, InsertNode2 };
00031 
00032     DiagramScene(QMenu *itemMenu, QObject *parent = 0);
00033     QColor lineColor() const
00034         { return mLineColor; }
00035     void setLineColor(const QColor &color);
00036 
00037         //dw new3: moved and ugly
00038         QMenu *mItemMenu;
00039 
00040 public slots:
00041     void setMode(Mode mode);
00042     //void setItemType(DiagramItem::DiagramType type);
00043     //void editorLostFocus(DiagramTextItem *item);
00044 
00045         void setDebugDraw(bool enabled = true);
00046         bool isDebugDraw() { return mDebugDraw; }
00047 
00048 signals:
00049     //void itemInserted(DiagramItem *item);
00050     //void textInserted(QGraphicsTextItem *item);
00051         //dw
00052         void nodeInserted(QGraphicsItem *item);
00053         void nodeItemInserted(NodeItem *item);
00054 
00055     void itemSelected(QGraphicsItem *item);
00056 
00057 protected:
00058     void mousePressEvent(QGraphicsSceneMouseEvent *mouseEvent);
00059     void mouseMoveEvent(QGraphicsSceneMouseEvent *mouseEvent);
00060     void mouseReleaseEvent(QGraphicsSceneMouseEvent *mouseEvent);
00061 
00062         QColor mLineColor;
00063         Mode mMode;
00064 private:
00065     bool isItemChange(int type);
00066 
00067     //DiagramItem::DiagramType mItemType;
00068     
00069     bool leftButtonDown;
00070     QPointF startPoint;
00071 
00072         NodeConnection* tmpArrow;
00073         NodeConnector* tmpConnector;
00074         NodeConnector* existingConnector;
00075         NodeConnector* lastHighlighted;
00076 
00077         bool mDebugDraw;
00078 };
00080 
00081 #endif