| /* |
| |
| Permission is hereby granted, free of charge, to any person |
| obtaining a copy of this software and associated documentation |
| files (the "Software"), to deal in the Software without |
| restriction, including without limitation the rights to use, |
| copy, modify, merge, publish, distribute, sublicense, and/or sell |
| copies of the Software, and to permit persons to whom the |
| Software is furnished to do so, subject to the following |
| conditions: |
| |
| The above copyright notice and this permission notice shall be |
| included in all copies or substantial portions of the Software. |
| |
| THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, |
| EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES |
| OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND |
| NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT |
| HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, |
| WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING |
| FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR |
| OTHER DEALINGS IN THE SOFTWARE. |
| */ |
| #ifndef EXPLORERSCENE_H |
| #define EXPLORERSCENE_H |
| |
| #include <QGraphicsScene> |
| |
| #include "logicunit.h" |
| #include "diagramtextitem.h" |
| |
| QT_BEGIN_NAMESPACE |
| class QGraphicsSceneMouseEvent; |
| class QMenu; |
| class QPointF; |
| class QGraphicsLineItem; |
| class QFont; |
| class QGraphicsTextItem; |
| class QColor; |
| QT_END_NAMESPACE |
| |
| |
| class ExplorerScene : public QGraphicsScene |
| { |
| Q_OBJECT |
| |
| public: |
| enum Mode { InsertItem, InsertLine, InsertText, MoveItem }; |
| |
| ExplorerScene(QMenu *itemMenu, QObject *parent = 0); |
| QFont font() const |
| { return myFont; } |
| QColor textColor() const |
| { return myTextColor; } |
| QColor itemColor() const |
| { return myUnitColor; } |
| QColor lineColor() const |
| { return myLineColor; } |
| void setLineColor(const QColor &color); |
| void setTextColor(const QColor &color); |
| void setItemColor(const QColor &color); |
| void setFont(const QFont &font); |
| LogicUnit *addLogicUnit(QString name, LogicUnit::UnitType type,QPointF position); |
| bool addConnection(LogicUnit *startUnit, LogicUnit *endUnit); |
| |
| |
| |
| public slots: |
| void setMode(Mode mode); |
| void setUnitType(LogicUnit::UnitType type); |
| void editorLostFocus(DiagramTextItem *item); |
| |
| signals: |
| void itemInserted(LogicUnit *item); |
| void textInserted(QGraphicsTextItem *item); |
| void itemSelected(QGraphicsItem *item); |
| |
| protected: |
| void mousePressEvent(QGraphicsSceneMouseEvent *mouseEvent); |
| void mouseMoveEvent(QGraphicsSceneMouseEvent *mouseEvent); |
| void mouseReleaseEvent(QGraphicsSceneMouseEvent *mouseEvent); |
| |
| private: |
| bool isItemChange(int type); |
| |
| LogicUnit::UnitType myUnitType; |
| QMenu *myUnitMenu; |
| Mode myMode; |
| bool leftButtonDown; |
| QPointF startPoint; |
| QGraphicsLineItem *line; |
| QFont myFont; |
| DiagramTextItem *textItem; |
| QColor myTextColor; |
| QColor myUnitColor; |
| QColor myLineColor; |
| }; |
| |
| |
| #endif |