From 32a206d1b00a98d3b9591ae566f0e62028b081eb Mon Sep 17 00:00:00 2001 From: Juan64Bits Date: Thu, 21 Oct 2010 20:31:51 -0500 Subject: [PATCH] First commit for sie code generator project. --- Software/sie_cg/arrow.cpp | 347 +++++++ Software/sie_cg/arrow.h | 134 +++ Software/sie_cg/block_editor/arrow.cpp | 356 +++++++ Software/sie_cg/block_editor/arrow.h | 124 +++ Software/sie_cg/block_editor/diagramitem.o | Bin 0 -> 609248 bytes Software/sie_cg/block_editor/diagramscene.cpp | 430 ++++++++ Software/sie_cg/block_editor/diagramscene.h | 121 +++ Software/sie_cg/block_editor/diagramscene.pro | 30 + .../sie_cg/block_editor/diagramscene.pro.user | 245 +++++ Software/sie_cg/block_editor/diagramscene.qrc | 28 + .../sie_cg/block_editor/diagramtextitem.cpp | 165 ++++ .../sie_cg/block_editor/diagramtextitem.h | 118 +++ Software/sie_cg/block_editor/lineitem.cpp | 140 +++ Software/sie_cg/block_editor/lineitem.h | 96 ++ Software/sie_cg/block_editor/main.cpp | 55 ++ Software/sie_cg/block_editor/mainwindow.cpp | 413 ++++++++ Software/sie_cg/block_editor/mainwindow.h | 136 +++ Software/sie_cg/block_editor/test_block1.die | 18 + Software/sie_cg/block_editor/test_block2.die | 15 + Software/sie_cg/block_editor/test_block3.die | 15 + Software/sie_cg/block_editor/test_block4.die | 29 + Software/sie_cg/diagramitem.cpp | 295 ++++++ Software/sie_cg/diagramitem.h | 141 +++ Software/sie_cg/diagramscene.cpp | 545 ++++++++++ Software/sie_cg/diagramscene.h | 142 +++ Software/sie_cg/diagramscene.pro | 33 + Software/sie_cg/diagramscene.pro.user | 247 +++++ Software/sie_cg/diagramscene.qrc | 28 + Software/sie_cg/diagramtextitem.cpp | 162 +++ Software/sie_cg/diagramtextitem.h | 110 +++ Software/sie_cg/images/background1.png | Bin 0 -> 289 bytes Software/sie_cg/images/background2.png | Bin 0 -> 285 bytes Software/sie_cg/images/background3.png | Bin 0 -> 330 bytes Software/sie_cg/images/background4.png | Bin 0 -> 342 bytes Software/sie_cg/images/bold.png | Bin 0 -> 274 bytes Software/sie_cg/images/bringtofront.png | Bin 0 -> 514 bytes Software/sie_cg/images/delete.png | Bin 0 -> 3169 bytes Software/sie_cg/images/exit.png | Bin 0 -> 3082 bytes Software/sie_cg/images/floodfill.png | Bin 0 -> 282 bytes Software/sie_cg/images/italic.png | Bin 0 -> 247 bytes Software/sie_cg/images/linecolor.png | Bin 0 -> 145 bytes Software/sie_cg/images/linepointer.png | Bin 0 -> 141 bytes Software/sie_cg/images/lower1.png | Bin 0 -> 318 bytes Software/sie_cg/images/new.png | Bin 0 -> 1841 bytes Software/sie_cg/images/no.png | Bin 0 -> 831 bytes Software/sie_cg/images/open.png | Bin 0 -> 3062 bytes Software/sie_cg/images/pointer.png | Bin 0 -> 173 bytes Software/sie_cg/images/preview.png | Bin 0 -> 3253 bytes Software/sie_cg/images/raise1.png | Bin 0 -> 293 bytes Software/sie_cg/images/save.png | Bin 0 -> 2968 bytes Software/sie_cg/images/save_as.png | Bin 0 -> 3048 bytes Software/sie_cg/images/sendtoback.png | Bin 0 -> 430 bytes Software/sie_cg/images/textpointer.png | Bin 0 -> 753 bytes Software/sie_cg/images/underline.png | Bin 0 -> 250 bytes Software/sie_cg/images/yes.png | Bin 0 -> 2774 bytes Software/sie_cg/images/zoom_in.png | Bin 0 -> 3515 bytes Software/sie_cg/images/zoom_out.png | Bin 0 -> 3330 bytes Software/sie_cg/librarydialog.o | Bin 0 -> 246916 bytes Software/sie_cg/librarydialog.ui | 99 ++ Software/sie_cg/lineitem.cpp | 137 +++ Software/sie_cg/lineitem.h | 98 ++ Software/sie_cg/main.cpp | 55 ++ Software/sie_cg/mainwindow.cpp | 929 ++++++++++++++++++ Software/sie_cg/mainwindow.h | 220 +++++ Software/sie_cg/moc_librarydialog.cpp | 69 ++ Software/sie_cg/moc_librarydialog.o | Bin 0 -> 144780 bytes Software/sie_cg/test.sie | 41 + 67 files changed, 6366 insertions(+) create mode 100644 Software/sie_cg/arrow.cpp create mode 100644 Software/sie_cg/arrow.h create mode 100644 Software/sie_cg/block_editor/arrow.cpp create mode 100644 Software/sie_cg/block_editor/arrow.h create mode 100644 Software/sie_cg/block_editor/diagramitem.o create mode 100644 Software/sie_cg/block_editor/diagramscene.cpp create mode 100644 Software/sie_cg/block_editor/diagramscene.h create mode 100644 Software/sie_cg/block_editor/diagramscene.pro create mode 100644 Software/sie_cg/block_editor/diagramscene.pro.user create mode 100644 Software/sie_cg/block_editor/diagramscene.qrc create mode 100644 Software/sie_cg/block_editor/diagramtextitem.cpp create mode 100644 Software/sie_cg/block_editor/diagramtextitem.h create mode 100644 Software/sie_cg/block_editor/lineitem.cpp create mode 100644 Software/sie_cg/block_editor/lineitem.h create mode 100644 Software/sie_cg/block_editor/main.cpp create mode 100644 Software/sie_cg/block_editor/mainwindow.cpp create mode 100644 Software/sie_cg/block_editor/mainwindow.h create mode 100644 Software/sie_cg/block_editor/test_block1.die create mode 100644 Software/sie_cg/block_editor/test_block2.die create mode 100644 Software/sie_cg/block_editor/test_block3.die create mode 100644 Software/sie_cg/block_editor/test_block4.die create mode 100644 Software/sie_cg/diagramitem.cpp create mode 100644 Software/sie_cg/diagramitem.h create mode 100644 Software/sie_cg/diagramscene.cpp create mode 100644 Software/sie_cg/diagramscene.h create mode 100644 Software/sie_cg/diagramscene.pro create mode 100644 Software/sie_cg/diagramscene.pro.user create mode 100644 Software/sie_cg/diagramscene.qrc create mode 100644 Software/sie_cg/diagramtextitem.cpp create mode 100644 Software/sie_cg/diagramtextitem.h create mode 100644 Software/sie_cg/images/background1.png create mode 100644 Software/sie_cg/images/background2.png create mode 100644 Software/sie_cg/images/background3.png create mode 100644 Software/sie_cg/images/background4.png create mode 100644 Software/sie_cg/images/bold.png create mode 100644 Software/sie_cg/images/bringtofront.png create mode 100644 Software/sie_cg/images/delete.png create mode 100644 Software/sie_cg/images/exit.png create mode 100644 Software/sie_cg/images/floodfill.png create mode 100644 Software/sie_cg/images/italic.png create mode 100644 Software/sie_cg/images/linecolor.png create mode 100644 Software/sie_cg/images/linepointer.png create mode 100644 Software/sie_cg/images/lower1.png create mode 100644 Software/sie_cg/images/new.png create mode 100644 Software/sie_cg/images/no.png create mode 100644 Software/sie_cg/images/open.png create mode 100644 Software/sie_cg/images/pointer.png create mode 100644 Software/sie_cg/images/preview.png create mode 100644 Software/sie_cg/images/raise1.png create mode 100644 Software/sie_cg/images/save.png create mode 100644 Software/sie_cg/images/save_as.png create mode 100644 Software/sie_cg/images/sendtoback.png create mode 100644 Software/sie_cg/images/textpointer.png create mode 100644 Software/sie_cg/images/underline.png create mode 100644 Software/sie_cg/images/yes.png create mode 100644 Software/sie_cg/images/zoom_in.png create mode 100644 Software/sie_cg/images/zoom_out.png create mode 100644 Software/sie_cg/librarydialog.o create mode 100644 Software/sie_cg/librarydialog.ui create mode 100644 Software/sie_cg/lineitem.cpp create mode 100644 Software/sie_cg/lineitem.h create mode 100644 Software/sie_cg/main.cpp create mode 100644 Software/sie_cg/mainwindow.cpp create mode 100644 Software/sie_cg/mainwindow.h create mode 100644 Software/sie_cg/moc_librarydialog.cpp create mode 100644 Software/sie_cg/moc_librarydialog.o create mode 100644 Software/sie_cg/test.sie diff --git a/Software/sie_cg/arrow.cpp b/Software/sie_cg/arrow.cpp new file mode 100644 index 0000000..fa4634a --- /dev/null +++ b/Software/sie_cg/arrow.cpp @@ -0,0 +1,347 @@ +/**************************************************************************** +** +** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial Usage +** Licensees holding valid Qt Commercial licenses may use this file in +** accordance with the Qt Commercial License Agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Nokia. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** If you have questions regarding the use of this file, please contact +** Nokia at qt-info@nokia.com. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include + +#include "arrow.h" +#include + +const qreal Pi = 3.14; + +Arrow::Arrow(DiagramTextItem *startItem, DiagramTextItem *endItem, + QGraphicsItem *parent, QGraphicsScene *scene) + : QGraphicsPathItem(parent, scene) +{ + myStartItem = startItem; + myEndItem = endItem; + arrowSize = 10; + moving=0; + //setFlag(QGraphicsItem::ItemIsMovable, true); + setFlag(QGraphicsItem::ItemIsSelectable, true); + myColor = Qt::black; + setPen(QPen(myColor, 2, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin)); + myOwnerScene = scene; + lineItem *newLine= new lineItem(QPointF(0,0),QPointF(0,0),this); + myOwnerScene->addItem(newLine); + addLine(newLine); +} + +void Arrow::removeLine(lineItem *line) +{ + int index = myLines.indexOf(line); + int cIndex = myCLines.indexOf(line); + if(cIndex!=-1) index = cIndex; //Prevent segmentation fault + + if (index != -1){ + //Adjust the corners + if(myLines.count()>1) + { + if(index==0) + { + myCorners.removeAt(0); + myOwnerScene->removeItem(myCLines.at(0)); + myCLines.removeAt(0); + } + else if(index>0) + { + myCorners.removeAt(index-1); + myOwnerScene->removeItem(myCLines.at(index-1)); + myCLines.removeAt(index-1); + } + } + myLines.removeAt(index); + } + + //If lines is empty the arrow is removed + if (myLines.isEmpty()) + { + this->startItem()->ownerItem()->removeArrow(this); + this->endItem()->ownerItem()->removeArrow(this); + this->myOwnerScene->removeItem(this); + } +} + +void Arrow::removeLines() +{ + foreach (lineItem *line, myLines) { + scene()->removeItem(line); + delete line; + } + foreach (lineItem *line, myCLines) { + scene()->removeItem(line); + delete line; + } +} + +bool Arrow::addLine(lineItem *line) +{ + myLines.append(line); + return 1; +} + +QRectF Arrow::boundingRect() const +{ + qreal extra = (pen().width() + arrowSize*2) / 2.0; + + return QGraphicsPathItem::boundingRect() + .normalized() + .adjusted(-extra, -extra, extra, extra); +} + +QPainterPath Arrow::shape() const +{ + QPainterPath path = QGraphicsPathItem::shape(); + return path; //FIXME, Arrow heads must to be include +} + +void Arrow::updatePosition() +{ + QPainterPath myPath; + myPath.moveTo(myStartItem->ownerItem()->pos()+myStartItem->offset()+ + QPointF(arrowSize,0)); + if(!myCorners.isEmpty()) + foreach(QPointF corner, myCorners){ + myPath.lineTo(corner); + } + myPath.lineTo(myEndItem->ownerItem()->pos()+myEndItem->offset()- + QPointF(arrowSize,0)); + + setPath(myPath); + +} +//! [3] + +void Arrow::paint(QPainter *painter, const QStyleOptionGraphicsItem *, + QWidget *) +{ + QPen myPen = pen(); + myPen.setColor(myColor); + painter->setPen(myPen); + painter->setBrush(myColor); + + QPointF endPos=myEndItem->ownerItem()->pos()+myEndItem->offset()- + QPointF(arrowSize,0); + QPointF startPos=myStartItem->ownerItem()->pos()+myStartItem->offset()+ + QPointF(arrowSize,0); + + if(myCorners.isEmpty()) + { + myLines.first()->setLine(QLineF(startPos,endPos)); + } + else + { + myLines.first()->setLine(QLineF(startPos,myCorners.first())); + for(int i=0; isetLine(QLineF(myCorners.at(i),myCorners.at(i+1))); + myLines.last()->setLine(QLineF(myCorners.last(),endPos)); + } + + //Drawing arrow selected + for(int i=0; isetPen(QPen(Qt::gray, 2, Qt::SolidLine)); + QLineF myLine = myLines.at(i)->line(); + painter->drawLine(myLine); + foreach (lineItem *line, myLines) { line->setColor(Qt::gray);} + foreach (lineItem *line, myCLines) { line->setColor(Qt::gray);} + } + else + { + foreach (lineItem *line, myLines) { line->setColor(myColor);} + foreach (lineItem *line, myCLines) { line->setColor(myColor);} + } + + //End arrow head + QPointF arrowP1=QPointF(endPos+QPointF(0,arrowSize)); + QPointF arrowP2=QPointF(endPos+QPointF(0,-arrowSize)); + + arrowHeadEnd.clear(); + arrowHeadEnd << endPos+QPointF(arrowSize,0) << arrowP1 << arrowP2; + + painter->drawPolygon(arrowHeadEnd); + //Start arrow head + arrowP1=QPointF(startPos+QPointF(-arrowSize,arrowSize)); + arrowP2=QPointF(startPos+QPointF(-arrowSize,-arrowSize)); + + arrowHeadStart.clear(); + arrowHeadStart << startPos << arrowP1 << arrowP2; + painter->drawPolygon(arrowHeadStart); + + //Set visible corners + bool anySelected = 0; + + foreach(lineItem *line,myLines){ if(line->isSelected())anySelected=1;} + foreach(lineItem *line,myCLines){ if(line->isSelected())anySelected=1;} + if(isSelected()) anySelected=1; + + if(anySelected) + setVisibleCorners(1); + else + setVisibleCorners(0); +} + +void Arrow::createCorner(QPointF cornerPos, lineItem *inLine) +{ + createCorner(cornerPos,myLines.indexOf(inLine)); +} + +void Arrow::createCorner(QPointF cornerPos, int index) +{ + if (index != -1) + { + myCorners.insert(index,cornerPos); + lineItem *newLine= new lineItem(QPointF(0,0),QPointF(0,0),this); + myOwnerScene->addItem(newLine); + newLine->setZValue(this->zValue()); + addLine(newLine); + newLine= new lineItem(cornerPos+QPointF(-0.5,-0.5) , + cornerPos+QPointF(0.5,0.5),this,6,1); + myOwnerScene->addItem(newLine); + newLine->setZValue(this->zValue()+0.1); + myCLines.insert(index,newLine); + } +} + +void Arrow::moveCorner(QPointF cornerPos, lineItem *inLine) +{ + int index = myCLines.indexOf(inLine); + + if (index != -1) + { + cornerPos=mapFromItem(inLine,cornerPos); + myCorners.replace(index,cornerPos); + updatePosition(); + } +} + +void Arrow::setVisibleCorners(bool visible) +{ + foreach (lineItem *line, myCLines) { + line->setVisible(visible); + } +} + +QDomElement Arrow::toXml(QDomDocument &document, + QList sceneItems) const +{ + QDomElement diagramArrow = document.createElement("Arrow"); + + //Set attibutes; startItem + diagramArrow.setAttribute("start-x",startOffset().x()); + diagramArrow.setAttribute("start-y",startOffset().y()); + diagramArrow.setAttribute("start-Owner", + sceneItems.indexOf(startOwner())); + diagramArrow.setAttribute("start-ID",this->startItem()->textID()); + + //Set attibutes; endItem + diagramArrow.setAttribute("end-x",endOffset().x()); + diagramArrow.setAttribute("end-y",endOffset().y()); + diagramArrow.setAttribute("end-Owner", + sceneItems.indexOf(endOwner())); + diagramArrow.setAttribute("end-ID",this->endItem()->textID()); + + diagramArrow.setAttribute("color",myColor.name()); + + //Corners list + int i=0; + if(!myCorners.isEmpty()) + { + QDomElement arrowCorners = document.createElement("arrowCorners"); + foreach(QPointF corner, myCorners) + { + QDomElement arrowCorner = document.createElement("arrowCorner"); + arrowCorner.setAttribute("x",corner.x()); + arrowCorner.setAttribute("y",corner.y()); + i++; + arrowCorners.appendChild(arrowCorner); + } + + diagramArrow.appendChild(arrowCorners); + } + return (diagramArrow); +} + +void Arrow::snapToGrid(QGraphicsSceneMouseEvent *event) +{ + //TODO implement polygon drag + QPointF diffPos= event->scenePos()-previousPos; + //Update corners: + for(int i=0; i < myCorners.count();i++) + { + myCLines.at(i)->setLine(QLineF(myCLines.at(i)->line().p1()+diffPos, + myCLines.at(i)->line().p2()+diffPos)); + QPointF itemPos = myCLines.at(i)->line().p1()+QPointF(0.5,0.5); + moveCorner(itemPos,myCLines.at(i)); + } + updatePosition(); +} + +void Arrow::mousePressEvent(QGraphicsSceneMouseEvent *event) +{ + //if(this->isSelected()) + { + previousPos = event->scenePos(); + moving=1; + } + QGraphicsPathItem::mousePressEvent(event); +} + +void Arrow::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) +{ + if(moving && isSelected()) + { + snapToGrid(event); + previousPos = event->scenePos(); + } + moving=0; + QGraphicsPathItem::mouseReleaseEvent(event); +} + +void Arrow::mouseMoveEvent(QGraphicsSceneMouseEvent *event) +{ + if(moving && isSelected()) + { + snapToGrid(event); + previousPos = event->scenePos(); + } + QGraphicsPathItem::mouseMoveEvent(event); +} diff --git a/Software/sie_cg/arrow.h b/Software/sie_cg/arrow.h new file mode 100644 index 0000000..5f8e2aa --- /dev/null +++ b/Software/sie_cg/arrow.h @@ -0,0 +1,134 @@ +/**************************************************************************** +** +** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial Usage +** Licensees holding valid Qt Commercial licenses may use this file in +** accordance with the Qt Commercial License Agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Nokia. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** If you have questions regarding the use of this file, please contact +** Nokia at qt-info@nokia.com. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef ARROW_H +#define ARROW_H + +#include +#include +#include "diagramtextitem.h" +#include "lineitem.h" +#include "diagramitem.h" + +QT_BEGIN_NAMESPACE +class QGraphicsPolygonItem; +class QGraphicsLineItem; +class QGraphicsPathItem; +class QGraphicsScene; +class QRectF; +class QGraphicsSceneMouseEvent; +class QPainterPath; +QT_END_NAMESPACE + +class lineItem; + +class Arrow : public QGraphicsPathItem +{ +public: + enum { Type = UserType + 32 }; + + Arrow(DiagramTextItem *startItem, DiagramTextItem *endItem, + QGraphicsItem *parent = 0, QGraphicsScene *scene = 0); + + int type() const + { return Type; } + QRectF boundingRect() const; + QPainterPath shape() const; + void setColor(const QColor &color) + { myColor=color; } + DiagramTextItem *startItem() const + { return myStartItem; } + DiagramTextItem *endItem() const + { return myEndItem; } + + void removeLine(lineItem *line); + void removeLines(); + bool addLine(lineItem *line); + + void createCorner(QPointF cornerPos, lineItem *inLine); + void createCorner(QPointF cornerPos, int index); + void moveCorner(QPointF cornerPos, lineItem *inLine); + + void setVisibleCorners(bool visible); + + void snapToGrid(QGraphicsSceneMouseEvent *event); + + QDomDocument toXmlFormat(); + + QPointF startOffset() const + { return myStartItem->offset();} + + QPointF endOffset() const + { return myEndItem->offset();} + + DiagramItem *startOwner() const + { return myStartItem->ownerItem();} + DiagramItem *endOwner() const + { return myEndItem->ownerItem();} + + QDomElement toXml(QDomDocument &,QList) const; + +public slots: + void updatePosition(); + +protected: + void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, + QWidget *widget = 0); + void mousePressEvent(QGraphicsSceneMouseEvent *event); + void mouseReleaseEvent(QGraphicsSceneMouseEvent *event); + void mouseMoveEvent(QGraphicsSceneMouseEvent *event); + +private: + DiagramTextItem *myStartItem; + DiagramTextItem *myEndItem; + QColor myColor; + QPolygonF arrowHeadEnd; + QPolygonF arrowHeadStart; + QList myLines; + QList myCLines; + QList myCorners; + QGraphicsScene *myOwnerScene; + qreal arrowSize; + bool moving; + QPointF previousPos; +}; + +#endif diff --git a/Software/sie_cg/block_editor/arrow.cpp b/Software/sie_cg/block_editor/arrow.cpp new file mode 100644 index 0000000..edfaef3 --- /dev/null +++ b/Software/sie_cg/block_editor/arrow.cpp @@ -0,0 +1,356 @@ +/**************************************************************************** +** +** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial Usage +** Licensees holding valid Qt Commercial licenses may use this file in +** accordance with the Qt Commercial License Agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Nokia. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** If you have questions regarding the use of this file, please contact +** Nokia at qt-info@nokia.com. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include + +#include "arrow.h" +#include "lineitem.h" +#include + +const qreal Pi = 3.14; + +Arrow::Arrow( QPointF startP,QPointF endP, + QGraphicsItem *parent, QGraphicsScene *scene) + : QGraphicsPathItem(parent, scene) +{ + startPoint=startP; + endPoint=endP; + arrowSize = 10; + moving=0; + //setFlag(QGraphicsItem::ItemIsMovable, true); + setFlag(QGraphicsItem::ItemIsSelectable, true); + myColor = Qt::black; + setPen(QPen(myColor, 2, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin)); + //setZValue(0.0); + myOwnerScene = scene; + lineItem *newLine= new lineItem(QPointF(0,0),QPointF(0,0),this); + myOwnerScene->addItem(newLine); + addLine(newLine); + + updatePosition(); +} + +void Arrow::removeLine(lineItem *line) +{ + int index = myLines.indexOf(line); + + if (index != -1){ + //Adjust the corners + if(myLines.count()>1) + { + if(index==0) + { + myCorners.removeAt(0); + myOwnerScene->removeItem(myCLines.at(0)); + myCLines.removeAt(0); + } + else if(index>0) + { + myCorners.removeAt(index-1); + myOwnerScene->removeItem(myCLines.at(index-1)); + myCLines.removeAt(index-1); + } + } + myLines.removeAt(index); + } + + //If lines is empty the arrow is removed + if (myLines.count()<3) + { + removeLines(); + myOwnerScene->removeItem(this); + } +} + +void Arrow::removeLines() +{ + foreach (lineItem *line, myLines) { + scene()->removeItem(line); + delete line; + } + foreach (lineItem *line, myCLines) { + scene()->removeItem(line); + delete line; + } + if(myOwnerScene->items().indexOf(SECLine)!=-1) + { + scene()->removeItem(SECLine); + delete SECLine; + } +} + +bool Arrow::addLine(lineItem *line) +{ + myLines.append(line); + return 1; +} + +QRectF Arrow::boundingRect() const +{ + qreal extra = (pen().width() + arrowSize*2) / 2.0; + + return QGraphicsPathItem::boundingRect() + .normalized() + .adjusted(-extra, -extra, extra, extra); +} + +QPainterPath Arrow::shape() const +{ + QPainterPath path = QGraphicsPathItem::shape(); + return path; +} + +void Arrow::updatePosition() +{ + QPainterPath myPath; + myPath.moveTo(startPoint); + if(!myCorners.isEmpty()) + foreach(QPointF corner, myCorners){ + myPath.lineTo(corner); + } + myPath.lineTo(endPoint); + + setPath(myPath); +} + +void Arrow::paint(QPainter *painter, const QStyleOptionGraphicsItem *, + QWidget *) +{ + //Update line positions + QPen myPen = pen(); + myPen.setColor(myColor); + painter->setPen(myPen); + painter->setBrush(myColor); + + QPointF endPos=endPoint; + QPointF startPos=startPoint; + + if(myCorners.isEmpty()) + { + myLines.first()->setLine(QLineF(startPos,endPos)); + } + else + { + myLines.first()->setLine(QLineF(startPos,myCorners.first())); + for(int i=0; isetLine(QLineF(myCorners.at(i),myCorners.at(i+1))); + myLines.last()->setLine(QLineF(myCorners.last(),endPos)); + } + + //Drawing arrow selected + for(int i=0; isetPen(QPen(Qt::gray, 2, Qt::SolidLine)); + QLineF myLine = myLines.at(i)->line(); + painter->drawLine(myLine); + foreach (lineItem *line, myLines) { line->setColor(Qt::gray);} + foreach (lineItem *line, myCLines) { line->setColor(Qt::gray);} + if(myOwnerScene->items().indexOf(SECLine)!=-1) + SECLine->setColor(Qt::gray); + } + else + { + foreach (lineItem *line, myLines) { line->setColor(myColor);} + foreach (lineItem *line, myCLines) { line->setColor(myColor);} + if(myOwnerScene->items().indexOf(SECLine)!=-1) + SECLine->setColor(myColor); + } + } + setSelectedArrows(); +} + +void Arrow::setSelectedArrows() +{ + bool anySelected = 0; + + foreach(lineItem *line,myLines){ if(line->isSelected())anySelected=1;} + foreach(lineItem *line,myCLines){ if(line->isSelected())anySelected=1;} + if(isSelected()) anySelected=1; + + if(anySelected) + setVisibleCorners(1); + else + setVisibleCorners(0); +} + +void Arrow::createCorner(QPointF cornerPos, lineItem *inLine) +{ + createCorner(cornerPos,myLines.indexOf(inLine)); +} + +void Arrow::createCorner(QPointF cornerPos, int index) +{ + if (index != -1) + { + myCorners.insert(index,cornerPos); + lineItem *newLine= new lineItem(cornerPos,cornerPos,this); + myOwnerScene->addItem(newLine); + newLine->setZValue(this->zValue()); + addLine(newLine); + newLine= new lineItem(cornerPos+QPointF(-0.5,-0.5) , + cornerPos+QPointF(0.5,0.5),this,6,1); + myOwnerScene->addItem(newLine); + newLine->setZValue(this->zValue()+0.1); + myCLines.insert(index,newLine); + } + updatePosition(); +} +void Arrow::createFirstCorner() +{ + if(myOwnerScene->items().indexOf(SECLine)==-1) + { + SECLine = new lineItem(startPoint+QPointF(-0.5,-0.5) , + startPoint+QPointF(0.5,0.5),this,6,1); + myOwnerScene->addItem(SECLine); + SECLine->setVisible(1); + SECLine->setZValue(this->zValue()+0.1); + } + updatePosition(); +} + +void Arrow::moveCorner(QPointF cornerPos, lineItem *inLine, bool relative) +{ + int index = myCLines.indexOf(inLine); + if(relative) cornerPos=mapFromItem(inLine,cornerPos); + + if (index != -1) + { + myCorners.replace(index,cornerPos); + } + else if (inLine == SECLine) + { + startPoint=cornerPos; + endPoint=cornerPos; + } + updatePosition(); +} + +void Arrow::setVisibleCorners(bool visible) +{ + foreach (lineItem *line, myCLines) { + line->setVisible(visible); + } + if(myOwnerScene->items().indexOf(SECLine)!=-1) + { + SECLine->setVisible(1); + } + updatePosition(); +} + +void Arrow::snapToGrid(QGraphicsSceneMouseEvent *event) +{ + //TODO implement polygon drag + QPointF diffPos= event->scenePos()-previousPos; + printf("diff[%f|%f]\n",diffPos.x(),diffPos.y()); fflush(stdout); + //Update corners: + for(int i=0; i < myCorners.count();i++) + { + myCLines.at(i)->setLine(QLineF(myCLines.at(i)->line().p1()+diffPos, + myCLines.at(i)->line().p2()+diffPos)); + QPointF itemPos = myCLines.at(i)->line().p1()+QPointF(0.5,0.5); + moveCorner(itemPos,myCLines.at(i)); + } + if(myOwnerScene->items().indexOf(SECLine)!=-1) + { + SECLine->setLine(QLineF(SECLine->line().p1()+diffPos, + SECLine->line().p2()+diffPos)); + QPointF itemPos = SECLine->line().p1()+QPointF(0.5,0.5); + moveCorner(itemPos,SECLine); + } + updatePosition(); +} + +void Arrow::mousePressEvent(QGraphicsSceneMouseEvent *event) +{ + //if(this->isSelected()) + { + previousPos = event->scenePos(); + moving=1; + } + QGraphicsPathItem::mousePressEvent(event); +} + +void Arrow::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) +{ + if(moving && isSelected()) + { + snapToGrid(event); + previousPos = event->scenePos(); + } + moving=0; + QGraphicsPathItem::mouseReleaseEvent(event); +} + +void Arrow::mouseMoveEvent(QGraphicsSceneMouseEvent *event) +{ + if(moving && isSelected()) + { + snapToGrid(event); + previousPos = event->scenePos(); + } + QGraphicsPathItem::mouseMoveEvent(event); +} + +QDomElement Arrow::toXml(QDomDocument &document) const +{ + QDomElement diagramArrow = document.createElement("Polygon"); + //Point list + if(!myCorners.isEmpty()) + { + QDomElement arrowCorner; + //start point + arrowCorner = document.createElement("Point"); + arrowCorner.setAttribute("x",(startPoint-QPointF(500,500)).x()); + arrowCorner.setAttribute("y",(startPoint-QPointF(500,500)).y()); + diagramArrow.appendChild(arrowCorner); + //corner points + foreach(QPointF corner, myCorners) + { + arrowCorner = document.createElement("Point"); + arrowCorner.setAttribute("x",(corner-QPointF(500,500)).x()); + arrowCorner.setAttribute("y",(corner-QPointF(500,500)).y()); + diagramArrow.appendChild(arrowCorner); + } + } + return (diagramArrow); +} diff --git a/Software/sie_cg/block_editor/arrow.h b/Software/sie_cg/block_editor/arrow.h new file mode 100644 index 0000000..1689157 --- /dev/null +++ b/Software/sie_cg/block_editor/arrow.h @@ -0,0 +1,124 @@ +/**************************************************************************** +** +** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial Usage +** Licensees holding valid Qt Commercial licenses may use this file in +** accordance with the Qt Commercial License Agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Nokia. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** If you have questions regarding the use of this file, please contact +** Nokia at qt-info@nokia.com. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef ARROW_H +#define ARROW_H + +#include +#include +#include "diagramtextitem.h" +#include "diagramscene.h" + +QT_BEGIN_NAMESPACE +class QGraphicsPolygonItem; +class QGraphicsLineItem; +class QGraphicsPathItem; +class QGraphicsScene; +class QRectF; +class QGraphicsSceneMouseEvent; +class QPainterPath; +QT_END_NAMESPACE + +class lineItem; +class DiagramScene; + +class Arrow : public QGraphicsPathItem +{ +public: + enum { Type = UserType + 32 }; + + Arrow(QPointF startPoint,QPointF endPoint, + QGraphicsItem *parent = 0, QGraphicsScene *scene = 0); + + int type() const + { return Type; } + QRectF boundingRect() const; + QPainterPath shape() const; + void setColor(const QColor &color) + { myColor=color; } + + void removeLine(lineItem *line); + void removeLines(); + bool addLine(lineItem *line); + void setStartPoint(QPointF point){startPoint=point;} + void setEndPoint(QPointF point){endPoint=point;} + + QPointF getStartPoint(){return startPoint;} + QPointF getEndPoint(){return endPoint;} + + void createCorner(QPointF cornerPos, lineItem *inLine); + void createCorner(QPointF cornerPos, int index); + void moveCorner(QPointF cornerPos, lineItem *inLine, bool relative = 1); + + void setVisibleCorners(bool visible); + + void snapToGrid(QGraphicsSceneMouseEvent *event); + + QDomDocument toXmlFormat(); + QDomElement toXml(QDomDocument &) const; + void createFirstCorner(); + void setSelectedArrows(); + +public slots: + void updatePosition(); + +protected: + void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, + QWidget *widget = 0); + void mousePressEvent(QGraphicsSceneMouseEvent *event); + void mouseReleaseEvent(QGraphicsSceneMouseEvent *event); + void mouseMoveEvent(QGraphicsSceneMouseEvent *event); + +private: + QColor myColor; + QList myLines; + QList myCLines; + lineItem *SECLine; + QPointF startPoint; + QPointF endPoint; + QList myCorners; + QGraphicsScene *myOwnerScene; + qreal arrowSize; + bool moving; + QPointF previousPos; +}; + +#endif diff --git a/Software/sie_cg/block_editor/diagramitem.o b/Software/sie_cg/block_editor/diagramitem.o new file mode 100644 index 0000000000000000000000000000000000000000..cb4c73611adfb4abf260eef497fa2f34e085eb9f GIT binary patch literal 609248 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
y5QC%>TG{VwlTd*m+RbLYo$hu0813jRXaZ@0oz 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 LGh>p?`;PwyJeT>0 literal 0 HcmV?d00001 diff --git a/Software/sie_cg/block_editor/diagramscene.cpp b/Software/sie_cg/block_editor/diagramscene.cpp new file mode 100644 index 0000000..94e2a6d --- /dev/null +++ b/Software/sie_cg/block_editor/diagramscene.cpp @@ -0,0 +1,430 @@ +/**************************************************************************** +** +** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial Usage +** Licensees holding valid Qt Commercial licenses may use this file in +** accordance with the Qt Commercial License Agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Nokia. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** If you have questions regarding the use of this file, please contact +** Nokia at qt-info@nokia.com. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include +#include +#include "diagramscene.h" + +DiagramScene::DiagramScene(QMenu *itemMenu, QObject *parent) + : QGraphicsScene(parent) +{ + myItemMenu = itemMenu; + myMode = MoveItem; + + line = 0; + textItem = 0; + myItemColor = Qt::white; + myTextColor = Qt::black; + myLineColor = Qt::black; + snapToGrid=1; + myGrid=10; + myPolygonPath=0; + myCorners=0; + + TitleText = new DiagramTextItem(0,0,1,0xFFF,255,"BLOCK NAME HERE (not visible)", + QPointF(250,250)); + addItem(TitleText); + +} + +void DiagramScene::editorLostFocus(DiagramTextItem *item) +{ + QTextCursor cursor = item->textCursor(); + cursor.clearSelection(); + item->setTextCursor(cursor); + + if (item->toPlainText().isEmpty()) { + removeItem(item); + item->deleteLater(); + } +} + +void DiagramScene::drawBackground(QPainter *p, const QRectF &r) +{ + p -> save(); + + p -> setRenderHint(QPainter::Antialiasing, false); + p -> setRenderHint(QPainter::TextAntialiasing, true); + p -> setRenderHint(QPainter::SmoothPixmapTransform, false); + + p -> setPen(Qt::NoPen); + p -> setBrush(Qt::white); + p -> drawRect(r); + + + p -> setPen(Qt::gray); + p -> setBrush(Qt::NoBrush); + qreal limite_x = r.x() + r.width(); + qreal limite_y = r.y() + r.height(); + + int g_x = (int)ceil(r.x()); + while (g_x % myGrid) ++ g_x; + int g_y = (int)ceil(r.y()); + while (g_y % myGrid) ++ g_y; + + QPolygon points; + for (int gx = g_x ; gx < limite_x ; gx += myGrid) { + for (int gy = g_y ; gy < limite_y ; gy += myGrid) { + points << QPoint(gx, gy); + } + } + p -> drawPoints(points); + + p->drawLine(500,0,500,1000); + p->drawLine(0,500,1000,500); + + p -> restore(); +} + +void DiagramScene::doSnapToGrid(QGraphicsSceneMouseEvent *mouseEvent) +{ + if(snapToGrid){ + mouseEvent->setScenePos(QPointF( + int(mouseEvent->scenePos().x()/myGrid)*myGrid, + int(mouseEvent->scenePos().y()/myGrid)*myGrid + )); + } +} + +void DiagramScene::mousePressEvent(QGraphicsSceneMouseEvent *mouseEvent) +{ + doSnapToGrid(mouseEvent); + QString Text; + + if (mouseEvent->button() != Qt::LeftButton) + return; + + switch (myMode) + { + case InsertText: + //TODO: limit text items to 255 maximum + if(myTextType<256) + if(myTextType & 0b10000000) + Text = "IN " +myTypeString; + else + Text = "OUT " +myTypeString; + else + Text = myTypeString; + + textItem = new DiagramTextItem(0,0,1,myTextType,0,Text, + mouseEvent->scenePos()); + if(addTextItem(textItem)) + { + textItem->setZValue(1000.0); + connect(textItem, SIGNAL(lostFocus(DiagramTextItem*)), + this, SLOT(editorLostFocus(DiagramTextItem*))); + addItem(textItem); + } + else + { + delete(textItem); + QMessageBox::warning(0,"Full","The block can only have only" + "255 text items"); + } + emit textInserted(textItem); + break; + case EditPolygon: + if(line == 0 && items().indexOf(myPolygonPath)==-1) + { + line = new QGraphicsLineItem(QLineF(mouseEvent->scenePos(), + mouseEvent->scenePos())); + line->setPen(QPen(Qt::blue, 2)); + line->setZValue(1000.0); + addItem(line); + } + else if(line != 0 && items().indexOf(myPolygonPath)==-1 && + line->line().length()>5) + { + myPolygonPath = new Arrow(line->line().p1(),line->line().p2(), + 0,this); + QLineF newLine(line->line().p2(),line->line().p2()); + line->setLine(newLine); + } + else if(line != 0 && items().indexOf(myPolygonPath)!=-1 && + line->line().length()>5) + { + myPolygonPath->createCorner(line->line().p1(),myCorners); + myPolygonPath->setEndPoint(line->line().p2()); + myPolygonPath->updatePosition(); + QLineF newLine(line->line().p2(),line->line().p2()); + line->setLine(newLine); + + myCorners++; + } + + case MoveItem: + QGraphicsScene::mousePressEvent(mouseEvent); + break; + default: ; + } + +} + +void DiagramScene::mouseMoveEvent(QGraphicsSceneMouseEvent *mouseEvent) +{ + doSnapToGrid(mouseEvent); + if (myMode == EditPolygon && line != 0 ) + { + QLineF newLine(line->line().p1(), mouseEvent->scenePos()); + line->setLine(newLine); + } + + QGraphicsScene::mouseMoveEvent(mouseEvent); + +} + +void DiagramScene::mouseDoubleClickEvent(QGraphicsSceneMouseEvent *mouseEvent) +{ + doSnapToGrid(mouseEvent); + if (myMode == EditPolygon && line != 0 && myCorners>0) + { + if(myPolygonPath->getStartPoint()!=line->line().p2()) + myPolygonPath->createCorner(line->line().p2(),myCorners); + + myPolygonPath->setEndPoint(myPolygonPath->getStartPoint()); + myPolygonPath->createFirstCorner(); + myPolygonPath->updatePosition(); + myCorners=0; + removeItem(line); + line = 0; + myMode = MoveItem; + emit textInserted(textItem);//Is the same for all buttons + } + else if (myMode != EditPolygon) + { + QGraphicsScene::mouseDoubleClickEvent(mouseEvent); + } +} + +void DiagramScene::mouseReleaseEvent(QGraphicsSceneMouseEvent *mouseEvent) +{ + doSnapToGrid(mouseEvent); + if (myMode != EditPolygon && line == 0) + QGraphicsScene::mouseReleaseEvent(mouseEvent); +} + +bool DiagramScene::isItemChange(int type) +{ + foreach (QGraphicsItem *item, selectedItems()) { + if (item->type() == type) + return true; + } + return false; +} + +QDomDocument DiagramScene::toXmlFormat() +{ + QDomDocument document; + QDomComment initialComments=document.createComment( + "File for SIE Code Generator. Custmos Blocks"); + document.appendChild(initialComments); + QDomElement diagram = document.createElement("CustomItem"); + diagram.setAttribute("BlockName",TitleText->toPlainText()); + document.appendChild(diagram); + //Lists of items + QList Items; + QList Arrows; + foreach(QGraphicsItem *item, items()) + { + if(item->type() == DiagramTextItem::Type) + Items.append(qgraphicsitem_cast(item)); + else if(item->type() == Arrow::Type) + Arrows.append(qgraphicsitem_cast(item)); + } + + if(Arrows.count()>1) {printf("Something is wrong.\n"); fflush(stdout);} + + //Create the XML structure + diagram.appendChild(myPolygonPath->toXml(document)); + + QDomElement element; + if(Items.count()>0) + { + QDomElement textItems = document.createElement("TextItems"); + foreach(DiagramTextItem *item, Items) + { + if(item->styleIO() != 0xFFF) + { + element = item->toXml(document); + element.setAttribute("ID",textItemsByID.key(item)); + textItems.appendChild(element); + } + } + diagram.appendChild(textItems); + } + + return(document); +} + +int DiagramScene::fromXmlFormat(QDomDocument document) +{ + //Read items TODO: in future... add multi items on same file + QDomNodeList customsItems = document.elementsByTagName("CustomItem"); + if(!customsItems.at(0).isElement()) + return -1; + //Load the first item in the document + QDomElement customItem = customsItems.at(0).toElement(); + if(customItem.attribute("BlockName")=="") + TitleText->setPlainText("Please set Block Name"); + else + TitleText->setPlainText(customItem.attribute("BlockName")); + TitleText->updatePosition(); + for (QDomNode node = customItem.firstChild() ; + !node.isNull() ; + node = node.nextSibling()) + { + QDomElement element = node.toElement(); + if(element.tagName()=="Polygon") + { + QList points; + for (QDomNode node = element.firstChild() ; + !node.isNull() ; + node = node.nextSibling()) + { + QDomElement point = node.toElement(); + if(point.tagName()!="Point") + return -1; + points.append(QPointF((QPointF(point.attribute("x").toFloat(),0) + +QPointF(500,500)).x(), + (QPointF(0,point.attribute("y").toFloat()) + +QPointF(500,500)).y())); + } + + if(points.count()>0) + { + myPolygonPath = new Arrow(points.at(0),points.at(0),0,this); + for(int i=1; i< points.count();i++) + { + myPolygonPath->createCorner(points.at(i),i-1); + } + myPolygonPath->createFirstCorner(); + myPolygonPath->updatePosition(); + } + } + else if(element.tagName()=="TextItems") + { + for (QDomNode node = element.firstChild() ; + !node.isNull() ; + node = node.nextSibling()) + { + QDomElement textItemE = node.toElement(); + if(textItemE.tagName()!="TextItem") + return -1; + + int myStyleIO = textItemE.attribute("myStyleIO").toInt(); + int myID = textItemE.attribute("ID").toInt(); + bool editableItem = textItemE.attribute("editableItem").toInt(); + QPointF posOffset= + QPointF((QPointF(textItemE.attribute("posOffset-x") + .toFloat(),0)+QPointF(500,500)).x(), + (-QPointF(0,textItemE.attribute("posOffset-y") + .toFloat())+QPointF(500,500)).y()); + QString itemString=textItemE.attribute("text"); + + if(myStyleIO==0) + { + if(!editableItem) + myStyleIO=256; + else + myStyleIO=257; + } + + DiagramTextItem * newTextItem = + new DiagramTextItem(0,0,1,myStyleIO,myID,itemString,posOffset); + newTextItem->setZValue(1000.0); + connect(newTextItem, SIGNAL(lostFocus(DiagramTextItem*)), + this, SLOT(editorLostFocus(DiagramTextItem*))); + addItem(newTextItem); + textItemsByID.insert(myID,newTextItem); + } + } + } + + return 1; +} + +void DiagramScene::cleanScene() +{ + //Lists of items + QList Items; + foreach(QGraphicsItem *item, items()) + { + if(item->type() == DiagramTextItem::Type) + Items.append(qgraphicsitem_cast(item)); + } + //Remove Diagram Text Items + foreach(DiagramTextItem *item, Items) + { + if(item->styleIO() != 0xFFF) + { + removeItem(item); + delete(item); + } + } + //Remove Polygon Path + if(items().indexOf(myPolygonPath)!=-1) + { + myPolygonPath->removeLines(); + removeItem(myPolygonPath); + delete(myPolygonPath); + } + TitleText->setPlainText("BLOCK NAME HERE (not visible)"); + TitleText->updatePosition(); +} + +int DiagramScene::addTextItem(DiagramTextItem * textItem) +{ + for(int i=0; i<255; i++) + { + QHash::iterator iter= textItemsByID.find(i); + if(iter==textItemsByID.end()) + { + textItemsByID.insert(i,textItem); + return 1; + } + } + return 0; +} + +void DiagramScene::removeTextItem(DiagramTextItem * textItem) +{ + textItemsByID.remove(textItemsByID.key(textItem)); +} diff --git a/Software/sie_cg/block_editor/diagramscene.h b/Software/sie_cg/block_editor/diagramscene.h new file mode 100644 index 0000000..b93f814 --- /dev/null +++ b/Software/sie_cg/block_editor/diagramscene.h @@ -0,0 +1,121 @@ +/**************************************************************************** +** +** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial Usage +** Licensees holding valid Qt Commercial licenses may use this file in +** accordance with the Qt Commercial License Agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Nokia. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** If you have questions regarding the use of this file, please contact +** Nokia at qt-info@nokia.com. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef DIAGRAMSCENE_H +#define DIAGRAMSCENE_H + +#include +#include +#include +#include "diagramtextitem.h" +#include "arrow.h" + +QT_BEGIN_NAMESPACE +class QGraphicsSceneMouseEvent; +class QMenu; +class QPointF; +class QGraphicsLineItem; +class QFont; +class QGraphicsTextItem; +class QColor; +QT_END_NAMESPACE + +class Arrow; +class DiagramTextItem; + +class DiagramScene : public QGraphicsScene +{ + Q_OBJECT + +public: + enum Mode { MoveItem , EditPolygon, InsertText }; + + DiagramScene(QMenu *itemMenu, QObject *parent = 0); + + QDomDocument toXmlFormat(); + int fromXmlFormat(QDomDocument xmlDocument); + void cleanScene(); + void setTextType(int type,QString text){myTextType=type;myTypeString=text;} + void resetMyPolygon(){myPolygonPath=0;} + + QHash getTextItemsByID; + + int addTextItem(DiagramTextItem * textItem); + void removeTextItem(DiagramTextItem * textItem); + +public slots: + void setMode(Mode mode){myMode=mode;} + void editorLostFocus(DiagramTextItem *item); + +signals: + void textInserted(QGraphicsTextItem *item); + +protected: + void mousePressEvent(QGraphicsSceneMouseEvent *mouseEvent); + void mouseMoveEvent(QGraphicsSceneMouseEvent *mouseEvent); + void mouseReleaseEvent(QGraphicsSceneMouseEvent *mouseEvent); + void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event); + void drawBackground(QPainter *p, const QRectF &r); + +private: + bool isItemChange(int type); + void doSnapToGrid(QGraphicsSceneMouseEvent *mouseEvent); + QMenu *myItemMenu; + Mode myMode; + int myTextType; + QString myTypeString; + bool leftButtonDown; + QPointF startPoint; + QGraphicsLineItem *line; + Arrow *myPolygonPath; + QFont myFont; + DiagramTextItem *textItem; + DiagramTextItem *TitleText; + QColor myTextColor; + QColor myItemColor; + QColor myLineColor; + bool snapToGrid; + short int myGrid; + int myCorners; + QHash textItemsByID; +}; + +#endif diff --git a/Software/sie_cg/block_editor/diagramscene.pro b/Software/sie_cg/block_editor/diagramscene.pro new file mode 100644 index 0000000..222cc64 --- /dev/null +++ b/Software/sie_cg/block_editor/diagramscene.pro @@ -0,0 +1,30 @@ +HEADERS = mainwindow.h \ + diagramscene.h \ + arrow.h \ + diagramtextitem.h \ + lineitem.h +SOURCES = mainwindow.cpp \ + main.cpp \ + arrow.cpp \ + diagramtextitem.cpp \ + diagramscene.cpp \ + lineitem.cpp +RESOURCES = diagramscene.qrc + +TARGET = blockeditor + +# install +target.path = $$[QT_INSTALL_EXAMPLES]/graphicsview/diagramscene +sources.files = $$SOURCES \ + $$HEADERS \ + $$RESOURCES \ + $$FORMS \ + diagramscene.pro \ + images +sources.path = $$[QT_INSTALL_EXAMPLES]/graphicsview/diagramscene +INSTALLS += target \ + sources +symbian:include($$QT_SOURCE_TREE/examples/symbianpkgrules.pri) +QT += xml \ + svg \ + network diff --git a/Software/sie_cg/block_editor/diagramscene.pro.user b/Software/sie_cg/block_editor/diagramscene.pro.user new file mode 100644 index 0000000..da71f5d --- /dev/null +++ b/Software/sie_cg/block_editor/diagramscene.pro.user @@ -0,0 +1,245 @@ + + + + RunConfiguration0-BaseEnvironmentBase + 2 + + + RunConfiguration0-CommandLineArguments + + + + RunConfiguration0-ProFile + diagramscene.pro + + + RunConfiguration0-RunConfiguration.name + diagramscene + + + RunConfiguration0-UseDyldImageSuffix + false + + + RunConfiguration0-UseTerminal + false + + + RunConfiguration0-UserEnvironmentChanges + + + + RunConfiguration0-UserSetName + false + + + RunConfiguration0-UserSetWorkingDirectory + false + + + RunConfiguration0-UserWorkingDirectory + + + + RunConfiguration0-type + Qt4ProjectManager.Qt4RunConfiguration + + + activeRunConfiguration + 0 + + + activebuildconfiguration + Debug + + + buildConfiguration-Debug + + Debug + 0 + 0 + + 2 + + + + buildConfiguration-Release + + Release + 0 + + 0 + + + + buildconfiguration-Debug-buildstep0 + + Debug + + DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-MI4KrAyPP5,guid=5c5c5e6146195c74b6ad266d4cc07afd + DEFAULTS_PATH=/usr/share/gconf/gnome.default.path + DESKTOP_SESSION=gnome + DISPLAY=:0.0 + GDMSESSION=gnome + GDM_KEYBOARD_LAYOUT=es + GDM_LANG=en_US.utf8 + GNOME_DESKTOP_SESSION_ID=this-is-deprecated + GNOME_KEYRING_CONTROL=/tmp/keyring-CFAuJK + GNOME_KEYRING_PID=1516 + GTK_MODULES=canberra-gtk-module + HOME=/home/juan64bits + LANG=en_US.utf8 + LD_LIBRARY_PATH=/usr/lib/qtcreator + LOGNAME=juan64bits + MANDATORY_PATH=/usr/share/gconf/gnome.mandatory.path + ORBIT_SOCKETDIR=/tmp/orbit-juan64bits + PATH=/usr/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games + PWD=/home/juan64bits + QTDIR=/usr/share/qt4 + SESSION_MANAGER=local/Maximus:@/tmp/.ICE-unix/1534,unix/Maximus:/tmp/.ICE-unix/1534 + SHELL=/bin/bash + SPEECHD_PORT=7560 + SSH_AGENT_PID=1570 + SSH_AUTH_SOCK=/tmp/keyring-CFAuJK/ssh + USER=juan64bits + USERNAME=juan64bits + XAUTHORITY=/var/run/gdm/auth-for-juan64bits-V4ry7M/database + XDG_CONFIG_DIRS=/etc/xdg/xdg-gnome:/etc/xdg + XDG_DATA_DIRS=/usr/share/gnome:/usr/local/share/:/usr/share/ + XDG_SESSION_COOKIE=b9a7fbc4d869fc15bd6cdd474bcc9a28-1287682812.550485-1725059380 + + + /home/juan64bits/QT/diagramscene/block_editor/diagramscene.pro + -spec + linux-g++ + -r + CONFIG+=debug + + /usr/bin/qmake-qt4 + false + /home/juan64bits/QT/diagramscene/block_editor + + + + buildconfiguration-Debug-buildstep1 + + Debug + + DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-MI4KrAyPP5,guid=5c5c5e6146195c74b6ad266d4cc07afd + DEFAULTS_PATH=/usr/share/gconf/gnome.default.path + DESKTOP_SESSION=gnome + DISPLAY=:0.0 + GDMSESSION=gnome + GDM_KEYBOARD_LAYOUT=es + GDM_LANG=en_US.utf8 + GNOME_DESKTOP_SESSION_ID=this-is-deprecated + GNOME_KEYRING_CONTROL=/tmp/keyring-CFAuJK + GNOME_KEYRING_PID=1516 + GTK_MODULES=canberra-gtk-module + HOME=/home/juan64bits + LANG=en_US.utf8 + LD_LIBRARY_PATH=/usr/lib/qtcreator + LOGNAME=juan64bits + MANDATORY_PATH=/usr/share/gconf/gnome.mandatory.path + ORBIT_SOCKETDIR=/tmp/orbit-juan64bits + PATH=/usr/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games + PWD=/home/juan64bits + QTDIR=/usr/share/qt4 + SESSION_MANAGER=local/Maximus:@/tmp/.ICE-unix/1534,unix/Maximus:/tmp/.ICE-unix/1534 + SHELL=/bin/bash + SPEECHD_PORT=7560 + SSH_AGENT_PID=1570 + SSH_AUTH_SOCK=/tmp/keyring-CFAuJK/ssh + USER=juan64bits + USERNAME=juan64bits + XAUTHORITY=/var/run/gdm/auth-for-juan64bits-V4ry7M/database + XDG_CONFIG_DIRS=/etc/xdg/xdg-gnome:/etc/xdg + XDG_DATA_DIRS=/usr/share/gnome:/usr/local/share/:/usr/share/ + XDG_SESSION_COOKIE=b9a7fbc4d869fc15bd6cdd474bcc9a28-1287682812.550485-1725059380 + + false + + -w + + /usr/bin/make + true + /home/juan64bits/QT/diagramscene/block_editor + + + + buildconfiguration-Debug-cleanstep0 + + Debug + true + + clean + + + + + buildconfiguration-Release-buildstep0 + + Release + + + + buildconfiguration-Release-buildstep1 + + Release + + + + buildconfiguration-Release-cleanstep0 + + Release + + + + buildconfigurations + + Debug + Release + + + + buildstep0 + + + + + + + buildstep1 + + + + + + buildsteps + + trolltech.qt4projectmanager.qmake + trolltech.qt4projectmanager.make + + + + cleanstep0 + + + true + + + + cleansteps + + trolltech.qt4projectmanager.make + + + + defaultFileEncoding + System + + + project + + + diff --git a/Software/sie_cg/block_editor/diagramscene.qrc b/Software/sie_cg/block_editor/diagramscene.qrc new file mode 100644 index 0000000..374fc1e --- /dev/null +++ b/Software/sie_cg/block_editor/diagramscene.qrc @@ -0,0 +1,28 @@ + + + ../images/pointer.png + ../images/linepointer.png + ../images/textpointer.png + ../images/bold.png + ../images/italic.png + ../images/underline.png + ../images/floodfill.png + ../images/bringtofront.png + ../images/delete.png + ../images/sendtoback.png + ../images/linecolor.png + ../images/background1.png + ../images/background2.png + ../images/background3.png + ../images/background4.png + ../images/exit.png + ../images/new.png + ../images/no.png + ../images/open.png + ../images/save.png + ../images/save_as.png + ../images/yes.png + ../images/zoom_in.png + ../images/zoom_out.png + + diff --git a/Software/sie_cg/block_editor/diagramtextitem.cpp b/Software/sie_cg/block_editor/diagramtextitem.cpp new file mode 100644 index 0000000..ab59d92 --- /dev/null +++ b/Software/sie_cg/block_editor/diagramtextitem.cpp @@ -0,0 +1,165 @@ +/**************************************************************************** +** +** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial Usage +** Licensees holding valid Qt Commercial licenses may use this file in +** accordance with the Qt Commercial License Agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Nokia. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** If you have questions regarding the use of this file, please contact +** Nokia at qt-info@nokia.com. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include + +#include "diagramtextitem.h" +#include "diagramscene.h" + +DiagramTextItem::DiagramTextItem( + QGraphicsItem *parent, QGraphicsScene *scene, + bool editable, int styleIO, + unsigned char ID, QString defaultText, QPointF offset) + : QGraphicsTextItem(parent, scene) +{ + myOwnerScene=scene; + myStyleIO = styleIO; + myID=ID; + editableItem=editable; + setPlainText(defaultText); + posOffset=offset; + //setFlag(QGraphicsItem::ItemIsMovable,0); + if(editable) + setFlag(QGraphicsItem::ItemIsSelectable,1); + else + setFlag(QGraphicsItem::ItemIsFocusable,0); + + updatePosition(); + moving=0; +} + +void DiagramTextItem::updatePosition() +{ + if(myStyleIO>255) + setPos(posOffset+QPointF(-boundingRect().width()/2, + -boundingRect().height()/2)); + else if(myStyleIO & 0b10000000) + setPos(posOffset+QPointF(0,-boundingRect().height()/2)); + else //OUT + setPos(posOffset+QPointF(-boundingRect().width(), + -boundingRect().height()/2)); +} + +QVariant DiagramTextItem::itemChange(GraphicsItemChange change, + const QVariant &value) +{ + if (change == QGraphicsItem::ItemSelectedHasChanged) + emit selectedChange(this); + + return value; +} + +void DiagramTextItem::focusOutEvent(QFocusEvent *event) +{ + if(editableItem) + { + if(toPlainText()=="") setPlainText("?"); + //updatePosition(); + setTextInteractionFlags(Qt::NoTextInteraction); + emit lostFocus(this); + QGraphicsTextItem::focusOutEvent(event); + } +} + +void DiagramTextItem::mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event) +{ + if(editableItem) + { + if (textInteractionFlags() == Qt::NoTextInteraction) + setTextInteractionFlags(Qt::TextEditorInteraction); + } + QGraphicsTextItem::mouseDoubleClickEvent(event); +} + +void DiagramTextItem::snapToGrid(QGraphicsSceneMouseEvent *event) +{ + if(myStyleIO!=0xFFF) + setOffset(event->scenePos()); + updatePosition(); +} + +void DiagramTextItem::mousePressEvent(QGraphicsSceneMouseEvent *event) +{ + moving=1; + //snapToGrid(event); + QGraphicsTextItem::mousePressEvent(event); +} + +void DiagramTextItem::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) +{ + moving=0; + QGraphicsTextItem::mouseReleaseEvent(event); +} + +void DiagramTextItem::mouseMoveEvent(QGraphicsSceneMouseEvent *event) +{ + if(moving) + snapToGrid(event); + + QGraphicsTextItem::mouseMoveEvent(event); +} + +QDomElement DiagramTextItem::toXml(QDomDocument &document) const +{ + QDomElement textItem = document.createElement("TextItem"); + textItem.setAttribute("text",toPlainText()); + if(myStyleIO<256) + { + textItem.setAttribute("myStyleIO",myStyleIO); + textItem.setAttribute("editableItem",0); + } + else if (myStyleIO==256) + { + textItem.setAttribute("myStyleIO",0); + textItem.setAttribute("editableItem",0); + } + else if (myStyleIO==257) + { + textItem.setAttribute("myStyleIO",0); + textItem.setAttribute("editableItem",1); + } + textItem.setAttribute("posOffset-x", + QPointF(posOffset-QPointF(500,500)).x()); + textItem.setAttribute("posOffset-y", + -QPointF(posOffset-QPointF(500,500)).y()); + return (textItem); +} + diff --git a/Software/sie_cg/block_editor/diagramtextitem.h b/Software/sie_cg/block_editor/diagramtextitem.h new file mode 100644 index 0000000..bda5886 --- /dev/null +++ b/Software/sie_cg/block_editor/diagramtextitem.h @@ -0,0 +1,118 @@ +/**************************************************************************** +** +** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial Usage +** Licensees holding valid Qt Commercial licenses may use this file in +** accordance with the Qt Commercial License Agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Nokia. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** If you have questions regarding the use of this file, please contact +** Nokia at qt-info@nokia.com. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef DIAGRAMTEXTITEM_H +#define DIAGRAMTEXTITEM_H + +#include +#include +#include "diagramscene.h" + +QT_BEGIN_NAMESPACE +class QFocusEvent; +class QGraphicsItem; +class QGraphicsScene; +class QGraphicsSceneMouseEvent; +QT_END_NAMESPACE + +class DiagramTextItem : public QGraphicsTextItem +{ + Q_OBJECT + +public: + enum { Type = UserType + 3 }; + + DiagramTextItem( + QGraphicsItem *parent = 0, QGraphicsScene *scene = 0, + bool editable =1, int styleIO = 0, + unsigned char ID=0, QString defaultText="", + QPointF offset=QPointF(0,0)); + + int type() const + { return Type;} + + int styleIO() + { return myStyleIO;} + + unsigned char ID() + { return myID;} + + unsigned char textID() const + { return myID;} + + QPointF offset() const + { return posOffset;} + + void setOffset(QPointF offset) + { posOffset=offset;} + + bool isEditable() + { return editableItem;} + + void snapToGrid(QGraphicsSceneMouseEvent *event); + + QDomElement toXml(QDomDocument &document) const; + +public slots: + void updatePosition(); + +signals: + void lostFocus(DiagramTextItem *item); + void selectedChange(QGraphicsItem *item); + +protected: + QVariant itemChange(GraphicsItemChange change, const QVariant &value); + void focusOutEvent(QFocusEvent *event); + void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event); + void mousePressEvent(QGraphicsSceneMouseEvent *event); + void mouseReleaseEvent(QGraphicsSceneMouseEvent *event); + void mouseMoveEvent(QGraphicsSceneMouseEvent *event); + +private: + bool editableItem; + QPointF posOffset; + int myStyleIO; + unsigned char myID; + QGraphicsScene *myOwnerScene; + bool moving; +}; + +#endif diff --git a/Software/sie_cg/block_editor/lineitem.cpp b/Software/sie_cg/block_editor/lineitem.cpp new file mode 100644 index 0000000..9893bcc --- /dev/null +++ b/Software/sie_cg/block_editor/lineitem.cpp @@ -0,0 +1,140 @@ +/**************************************************************************** +** +** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial Usage +** Licensees holding valid Qt Commercial licenses may use this file in +** accordance with the Qt Commercial License Agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Nokia. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** If you have questions regarding the use of this file, please contact +** Nokia at qt-info@nokia.com. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include + +#include "lineitem.h" +#include + +lineItem::lineItem(QPointF startPoint, QPointF endItem, Arrow *ownerArrow, + int wt, bool movable, QGraphicsItem *parent, QGraphicsScene *scene) + : QGraphicsLineItem(parent, scene) +{ + isMovable=movable; + if(isMovable) + { + setFlag(QGraphicsItem::ItemIsMovable, true); + } + + setFlag(QGraphicsItem::ItemIsSelectable, true); + + myColor = Qt::black; + setPen(QPen(myColor, 2, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin)); + setLine(QLineF(startPoint,endItem)); + myOwnerArrow = ownerArrow; + pWidth=wt; + moveItem=0; +} + +QRectF lineItem::boundingRect() const +{ + qreal extra = (pen().width() + 20) / 2.0; + + return QRectF(line().p1(), QSizeF(line().p2().x() - line().p1().x(), + line().p2().y() - line().p1().y())) + .normalized() + .adjusted(-extra, -extra, extra, extra); +} + +QPainterPath lineItem::shape() const +{ + QPainterPath path = QGraphicsLineItem::shape(); + return path; +} + +void lineItem::updatePos() +{ + QPointF itemPos = this->line().p1()+QPointF(0.5,0.5); + myOwnerArrow->moveCorner(itemPos,this); +} + +void lineItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *, + QWidget *) +{ + QPen myPen = pen(); + myPen.setColor(myColor); + myPen.setWidth(pWidth); + painter->setPen(myPen); + painter->setBrush(myColor); + + setLine(line()); + painter->drawLine(line()); + + //Drawing arrow selected + if (isSelected()) { + painter->setPen(QPen(Qt::gray, pWidth, Qt::SolidLine)); + QLineF myLine = line(); + painter->drawLine(myLine); + } +} + +void lineItem::mouseDoubleClickEvent(QGraphicsSceneMouseEvent *mouseEvent) +{ + if(!isMovable) + { + myOwnerArrow->createCorner(mouseEvent->scenePos(),this); + } + QGraphicsLineItem::mouseDoubleClickEvent(mouseEvent); +} + + +void lineItem::mousePressEvent(QGraphicsSceneMouseEvent *mouseEvent) +{ + QGraphicsLineItem::mousePressEvent(mouseEvent); +} + +void lineItem::mouseMoveEvent(QGraphicsSceneMouseEvent *mouseEvent) +{ + if(isMovable) + { + updatePos(); + } + QGraphicsLineItem::mouseMoveEvent(mouseEvent); +} + +void lineItem::mouseReleaseEvent(QGraphicsSceneMouseEvent *mouseEvent) +{ + if(isMovable) + { + updatePos(); + } + QGraphicsLineItem::mouseReleaseEvent(mouseEvent); +} diff --git a/Software/sie_cg/block_editor/lineitem.h b/Software/sie_cg/block_editor/lineitem.h new file mode 100644 index 0000000..682cdab --- /dev/null +++ b/Software/sie_cg/block_editor/lineitem.h @@ -0,0 +1,96 @@ +/**************************************************************************** +** +** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial Usage +** Licensees holding valid Qt Commercial licenses may use this file in +** accordance with the Qt Commercial License Agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Nokia. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** If you have questions regarding the use of this file, please contact +** Nokia at qt-info@nokia.com. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef LINEITEM_H +#define LINEITEM_H + +#include +#include "arrow.h" + +QT_BEGIN_NAMESPACE +class QGraphicsPolygonItem; +class QGraphicsLineItem; +class QGraphicsScene; +class QRectF; +class QGraphicsSceneMouseEvent; +class QPainterPath; +QT_END_NAMESPACE + +class lineItem : public QGraphicsLineItem +{ +public: + enum { Type = UserType + 4 }; + + lineItem(QPointF startPoint, QPointF endItem, Arrow *ownerArrow, int wt=2, + bool movable = 0, QGraphicsItem *parent = 0, QGraphicsScene *scene = 0); + + int type() const + { return Type;} + QRectF boundingRect() const; + QPainterPath shape() const; + void setColor(const QColor &color) + { myColor=color; } + + Arrow * myOwner() + { return myOwnerArrow;} + + bool itemIsMovable() {return isMovable;} + +public slots: + void updatePos(); + +protected: + void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, + QWidget *widget = 0); + void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event); + void mousePressEvent(QGraphicsSceneMouseEvent *event); + void mouseReleaseEvent(QGraphicsSceneMouseEvent *event); + void mouseMoveEvent(QGraphicsSceneMouseEvent *event); + +private: + QColor myColor; + int pWidth; + Arrow *myOwnerArrow; + int moveItem; + bool isMovable; +}; + +#endif diff --git a/Software/sie_cg/block_editor/main.cpp b/Software/sie_cg/block_editor/main.cpp new file mode 100644 index 0000000..f407824 --- /dev/null +++ b/Software/sie_cg/block_editor/main.cpp @@ -0,0 +1,55 @@ +/**************************************************************************** +** +** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial Usage +** Licensees holding valid Qt Commercial licenses may use this file in +** accordance with the Qt Commercial License Agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Nokia. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** If you have questions regarding the use of this file, please contact +** Nokia at qt-info@nokia.com. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include + +#include "mainwindow.h" + +int main(int argv, char *args[]) +{ + Q_INIT_RESOURCE(diagramscene); + + QApplication app(argv, args); + MainWindow mainWindow; + mainWindow.setGeometry(100, 100, 1024, 640); + mainWindow.show(); + return app.exec(); +} diff --git a/Software/sie_cg/block_editor/mainwindow.cpp b/Software/sie_cg/block_editor/mainwindow.cpp new file mode 100644 index 0000000..86be657 --- /dev/null +++ b/Software/sie_cg/block_editor/mainwindow.cpp @@ -0,0 +1,413 @@ +/**************************************************************************** +** +** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial Usage +** Licensees holding valid Qt Commercial licenses may use this file in +** accordance with the Qt Commercial License Agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Nokia. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** If you have questions regarding the use of this file, please contact +** Nokia at qt-info@nokia.com. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include +#include + +#include "mainwindow.h" + +const int InsertTextButton = 10; + +MainWindow::MainWindow() +{ + createActions(); + createToolBox(); + createMenus(); + + scene = new DiagramScene(itemMenu); + scene->setSceneRect(QRectF(0, 0, 1000, 1000)); + connect(scene, SIGNAL(textInserted(QGraphicsTextItem*)), + this, SLOT(textInserted(QGraphicsTextItem*))); + + createToolbars(); + + QHBoxLayout *layout = new QHBoxLayout; + layout->addWidget(toolBox); + view = new QGraphicsView(scene); + layout->addWidget(view); + + QWidget *widget = new QWidget; + widget->setLayout(layout); + + setCentralWidget(widget); + setWindowTitle(tr("SIE Code Generator (Block Editor)")); + setUnifiedTitleAndToolBarOnMac(true); + myFilePath = ""; + + if(QApplication::argc()>1) + {newDiagram(QString(QApplication::argv()[1]));} +} + +void MainWindow::deleteItem() +{ + foreach (QGraphicsItem *item, scene->selectedItems()) + { + if (item->type() == Arrow::Type) { + qgraphicsitem_cast(item)->removeLines(); + scene->removeItem(item); + delete(item); + } + //If line is deleted then is romoved from the arrow owner + else if (item->type() == lineItem::Type && + !qgraphicsitem_cast(item)->itemIsMovable()) { + + qgraphicsitem_cast(item)->myOwner()->removeLine( + qgraphicsitem_cast(item)); + qgraphicsitem_cast(item)->myOwner()->updatePosition(); + scene->removeItem(item); + delete(item); + } + else if (item->type() == DiagramTextItem::Type) { + if(qgraphicsitem_cast(item)->styleIO()!=0xFFF) + { + scene->removeTextItem(qgraphicsitem_cast + (item)); + scene->removeItem(item); + delete(item); + } + } + } +} + +void MainWindow::textInserted(QGraphicsTextItem*) +{ + buttonGroup->button(selectedButton)->setChecked(false); + scene->setMode(DiagramScene::MoveItem); +} + + +void MainWindow::sceneScaleChanged(const QString &scale) +{ + double newScale = scale.left(scale.indexOf(tr("%"))).toDouble() / 100.0; + QMatrix oldMatrix = view->matrix(); + view->resetMatrix(); + view->translate(oldMatrix.dx(), oldMatrix.dy()); + view->scale(newScale, newScale); +} + +void MainWindow::about() +{ + QMessageBox::question(this, tr("About SIE Code Generator"), + tr("TODO :)")); +} + +QWidget *MainWindow::createToolButton(int ID, QString type, QIcon icon) +{ + QToolButton *button = new QToolButton; + button->setIcon(icon); + button->setIconSize(QSize(50, 50)); + button->setCheckable(true); + button->setText(type); + buttonGroup->addButton(button,ID); + + QGridLayout *layout = new QGridLayout; + layout->addWidget(button, 0, 0, Qt::AlignHCenter); + layout->addWidget(new QLabel(type), 1, 0, Qt::AlignCenter); + + QWidget *widget = new QWidget; + widget->setLayout(layout); + + return widget; +} + +void MainWindow::createToolBox() +{ + buttonGroup = new QButtonGroup; + buttonGroup->setExclusive(false); + connect(buttonGroup, SIGNAL(buttonClicked(int)), + this, SLOT(buttonGroupClicked(int))); + + QGridLayout *layout = new QGridLayout; + //INPUTS + int i=0; + layout->addWidget(createToolButton(129+i,tr("Bool"), + QIcon(":/images/background1.png")),++i,0); + layout->addWidget(createToolButton(129+i,tr("Char"), + QIcon(":/images/background1.png")),++i,0); + layout->addWidget(createToolButton(129+i,tr("Integer"), + QIcon(":/images/background1.png")),++i,0); + layout->addWidget(createToolButton(129+i,tr("Double"), + QIcon(":/images/background1.png")),++i,0); + layout->addWidget(createToolButton(129+i,tr("Float"), + QIcon(":/images/background1.png")),++i,0); + + //OUTPUTS + i=0; + layout->addWidget(createToolButton(i,tr("Bool"), + QIcon(":/images/background3.png")),++i,1); + layout->addWidget(createToolButton(i,tr("Char"), + QIcon(":/images/background3.png")),++i,1); + layout->addWidget(createToolButton(i,tr("Integer"), + QIcon(":/images/background3.png")),++i,1); + layout->addWidget(createToolButton(i,tr("Double"), + QIcon(":/images/background3.png")),++i,1); + layout->addWidget(createToolButton(i,tr("Float"), + QIcon(":/images/background3.png")),++i,1); + + layout->setRowStretch(3, 10); + layout->setColumnStretch(2, 10); + QWidget *ioWidget = new QWidget; + ioWidget->setLayout(layout); + + layout = new QGridLayout; + //Labels + layout->addWidget(createToolButton(256,tr("Label"), + QIcon(":/images/background4.png")),0,0); + //Values + layout->addWidget(createToolButton(257,tr("Value"), + QIcon(":/images/background4.png")),0,1); + + //Polygon + layout->addWidget(createToolButton(258,tr("Polygon"), + QIcon(":/images/background2.png")),1,0); + + layout->setRowStretch(3, 10); + layout->setColumnStretch(2, 10); + QWidget *labelWidget = new QWidget; + labelWidget->setLayout(layout); + + + toolBox = new QToolBox; + toolBox->setSizePolicy(QSizePolicy(QSizePolicy::Maximum, QSizePolicy::Ignored)); + toolBox->setMinimumWidth(labelWidget->sizeHint().width()); + toolBox->addItem(labelWidget, tr("Basic draw")); + toolBox->addItem(ioWidget, tr("Inputs/Outputs")); + +} + +void MainWindow::buttonGroupClicked(int id) +{ + QList buttons = buttonGroup->buttons(); + foreach (QAbstractButton *button, buttons) + {if (buttonGroup->button(id) != button) button->setChecked(false);} + selectedButton=id; + + if(id==258) + { //Polygon edition + scene->setMode(DiagramScene::EditPolygon); + } else { + scene->setMode(DiagramScene::InsertText); + } + + scene->setTextType(id,buttonGroup->button(id)->text()); + +} + +void MainWindow::createActions() +{ + + deleteAction = new QAction(QIcon(":/images/delete.png"), + tr("&Delete"), this); + deleteAction->setShortcut(tr("Ctrl+Delete")); + deleteAction->setStatusTip(tr("Delete item from diagram")); + connect(deleteAction, SIGNAL(triggered()), + this, SLOT(deleteItem())); + + + newAction = new QAction(QIcon(":/images/new.png"),tr("&New"),this); + newAction->setShortcuts(QKeySequence::New); + newAction->setStatusTip("New diagram"); + connect(newAction,SIGNAL(triggered()),this,SLOT(newDiagram())); + + saveAction = new QAction(QIcon(":/images/save.png"),tr("&Save"),this); + saveAction->setShortcuts(QKeySequence::Save); + saveAction->setStatusTip("Save current diagram"); + connect(saveAction,SIGNAL(triggered()),this,SLOT(saveDiagram())); + + saveAsAction = new QAction(QIcon(":/images/save_as.png"), + tr("Save &As..."),this); + saveAsAction->setShortcuts(QKeySequence::SaveAs); + saveAsAction->setStatusTip("Save current diagram with another name"); + connect(saveAsAction,SIGNAL(triggered()),this,SLOT(saveAsDiagram())); + + openAction = new QAction(QIcon(":/images/open.png"),tr("&Open"),this); + openAction->setShortcuts(QKeySequence::Open); + openAction->setStatusTip("Open diagram"); + connect(openAction,SIGNAL(triggered()),this,SLOT(openDiagram())); + + exitAction = new QAction(tr("E&xit"), this); + exitAction->setShortcuts(QKeySequence::Quit); + exitAction->setStatusTip(tr("Quit diagram editor")); + connect(exitAction, SIGNAL(triggered()), this, SLOT(close())); + + aboutAction = new QAction(tr("A&bout"), this); + aboutAction->setShortcut(tr("Ctrl+B")); + connect(aboutAction, SIGNAL(triggered()), + this, SLOT(about())); +} + +void MainWindow::createMenus() +{ + fileMenu = menuBar()->addMenu(tr("&File")); + fileMenu->addAction(newAction); + fileMenu->addAction(openAction); + fileMenu->addSeparator(); + fileMenu->addAction(saveAction); + fileMenu->addAction(saveAsAction); + fileMenu->addSeparator(); + fileMenu->addAction(exitAction); + + itemMenu = menuBar()->addMenu(tr("&Item")); + itemMenu->addAction(deleteAction); + + aboutMenu = menuBar()->addMenu(tr("&Help")); + aboutMenu->addAction(aboutAction); +} + +void MainWindow::createToolbars() +{ + fileToolBar = addToolBar(tr("File")); + fileToolBar->addAction(newAction); + fileToolBar->addAction(openAction); + fileToolBar->addAction(saveAction); + + editToolBar = addToolBar(tr("Edit")); + editToolBar->addAction(deleteAction); + + sceneScaleCombo = new QComboBox; + QStringList scales; + scales << tr("75%") << tr("100%") << tr("125%") << tr("150%") << tr("175%"); + sceneScaleCombo->addItems(scales); + sceneScaleCombo->setCurrentIndex(1); + connect(sceneScaleCombo, SIGNAL(currentIndexChanged(QString)), + this, SLOT(sceneScaleChanged(QString))); + + editToolBar->addWidget(sceneScaleCombo); +} + +bool MainWindow::newDiagram(QString filePath) +{ + saveIfNeeded(); + scene->cleanScene(); + myFilePath=""; + + if(filePath=="") + return 0; + + myFilePath=filePath; + QFile file(myFilePath); + if(file.open(QIODevice::ReadOnly | QIODevice::Text)) + { + QDomDocument document; + bool parsing=document.setContent(&file); + file.close(); + if(!parsing) + { + QMessageBox::warning(this,"Aborting","Failed to parse file, " + "wrong format or encoding."); + return 0; + } + scene->fromXmlFormat(document); + return 1; + } + else + QMessageBox::critical(this,"Error","Could not open file for read."); + + return 0; + +} + +void MainWindow::saveIfNeeded() +{ + if(myFilePath!="" || scene->items().count()>0) + {}//TODO save opened or modified diagram +} + +bool MainWindow::openDiagram() +{ + QString + filePath = QFileDialog::getOpenFileName(this,"Open", + currentDir(),"Custom item for SIE code generator (*.die)"); + + if(filePath.isEmpty()) + return 0; + + if(!QFileInfo(filePath).isReadable()) + { + QMessageBox::critical(this,"Error","File is not readable " + " or not exists."); + return 0; + } + + newDiagram(filePath); + return 0; +} + +bool MainWindow::saveDiagram() +{ + if(myFilePath=="") + { + saveAsDiagram(); + return 0; + } + if(!QFileInfo(myFilePath).isWritable() && QFileInfo(myFilePath).exists()) + { + QMessageBox::critical(this,"Error","File is not writable."); + return 0; + } + QFile file(myFilePath); + if(file.open(QIODevice::WriteOnly | QIODevice::Text)) + { + QDomDocument document = scene->toXmlFormat(); + QTextStream out(&file); + out.setCodec("UTF-8"); + out << document.toString(4); + file.close(); + return 1; + } + else + QMessageBox::critical(this,"Error","Could not open file for write."); + return 0; +} + +bool MainWindow::saveAsDiagram() +{ + QString filePath = QFileDialog::getSaveFileName(this,"Save as...", + currentDir(),"Custom item for SIE code generator (*.die)"); + + if(!filePath.isEmpty()) + { + myFilePath = filePath; + saveDiagram(); + return 1; + } + return 0; +} diff --git a/Software/sie_cg/block_editor/mainwindow.h b/Software/sie_cg/block_editor/mainwindow.h new file mode 100644 index 0000000..3728a0a --- /dev/null +++ b/Software/sie_cg/block_editor/mainwindow.h @@ -0,0 +1,136 @@ +/**************************************************************************** +** +** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial Usage +** Licensees holding valid Qt Commercial licenses may use this file in +** accordance with the Qt Commercial License Agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Nokia. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** If you have questions regarding the use of this file, please contact +** Nokia at qt-info@nokia.com. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef MAINWINDOW_H +#define MAINWINDOW_H + +#include +#include +#include + +#include "diagramscene.h" +#include "diagramtextitem.h" +#include "lineitem.h" +#include "arrow.h" + +class DiagramScene; + +QT_BEGIN_NAMESPACE +class QAction; +class QToolBox; +class QSpinBox; +class QComboBox; +class QFontComboBox; +class QButtonGroup; +class QLineEdit; +class QGraphicsTextItem; +class QFont; +class QToolButton; +class QAbstractButton; +class QGraphicsView; +QT_END_NAMESPACE + +class MainWindow : public QMainWindow +{ + Q_OBJECT + +public: + MainWindow(); + QString filePath() const + { return myFilePath;} + QString currentDir() const + { return QDir::currentPath();} + + void saveIfNeeded(); + +private slots: + void deleteItem(); + void sceneScaleChanged(const QString &scale); + void about(); + bool newDiagram(QString pathFile=""); + bool openDiagram(); + bool saveDiagram(); + bool saveAsDiagram(); + void buttonGroupClicked(int id); + void textInserted(QGraphicsTextItem*); + +private: + void createToolBox(); + void createActions(); + void createMenus(); + void createToolbars(); + QWidget *createToolButton(int ID, QString type,QIcon icon); + + DiagramScene *scene; + QGraphicsView *view; + + QAction *newAction; + QAction *saveAction; + QAction *saveAsAction; + QAction *openAction; + + QAction *exitAction; + QAction *addAction; + QAction *deleteAction; + + QAction *aboutAction; + + QMenu *fileMenu; + QMenu *itemMenu; + QMenu *aboutMenu; + + QToolBar *fileToolBar; + QToolBar *editToolBar; + + QToolBox *toolBox; + + QComboBox *sceneScaleCombo; + + QButtonGroup *buttonGroup; + + int selectedButton; + + QString myFilePath; + +}; + + +#endif diff --git a/Software/sie_cg/block_editor/test_block1.die b/Software/sie_cg/block_editor/test_block1.die new file mode 100644 index 0000000..7f7a8ff --- /dev/null +++ b/Software/sie_cg/block_editor/test_block1.die @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/Software/sie_cg/block_editor/test_block2.die b/Software/sie_cg/block_editor/test_block2.die new file mode 100644 index 0000000..b9c3df7 --- /dev/null +++ b/Software/sie_cg/block_editor/test_block2.die @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/Software/sie_cg/block_editor/test_block3.die b/Software/sie_cg/block_editor/test_block3.die new file mode 100644 index 0000000..870441d --- /dev/null +++ b/Software/sie_cg/block_editor/test_block3.die @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/Software/sie_cg/block_editor/test_block4.die b/Software/sie_cg/block_editor/test_block4.die new file mode 100644 index 0000000..2993401 --- /dev/null +++ b/Software/sie_cg/block_editor/test_block4.die @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Software/sie_cg/diagramitem.cpp b/Software/sie_cg/diagramitem.cpp new file mode 100644 index 0000000..3a81d4c --- /dev/null +++ b/Software/sie_cg/diagramitem.cpp @@ -0,0 +1,295 @@ +/**************************************************************************** +** +** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial Usage +** Licensees holding valid Qt Commercial licenses may use this file in +** accordance with the Qt Commercial License Agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Nokia. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** If you have questions regarding the use of this file, please contact +** Nokia at qt-info@nokia.com. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include + +#include "diagramitem.h" +#include "arrow.h" +#include "diagramtextitem.h" +#include "lineitem.h" + +DiagramItem::DiagramItem( + QMenu *contextMenu, + QString diagramType, + QDomElement *domElement, + QGraphicsItem *parent, QGraphicsScene *scene, + QPointF position, double zV) + : QGraphicsPolygonItem(parent, scene) +{ + myDiagramType = diagramType; + myContextMenu = contextMenu; + myOwnerScene = scene; + myDomElement=domElement; + setPos(position); + setZValue(zV); + myColor = Qt::white; + + for (QDomNode node = myDomElement->firstChild() ; + !node.isNull() ; + node = node.nextSibling()) + { + QDomElement element = node.toElement(); + if(element.tagName()=="Polygon") + { + //READING POLYGON POINTS + QList points; + for (QDomNode node = element.firstChild() ; + !node.isNull() ; + node = node.nextSibling()) + { + QDomElement point = node.toElement(); + if(point.tagName()=="Point") + points.append(QPointF( + point.attribute("x").toFloat(), + point.attribute("y").toFloat())); + } + //CREATING POLYGON + if(points.count()>0) + foreach(QPointF p, points) + myPolygon << p; + + } + else if(element.tagName()=="TextItems" && myOwnerScene!=0) + { + for (QDomNode node = element.firstChild() ; + !node.isNull() ; + node = node.nextSibling()) + { + QDomElement textItemE = node.toElement(); + if(textItemE.tagName()=="TextItem") + { + int myStyleIO = textItemE.attribute("myStyleIO"). + toInt(); + int myID = textItemE.attribute("ID").toInt(); + bool editableItem = textItemE.attribute("editableItem"). + toInt(); + QPointF posOffset= + QPointF(textItemE.attribute("posOffset-x"). + toFloat(), + -textItemE.attribute("posOffset-y"). + toFloat()); + QString itemString=textItemE.attribute("text"); + + DiagramTextItem * newTextItem = + new DiagramTextItem(0,0,editableItem,this,myStyleIO, + myID,itemString,posOffset); + myOwnerScene->addItem(newTextItem); + addText(newTextItem); + } + + } + } + } + + setPolygon(myPolygon); + setFlag(QGraphicsItem::ItemIsMovable, true); + setFlag(QGraphicsItem::ItemIsSelectable, true); +} + +bool DiagramItem::setValue(unsigned char ID, QString value) +{ + foreach(DiagramTextItem *item, textItems) + { + if(item->isEditable()) + { + if(item->textID()==ID) + item->setPlainText(value); + } + } + return 1; +} + +DiagramTextItem *DiagramItem::pointerText(unsigned char ID) +{ + foreach(DiagramTextItem *item, textItems) + { + if(item->textID()==ID) + return item; + } + return 0; +} + +unsigned char DiagramItem::existArrow(DiagramTextItem *startItem, + DiagramTextItem *endItem) +{ + foreach (Arrow *arrow, arrows) { + if(arrow->startItem() == startItem && + arrow->endItem() == endItem) + return 1; //Already exist + else if(arrow->endItem()== endItem) + return 1; //End item (INPOUT) already connected + } + return 0; +} + +void DiagramItem::removeArrow(Arrow *arrow) +{ + int index = arrows.indexOf(arrow); + + if (index != -1) + arrows.removeAt(index); +} + +void DiagramItem::removeArrows() +{ + foreach (Arrow *arrow, arrows) { + arrow->startItem()->ownerItem()->removeArrow(arrow); + arrow->endItem()->ownerItem()->removeArrow(arrow); + arrow->removeLines(); + scene()->removeItem(arrow); + delete arrow; + } +} + +void DiagramItem::addArrow(Arrow *arrow) +{ + arrows.append(arrow); +} + +void DiagramItem::removeTextItem(DiagramTextItem *textItem) +{ + int index = textItems.indexOf(textItem); + + if (index != -1) + textItems.removeAt(index); +} + +void DiagramItem::removeTextItems() +{ + foreach (DiagramTextItem *textItem, textItems) { + textItem->ownerItem()->removeTextItem(textItem); + scene()->removeItem(textItem); + delete textItem; + } +} + +QPixmap DiagramItem::image() const +{ + QSize mySize=this->boundingRect().size().toSize()*1.4; + QPixmap pixmap(mySize); + pixmap.fill(Qt::transparent); + QPainter painter(&pixmap); + int penWidth; + if(mySize.width()>mySize.height()) + penWidth = int(mySize.width()/32); + else + penWidth = int(mySize.height()/32); + + painter.setPen(QPen(Qt::black, penWidth)); + painter.translate(mySize.width()/2, mySize.height()/2); + QPolygonF Polygon = myPolygon; + Polygon = Polygon << Polygon.first(); //Adjust the last segment + painter.drawPolyline(Polygon); + //TODO text on icon may be interesting + return pixmap; +} + +void DiagramItem::contextMenuEvent(QGraphicsSceneContextMenuEvent *event) +{ + scene()->clearSelection(); + setSelected(true); + myContextMenu->exec(event->screenPos()); +} + +QVariant DiagramItem::itemChange(GraphicsItemChange change, + const QVariant &value) +{ + if (change == QGraphicsItem::ItemPositionChange) { + foreach (Arrow *arrow, arrows) { + arrow->updatePosition(); + } + + } + return value; +} + +void DiagramItem::mouseMoveEvent(QGraphicsSceneMouseEvent *mouseEvent) +{ + foreach (DiagramTextItem *texts, textItems) { + texts->updatePosition(); + } + foreach (Arrow *arrow, arrows) { + arrow->updatePosition(); + } + QGraphicsPolygonItem::mouseMoveEvent(mouseEvent); +} + +void DiagramItem::mouseReleaseEvent(QGraphicsSceneMouseEvent *mouseEvent) +{ + foreach (DiagramTextItem *texts, textItems) { + texts->updatePosition(); + } + foreach (Arrow *arrow, arrows) { + arrow->updatePosition(); + } + QGraphicsPolygonItem::mouseReleaseEvent(mouseEvent); +} + +QDomElement DiagramItem::toXml(QDomDocument &document) const +{ + QDomElement diagramItem = document.createElement("DiagramItem"); + + //Set attibutes; type and position + diagramItem.setAttribute("type",diagramType()); + diagramItem.setAttribute("x",pos().x()); + diagramItem.setAttribute("y",pos().y()); + diagramItem.setAttribute("z",zValue()); + diagramItem.setAttribute("color",myColor.name()); + + //Lists of values (text on editable labels) + int i=0; + QDomElement diagramValues = document.createElement("diagramValues"); + foreach(DiagramTextItem *item, textItems) + { + if(item->isEditable()) + { + QDomElement diagramValue = document.createElement("diagramValue"); + diagramValue.setAttribute("value", item->toPlainText()); + diagramValue.setAttribute("ID", item->textID()); + i++; + diagramValues.appendChild(diagramValue); + } + } + diagramItem.appendChild(diagramValues); + + return (diagramItem); +} + diff --git a/Software/sie_cg/diagramitem.h b/Software/sie_cg/diagramitem.h new file mode 100644 index 0000000..cf98f1d --- /dev/null +++ b/Software/sie_cg/diagramitem.h @@ -0,0 +1,141 @@ +/**************************************************************************** +** +** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial Usage +** Licensees holding valid Qt Commercial licenses may use this file in +** accordance with the Qt Commercial License Agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Nokia. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** If you have questions regarding the use of this file, please contact +** Nokia at qt-info@nokia.com. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef DIAGRAMITEM_H +#define DIAGRAMITEM_H + +#include +#include +#include +#include +#include + +QT_BEGIN_NAMESPACE +class QPixmap; +class QGraphicsItem; +class QGraphicsScene; +class QTextEdit; +class QGraphicsSceneMouseEvent; +class QMenu; +class QGraphicsSceneContextMenuEvent; +class QPainter; +class QStyleOptionGraphicsItem; +class QWidget; +class QPolygonF; +QT_END_NAMESPACE + +class QObject; + +class Arrow; +class DiagramTextItem; + +class DiagramItem : public QGraphicsPolygonItem +{ +public: + enum { Type = UserType + 15 }; + + DiagramItem(QMenu *contextMenu, + QString diagramType, + QDomElement *domElement, + QGraphicsItem *parent = 0, QGraphicsScene *scene = 0, + QPointF position = QPointF(0,0), double zV=500); + + void removeArrow(Arrow *arrow); + void removeArrows(); + void addArrow(Arrow *arrow); + + void addText(DiagramTextItem *externalTextItem) + { textItems.append(externalTextItem);} + + void removeTextItem(DiagramTextItem *textItem); + void removeTextItems(); + + QString diagramType() const + { return myDiagramType; } + + QPolygonF polygon() const + { return myPolygon; } + + QDomElement *getDomElement() + {return myDomElement;} + + QPixmap image() const; + + int type() const + { return Type;} + + QList getTextItems() const + { return textItems;} + + unsigned char existArrow(DiagramTextItem *startItem, + DiagramTextItem *endItem); + + + void mousePressEvent(QGraphicsSceneMouseEvent *mouseEvent) + {QGraphicsPolygonItem::mousePressEvent(mouseEvent);} + void mouseMoveEvent(QGraphicsSceneMouseEvent *mouseEvent); + void mouseReleaseEvent(QGraphicsSceneMouseEvent *mouseEvent); + + QDomElement toXml(QDomDocument &) const; + + bool setValue(unsigned char ioID, QString value); + DiagramTextItem * pointerText(unsigned char ID); + + void setColor(const QColor &color) + { myColor=color; setBrush(color); } + +protected: + void contextMenuEvent(QGraphicsSceneContextMenuEvent *event); + QVariant itemChange(GraphicsItemChange change, const QVariant &value); + +private: + QString myDiagramType; + QPolygonF myPolygon; + QMenu *myContextMenu; + QList arrows; + QList textItems; + QGraphicsScene *myOwnerScene; + DiagramTextItem *textItem; + QColor myColor; + QDomElement *myDomElement; +}; + +#endif diff --git a/Software/sie_cg/diagramscene.cpp b/Software/sie_cg/diagramscene.cpp new file mode 100644 index 0000000..82582fe --- /dev/null +++ b/Software/sie_cg/diagramscene.cpp @@ -0,0 +1,545 @@ +/**************************************************************************** +** +** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial Usage +** Licensees holding valid Qt Commercial licenses may use this file in +** accordance with the Qt Commercial License Agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Nokia. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** If you have questions regarding the use of this file, please contact +** Nokia at qt-info@nokia.com. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include +#include +#include "diagramscene.h" +#include "arrow.h" + +DiagramScene::DiagramScene(QMenu *itemMenu, MainWindow *ownerWindow, + QObject *parent) + : QGraphicsScene(parent) +{ + myItemMenu = itemMenu; + myMode = MoveItem; + myItemType = ""; + line = 0; + textItem = 0; + myItemColor = Qt::white; + myTextColor = Qt::black; + myLineColor = Qt::black; + snapToGrid=1; + myGrid=10; + drawGrid=1; + myOwnerWindow=ownerWindow; +} + +void DiagramScene::setLineColor(const QColor &color) +{ + myLineColor = color; + if (isItemChange(Arrow::Type)) { + Arrow *item = + qgraphicsitem_cast(selectedItems().first()); + item->setColor(myLineColor); + update(); + } +} + +void DiagramScene::setTextColor(const QColor &color) +{ + myTextColor = color; + if (isItemChange(DiagramTextItem::Type)) { + DiagramTextItem *item = + qgraphicsitem_cast(selectedItems().first()); + item->setDefaultTextColor(myTextColor); + } +} + +void DiagramScene::setItemColor(const QColor &color) +{ + myItemColor = color; + if (isItemChange(DiagramItem::Type)) { + DiagramItem *item = + qgraphicsitem_cast(selectedItems().first()); + item->setColor(myItemColor); + } +} + +void DiagramScene::setFont(const QFont &font) +{ + myFont = font; + + if (isItemChange(DiagramTextItem::Type)) { + QGraphicsTextItem *item = + qgraphicsitem_cast(selectedItems().first()); + //At this point the selection can change so the first selected item might not be a DiagramTextItem + if (item) + item->setFont(myFont); + } +} + +void DiagramScene::setMode(Mode mode) +{ + myMode = mode; +} + +void DiagramScene::setItemType(QString type) +{ + myItemType = type; +} + +void DiagramScene::editorLostFocus(DiagramTextItem *item) +{ + QTextCursor cursor = item->textCursor(); + cursor.clearSelection(); + item->setTextCursor(cursor); + + if (item->toPlainText().isEmpty()) { + removeItem(item); + item->deleteLater(); + } +} + +void DiagramScene::mousePressEvent(QGraphicsSceneMouseEvent *mouseEvent) +{ + doSnapToGrid(mouseEvent); + + if (mouseEvent->button() != Qt::LeftButton) + return; + + DiagramItem *item; + switch (myMode) { + case InsertItem: + item = new DiagramItem(myItemMenu,myItemType, + domElementsByName.value(myItemType),0,this); + item->setColor(myItemColor); + addItem(item); + item->setPos(mouseEvent->scenePos()); + emit itemInserted(item); + break; + case InsertLine: + line = new QGraphicsLineItem(QLineF(mouseEvent->scenePos(), + mouseEvent->scenePos())); + line->setPen(QPen(myLineColor, 2)); + line->setZValue(1000.0); + addItem(line); + snapToGrid=0; + break; + case InsertText: + textItem = new DiagramTextItem(); + textItem->setFont(myFont); + textItem->setTextInteractionFlags(Qt::TextEditorInteraction); + textItem->setZValue(1000.0); + connect(textItem, SIGNAL(lostFocus(DiagramTextItem*)), + this, SLOT(editorLostFocus(DiagramTextItem*))); + connect(textItem, SIGNAL(selectedChange(QGraphicsItem*)), + this, SIGNAL(itemSelected(QGraphicsItem*))); + addItem(textItem); + textItem->setDefaultTextColor(myTextColor); + textItem->setPos(mouseEvent->scenePos()); + emit textInserted(textItem); + default: + ; + } + QGraphicsScene::mousePressEvent(mouseEvent); +} + +void DiagramScene::doSnapToGrid(QGraphicsSceneMouseEvent *mouseEvent) +{ + if(snapToGrid){ + mouseEvent->setScenePos(QPointF( + int(mouseEvent->scenePos().x()/myGrid)*myGrid, + int(mouseEvent->scenePos().y()/myGrid)*myGrid + )); + } +} + +void DiagramScene::mouseMoveEvent(QGraphicsSceneMouseEvent *mouseEvent) +{ + doSnapToGrid(mouseEvent); + if (myMode == InsertLine && line != 0) { + QLineF newLine(line->line().p1(), mouseEvent->scenePos()); + line->setLine(newLine); + } else if (myMode == MoveItem) { + QGraphicsScene::mouseMoveEvent(mouseEvent); + } +} + +void DiagramScene::mouseDoubleClickEvent(QGraphicsSceneMouseEvent *mouseEvent) +{ + doSnapToGrid(mouseEvent); + QGraphicsScene::mouseDoubleClickEvent(mouseEvent); +} + +void DiagramScene::mouseReleaseEvent(QGraphicsSceneMouseEvent *mouseEvent) +{ + doSnapToGrid(mouseEvent); + if (line != 0 && myMode == InsertLine) { + QList startItems = items(line->line().p1()); + if (startItems.count() && startItems.first() == line) + startItems.removeFirst(); + QList endItems = items(line->line().p2()); + if (endItems.count() && endItems.first() == line) + endItems.removeFirst(); + + removeItem(line); + delete line; + //Diferents items and valid type + if (startItems.count() > 0 && endItems.count() > 0 && + startItems.first()->type() == DiagramTextItem::Type && + endItems.first()->type() == DiagramTextItem::Type && + startItems.first() != endItems.first()) + { + DiagramTextItem *startItem_ = + qgraphicsitem_cast(startItems.first()); + DiagramTextItem *endItem_ = + qgraphicsitem_cast(endItems.first()); + + //Real first and end item + DiagramTextItem *startItem = startItem_; + DiagramTextItem *endItem = endItem_; + if(startItem_->styleIO()>>7) + { + startItem = endItem_; + endItem = startItem_; + } + + //Inputs to outputs and diferent owner diagram item + if(startItem->styleIO()>0 && + endItem->styleIO()>0 && + (startItem->styleIO()>>7 != endItem->styleIO()>>7) && + (startItem->ownerItem() != endItem->ownerItem()) && + !endItem->ownerItem()->existArrow(startItem,endItem) + ) + { + Arrow *arrow = new Arrow(startItem, endItem,0,this); + arrow->setColor(myLineColor); + startItem->ownerItem()->addArrow(arrow); + endItem->ownerItem()->addArrow(arrow); + arrow->setZValue(0.0); + addItem(arrow); + arrow->updatePosition(); + } + } + } + line = 0; + snapToGrid=1; + QGraphicsScene::mouseReleaseEvent(mouseEvent); +} + +bool DiagramScene::isItemChange(int type) +{ + foreach (QGraphicsItem *item, selectedItems()) { + if (item->type() == type) + return true; + } + return false; +} + +QDomDocument DiagramScene::toXmlFormat() +{ + QDomDocument document; + QDomComment initialComments=document.createComment( + "\nFile for SIE Code Generator.\n" + "**WARNING**If you are going to edit this file note that:\n" + "In order to segmentation faults prevention the load process \n" + "is started loading the libraries, then items and finally arrows.\n" + "Arrows depend of items, and items depend of libraries!!!!\n"); + document.appendChild(initialComments); + QDomElement diagram = document.createElement("Diagram"); + document.appendChild(diagram); + + //Lists of items + QList Items; + QList Arrows; + foreach(QGraphicsItem *item, items()) + { + if(item->type() == DiagramItem::Type) + Items.append(qgraphicsitem_cast(item)); + else if(item->type() == Arrow::Type) + Arrows.append(qgraphicsitem_cast(item)); + } + //Create the XML structure + QDomElement element; + if(!libraryList.isEmpty()) + { + QDomElement libraries = document.createElement("Libraries"); + foreach(QString lib, libraryList) + { + element = document.createElement("Library"); + element.setAttribute("Dir",lib); + libraries.appendChild(element); + } + diagram.appendChild(libraries); + + } + if(!Items.isEmpty()) + { + QDomElement diagramItems = document.createElement("DiagramItems"); + foreach(DiagramItem *item, Items) + { + element = item->toXml(document); + element.setAttribute("ID",Items.indexOf(item)); //save index + diagramItems.appendChild(element); + } + diagram.appendChild(diagramItems); + } + if(!Arrows.isEmpty()) + { + QDomElement arrowItems = document.createElement("Arrows"); + foreach(Arrow *item, Arrows) + { + element = item->toXml(document,Items); + element.setAttribute("ID",Arrows.indexOf(item)); //save index + arrowItems.appendChild(element); + } + diagram.appendChild(arrowItems); + } + return(document); +} + +int DiagramScene::fromXmlFormat(QDomDocument document) +{ + //Read diagrams TODO: in future... add multi projects functionality + QHash DiagramsID; + QDomNodeList diagrams = document.elementsByTagName("Diagram"); + if(!diagrams.at(0).isElement()) + return 0; + //Load the first diagram in the document + QDomElement diagram = diagrams.at(0).toElement(); + //In order to segmentation faults prevention the load process + //is started loading the libraries, then items and finally arrows. + //Arrows depend of items, and items depend of libraries!!! + //TODO: rewrite this process for reading in the order specified + for (QDomNode node = diagram.firstChild() ; + !node.isNull() ; + node = node.nextSibling()) + { + QDomElement element = node.toElement(); + if(element.tagName()=="Libraries") + { + libraryList.clear(); + for (QDomNode node = element.firstChild() ; + !node.isNull() ; + node = node.nextSibling()) + { + //Load library directory + QDomElement Library = node.toElement(); + if(Library.tagName()!="Library") + return 0; + libraryList.append(Library.attribute("Dir")); + } + myOwnerWindow->updateLibraries(); + } + else if(element.tagName()=="DiagramItems") //Load diagram items + { + for (QDomNode node = element.firstChild() ; + !node.isNull() ; + node = node.nextSibling()) + { + //Load diagram item and add to scene + QDomElement diagramItem = node.toElement(); + if(diagramItem.tagName()!="DiagramItem") + return 0; + + QPointF position = QPointF(diagramItem.attribute("x").toFloat(), + diagramItem.attribute("y").toFloat()); + //PREVENT Segmentation faults: + if(!domElementsByName.contains( + diagramItem.attribute("type"))) + { + QMessageBox::critical(0,"Error",QObject::tr( + "Diagram can't be loaded, because the" + " library for block [") + + diagramItem.attribute("type") +tr( + "] can't be found.")); + return 0; + } + + DiagramItem *newItem=new DiagramItem( + myItemMenu, + diagramItem.attribute("type"), + domElementsByName.value(diagramItem.attribute("type")), + 0,this, position, + diagramItem.attribute("z").toDouble()); + + newItem->setColor(QColor(diagramItem.attribute("color"))); + + addItem(newItem); + DiagramsID.insert(diagramItem.attribute("ID").toInt(),newItem); + for (QDomNode node = diagramItem.firstChild() ; + !node.isNull() ; + node = node.nextSibling()) + { + //Load diagram text values and set on diagram item + QDomElement diagramValues = node.toElement(); + if(diagramValues.tagName()!="diagramValues") + return 0; + + for (QDomNode node = diagramValues.firstChild() ; + !node.isNull() ; + node = node.nextSibling()) + { + QDomElement diagramValue = node.toElement(); + if(diagramValue.tagName()!="diagramValue") + return 0; + newItem->setValue(diagramValue.attribute("ID").toInt(), + diagramValue.attribute("value")); + } + } + } + } + else if(element.tagName()=="Arrows") + { + + for (QDomNode node = element.firstChild() ; + !node.isNull() ; + node = node.nextSibling()) + { + //Load arrow item and add to scene + QDomElement arrow = node.toElement(); + if(arrow.tagName()!="Arrow") + return 0; + + DiagramTextItem *startItem= + DiagramsID.value(arrow.attribute("start-Owner").toInt()) + ->pointerText(arrow.attribute("start-ID").toInt()); + DiagramTextItem *endItem= + DiagramsID.value(arrow.attribute("end-Owner").toInt()) + ->pointerText(arrow.attribute("end-ID").toInt()); + + Arrow *newArrow = new Arrow(startItem, endItem,0,this); + newArrow->setColor(QColor(arrow.attribute("color"))); + startItem->ownerItem()->addArrow(newArrow); + endItem->ownerItem()->addArrow(newArrow); + newArrow->setZValue(0.0); + addItem(newArrow); + newArrow->updatePosition(); + + for (QDomNode node = arrow.firstChild() ; + !node.isNull() ; + node = node.nextSibling()) + { + //Load diagram text values and set on diagram item + QDomElement arrowCorners = node.toElement(); + if(arrowCorners.tagName()!="arrowCorners") + return 0; + int i=0; + for (QDomNode node = arrowCorners.firstChild() ; + !node.isNull() ; + node = node.nextSibling()) + { + QDomElement arrowCorner = node.toElement(); + if(arrowCorner.tagName()!="arrowCorner") + return 0; + + QPointF cornerPos = + QPointF(arrowCorner.attribute("x").toFloat(), + arrowCorner.attribute("y").toFloat()); + + newArrow->createCorner(cornerPos,++i); + } + } + + } + } + } + + return 1; +} + +void DiagramScene::cleanScene() +{ + //Lists of items + QList Items; + QList Arrows; + foreach(QGraphicsItem *item, items()) + { + if(item->type() == DiagramItem::Type) + Items.append(qgraphicsitem_cast(item)); + else if(item->type() == Arrow::Type) + Arrows.append(qgraphicsitem_cast(item)); + } + //Delete only DiagramItems: When a diagramitem is deleted his arrows and + //textitems have to be deleted too, so if we delete only diagramitems then + //we are deleting all items in the scene. This is in order to prevent + //segmentation faults. + foreach(DiagramItem *item, Items) + { + item->removeArrows(); + item->removeTextItems(); + removeItem(item); + delete(item); + } + //Delete the text items without parents + foreach(QGraphicsItem *item, items()) + { + removeItem(item); + delete(item); + } +} + +void DiagramScene::drawBackground(QPainter *p, const QRectF &r) +{ + QGraphicsScene::drawBackground(p,r); + if(drawGrid) + { + p -> save(); + + p -> setRenderHint(QPainter::Antialiasing, false); + p -> setRenderHint(QPainter::TextAntialiasing, true); + p -> setRenderHint(QPainter::SmoothPixmapTransform, false); + + p -> setPen(Qt::NoPen); + p -> setBrush(Qt::white); + p -> drawRect(r); + + + p -> setPen(Qt::black); + p -> setBrush(Qt::NoBrush); + qreal limite_x = r.x() + r.width(); + qreal limite_y = r.y() + r.height(); + + int g_x = (int)ceil(r.x()); + while (g_x % myGrid) ++ g_x; + int g_y = (int)ceil(r.y()); + while (g_y % myGrid) ++ g_y; + + QPolygon points; + for (int gx = g_x ; gx < limite_x ; gx += myGrid) { + for (int gy = g_y ; gy < limite_y ; gy += myGrid) { + points << QPoint(gx, gy); + } + } + p -> drawPoints(points); + p -> restore(); + } +} diff --git a/Software/sie_cg/diagramscene.h b/Software/sie_cg/diagramscene.h new file mode 100644 index 0000000..bded4e3 --- /dev/null +++ b/Software/sie_cg/diagramscene.h @@ -0,0 +1,142 @@ +/**************************************************************************** +** +** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial Usage +** Licensees holding valid Qt Commercial licenses may use this file in +** accordance with the Qt Commercial License Agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Nokia. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** If you have questions regarding the use of this file, please contact +** Nokia at qt-info@nokia.com. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef DIAGRAMSCENE_H +#define DIAGRAMSCENE_H + +#include +#include +#include +#include "diagramitem.h" +#include "diagramtextitem.h" +#include "mainwindow.h" + +QT_BEGIN_NAMESPACE +class QGraphicsSceneMouseEvent; +class QMenu; +class QPointF; +class QGraphicsLineItem; +class QFont; +class QGraphicsTextItem; +class QColor; +QT_END_NAMESPACE +class MainWindow; + +class DiagramScene : public QGraphicsScene +{ + Q_OBJECT + +public: + enum Mode { InsertItem, InsertLine, InsertText, MoveItem }; + + DiagramScene(QMenu *itemMenu, MainWindow *ownerWindow = 0, + QObject *parent = 0); + + QFont font() const + { return myFont; } + QColor textColor() const + { return myTextColor; } + QColor itemColor() const + { return myItemColor; } + 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); + void setDawGrid(bool value) {drawGrid=value;} + + QDomDocument toXmlFormat(); + int fromXmlFormat(QDomDocument xmlDocument); + void cleanScene(); + + QStringList getLibList(){return libraryList;} + void setLibList(QStringList list) + {libraryList=list;} + + void setDomElementsByName(QHash hash) + {domElementsByName=hash;} + + void setButtonIdByName(QHash hash) + {buttonIdByName=hash;} + + +public slots: + void setMode(Mode mode); + void setItemType(QString type); + void editorLostFocus(DiagramTextItem *item); + +signals: + void itemInserted(DiagramItem *item); + void textInserted(QGraphicsTextItem *item); + void itemSelected(QGraphicsItem *item); + +protected: + void mousePressEvent(QGraphicsSceneMouseEvent *mouseEvent); + void mouseMoveEvent(QGraphicsSceneMouseEvent *mouseEvent); + void mouseReleaseEvent(QGraphicsSceneMouseEvent *mouseEvent); + void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *mouseEvent); + void drawBackground(QPainter *p, const QRectF &r); + +private: + bool isItemChange(int type); + void doSnapToGrid(QGraphicsSceneMouseEvent *mouseEvent); + QString myItemType; + QMenu *myItemMenu; + Mode myMode; + bool leftButtonDown; + QPointF startPoint; + QGraphicsLineItem *line; + QFont myFont; + DiagramTextItem *textItem; + QColor myTextColor; + QColor myItemColor; + QColor myLineColor; + bool snapToGrid; + bool drawGrid; + short int myGrid; + QStringList libraryList; + QHash domElementsByName; + QHash buttonIdByName; + MainWindow *myOwnerWindow; +}; + +#endif diff --git a/Software/sie_cg/diagramscene.pro b/Software/sie_cg/diagramscene.pro new file mode 100644 index 0000000..995ecc2 --- /dev/null +++ b/Software/sie_cg/diagramscene.pro @@ -0,0 +1,33 @@ +HEADERS = mainwindow.h \ + diagramitem.h \ + diagramscene.h \ + arrow.h \ + diagramtextitem.h \ + lineitem.h +SOURCES = mainwindow.cpp \ + diagramitem.cpp \ + main.cpp \ + arrow.cpp \ + diagramtextitem.cpp \ + diagramscene.cpp \ + lineitem.cpp +RESOURCES = diagramscene.qrc + +TARGET = diagrameditor + +# install +target.path = $$[QT_INSTALL_EXAMPLES]/graphicsview/diagramscene +sources.files = $$SOURCES \ + $$HEADERS \ + $$RESOURCES \ + $$FORMS \ + diagramscene.pro \ + images +sources.path = $$[QT_INSTALL_EXAMPLES]/graphicsview/diagramscene +INSTALLS += target \ + sources +symbian:include($$QT_SOURCE_TREE/examples/symbianpkgrules.pri) +QT += xml \ + svg \ + network +FORMS += librarydialog.ui diff --git a/Software/sie_cg/diagramscene.pro.user b/Software/sie_cg/diagramscene.pro.user new file mode 100644 index 0000000..d1afe0c --- /dev/null +++ b/Software/sie_cg/diagramscene.pro.user @@ -0,0 +1,247 @@ + + + + RunConfiguration0-BaseEnvironmentBase + 2 + + + RunConfiguration0-CommandLineArguments + + + + RunConfiguration0-ProFile + diagramscene.pro + + + RunConfiguration0-RunConfiguration.name + diagramscene + + + RunConfiguration0-UseDyldImageSuffix + false + + + RunConfiguration0-UseTerminal + false + + + RunConfiguration0-UserEnvironmentChanges + + + + RunConfiguration0-UserSetName + false + + + RunConfiguration0-UserSetWorkingDirectory + false + + + RunConfiguration0-UserWorkingDirectory + + + + RunConfiguration0-type + Qt4ProjectManager.Qt4RunConfiguration + + + activeRunConfiguration + 0 + + + activebuildconfiguration + Debug + + + buildConfiguration-Debug + + Debug + 0 + 0 + + 2 + + + + buildConfiguration-Release + + Release + 0 + + 0 + + + + buildconfiguration-Debug-buildstep0 + + Debug + + DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-MI4KrAyPP5,guid=5c5c5e6146195c74b6ad266d4cc07afd + DEFAULTS_PATH=/usr/share/gconf/gnome.default.path + DESKTOP_SESSION=gnome + DISPLAY=:0.0 + GDMSESSION=gnome + GDM_KEYBOARD_LAYOUT=es + GDM_LANG=en_US.utf8 + GNOME_DESKTOP_SESSION_ID=this-is-deprecated + GNOME_KEYRING_CONTROL=/tmp/keyring-CFAuJK + GNOME_KEYRING_PID=1516 + GTK_MODULES=canberra-gtk-module + HOME=/home/juan64bits + LANG=en_US.utf8 + LANGUAGE= + LD_LIBRARY_PATH=/usr/lib/qtcreator + LOGNAME=juan64bits + MANDATORY_PATH=/usr/share/gconf/gnome.mandatory.path + ORBIT_SOCKETDIR=/tmp/orbit-juan64bits + PATH=/usr/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games + PWD=/home/juan64bits + QTDIR=/usr/share/qt4 + SESSION_MANAGER=local/Maximus:@/tmp/.ICE-unix/1534,unix/Maximus:/tmp/.ICE-unix/1534 + SHELL=/bin/bash + SPEECHD_PORT=7560 + SSH_AGENT_PID=1570 + SSH_AUTH_SOCK=/tmp/keyring-CFAuJK/ssh + USER=juan64bits + USERNAME=juan64bits + XAUTHORITY=/var/run/gdm/auth-for-juan64bits-V4ry7M/database + XDG_CONFIG_DIRS=/etc/xdg/xdg-gnome:/etc/xdg + XDG_DATA_DIRS=/usr/share/gnome:/usr/local/share/:/usr/share/ + XDG_SESSION_COOKIE=b9a7fbc4d869fc15bd6cdd474bcc9a28-1287682812.550485-1725059380 + + + /home/juan64bits/QT/diagramscene/diagramscene.pro + -spec + linux-g++ + -r + CONFIG+=debug + + /usr/bin/qmake-qt4 + false + /home/juan64bits/QT/diagramscene + + + + buildconfiguration-Debug-buildstep1 + + Debug + + DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-MI4KrAyPP5,guid=5c5c5e6146195c74b6ad266d4cc07afd + DEFAULTS_PATH=/usr/share/gconf/gnome.default.path + DESKTOP_SESSION=gnome + DISPLAY=:0.0 + GDMSESSION=gnome + GDM_KEYBOARD_LAYOUT=es + GDM_LANG=en_US.utf8 + GNOME_DESKTOP_SESSION_ID=this-is-deprecated + GNOME_KEYRING_CONTROL=/tmp/keyring-CFAuJK + GNOME_KEYRING_PID=1516 + GTK_MODULES=canberra-gtk-module + HOME=/home/juan64bits + LANG=en_US.utf8 + LANGUAGE= + LD_LIBRARY_PATH=/usr/lib/qtcreator + LOGNAME=juan64bits + MANDATORY_PATH=/usr/share/gconf/gnome.mandatory.path + ORBIT_SOCKETDIR=/tmp/orbit-juan64bits + PATH=/usr/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games + PWD=/home/juan64bits + QTDIR=/usr/share/qt4 + SESSION_MANAGER=local/Maximus:@/tmp/.ICE-unix/1534,unix/Maximus:/tmp/.ICE-unix/1534 + SHELL=/bin/bash + SPEECHD_PORT=7560 + SSH_AGENT_PID=1570 + SSH_AUTH_SOCK=/tmp/keyring-CFAuJK/ssh + USER=juan64bits + USERNAME=juan64bits + XAUTHORITY=/var/run/gdm/auth-for-juan64bits-V4ry7M/database + XDG_CONFIG_DIRS=/etc/xdg/xdg-gnome:/etc/xdg + XDG_DATA_DIRS=/usr/share/gnome:/usr/local/share/:/usr/share/ + XDG_SESSION_COOKIE=b9a7fbc4d869fc15bd6cdd474bcc9a28-1287682812.550485-1725059380 + + false + + -w + + /usr/bin/make + true + /home/juan64bits/QT/diagramscene + + + + buildconfiguration-Debug-cleanstep0 + + Debug + true + + clean + + + + + buildconfiguration-Release-buildstep0 + + Release + + + + buildconfiguration-Release-buildstep1 + + Release + + + + buildconfiguration-Release-cleanstep0 + + Release + + + + buildconfigurations + + Debug + Release + + + + buildstep0 + + + + + + + buildstep1 + + + + + + buildsteps + + trolltech.qt4projectmanager.qmake + trolltech.qt4projectmanager.make + + + + cleanstep0 + + + true + + + + cleansteps + + trolltech.qt4projectmanager.make + + + + defaultFileEncoding + System + + + project + + + diff --git a/Software/sie_cg/diagramscene.qrc b/Software/sie_cg/diagramscene.qrc new file mode 100644 index 0000000..53ef19b --- /dev/null +++ b/Software/sie_cg/diagramscene.qrc @@ -0,0 +1,28 @@ + + + images/pointer.png + images/linepointer.png + images/textpointer.png + images/bold.png + images/italic.png + images/underline.png + images/floodfill.png + images/bringtofront.png + images/delete.png + images/sendtoback.png + images/linecolor.png + images/background1.png + images/background2.png + images/background3.png + images/background4.png + images/exit.png + images/new.png + images/no.png + images/open.png + images/save.png + images/save_as.png + images/yes.png + images/zoom_in.png + images/zoom_out.png + + diff --git a/Software/sie_cg/diagramtextitem.cpp b/Software/sie_cg/diagramtextitem.cpp new file mode 100644 index 0000000..82248ea --- /dev/null +++ b/Software/sie_cg/diagramtextitem.cpp @@ -0,0 +1,162 @@ +/**************************************************************************** +** +** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial Usage +** Licensees holding valid Qt Commercial licenses may use this file in +** accordance with the Qt Commercial License Agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Nokia. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** If you have questions regarding the use of this file, please contact +** Nokia at qt-info@nokia.com. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include + +#include "diagramtextitem.h" +#include "diagramscene.h" + +DiagramTextItem::DiagramTextItem(QGraphicsItem *parent, QGraphicsScene *scene, + bool editable, DiagramItem *ownerItem, unsigned char styleIO, + unsigned char ID, QString defaultText, QPointF offset) + : QGraphicsTextItem(parent, scene) +{ + myOwnerItem = ownerItem; + myStyleIO = styleIO; + myID=ID; + editableItem=editable; + if(myOwnerItem==0) + setZValue(1000.0); + else + setZValue(myOwnerItem->zValue()); + + setPlainText(defaultText); + posOffset=offset; + + if(editable) + { + if (myOwnerItem==0) + setFlag(QGraphicsItem::ItemIsMovable); + setFlag(QGraphicsItem::ItemIsSelectable); + } + else + setFlag(QGraphicsItem::ItemIsFocusable,0); + + updatePosition(); +} + +void DiagramTextItem::updatePosition() +{ + QPointF myOwnerPos; + + + if(myOwnerItem!=0) + { + setZValue(myOwnerItem->zValue()); + myOwnerPos= myOwnerItem->pos(); + } + else + { + setZValue(1000.0); + myOwnerPos=pos(); + } + + if(myStyleIO==0) + setPos(myOwnerPos+posOffset+QPointF(-boundingRect().width()/2, + -boundingRect().height()/2)); + else if(myStyleIO & 0b10000000) + setPos(myOwnerPos+posOffset+QPointF(0,-boundingRect().height()/2)); + else //OUT + setPos(myOwnerPos+posOffset+QPointF(-boundingRect().width(), + -boundingRect().height()/2)); +} + +QVariant DiagramTextItem::itemChange(GraphicsItemChange change, + const QVariant &value) +{ + if (change == QGraphicsItem::ItemSelectedHasChanged) + emit selectedChange(this); + + return value; +} + +void DiagramTextItem::focusOutEvent(QFocusEvent *event) +{ + if(editableItem) + { + if(toPlainText()=="") setPlainText("?"); + if(myOwnerItem!=0) updatePosition(); + setTextInteractionFlags(Qt::NoTextInteraction); + emit lostFocus(this); + QGraphicsTextItem::focusOutEvent(event); + } +} + +void DiagramTextItem::mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event) +{ + if(editableItem) + { + if (textInteractionFlags() == Qt::NoTextInteraction) + setTextInteractionFlags(Qt::TextEditorInteraction); + QGraphicsTextItem::mouseDoubleClickEvent(event); + } +} + +void DiagramTextItem::mousePressEvent(QGraphicsSceneMouseEvent *event) +{ + if (myOwnerItem!=0) + { + setSelected(0); + myOwnerItem->mousePressEvent(event); + } + else + QGraphicsTextItem::mousePressEvent(event); +} + +void DiagramTextItem::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) +{ + if (myOwnerItem!=0) + { + myOwnerItem->mouseReleaseEvent(event); + } + else + QGraphicsTextItem::mouseReleaseEvent(event); +} + +void DiagramTextItem::mouseMoveEvent(QGraphicsSceneMouseEvent *event) +{ + if (myOwnerItem!=0) + { + myOwnerItem->mouseMoveEvent(event); + } + else + QGraphicsTextItem::mouseMoveEvent(event); +} diff --git a/Software/sie_cg/diagramtextitem.h b/Software/sie_cg/diagramtextitem.h new file mode 100644 index 0000000..f4ae616 --- /dev/null +++ b/Software/sie_cg/diagramtextitem.h @@ -0,0 +1,110 @@ +/**************************************************************************** +** +** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial Usage +** Licensees holding valid Qt Commercial licenses may use this file in +** accordance with the Qt Commercial License Agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Nokia. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** If you have questions regarding the use of this file, please contact +** Nokia at qt-info@nokia.com. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef DIAGRAMTEXTITEM_H +#define DIAGRAMTEXTITEM_H + +#include +#include +#include "diagramitem.h" + +QT_BEGIN_NAMESPACE +class QFocusEvent; +class QGraphicsItem; +class QGraphicsScene; +class QGraphicsSceneMouseEvent; +QT_END_NAMESPACE + +class DiagramTextItem : public QGraphicsTextItem +{ + Q_OBJECT + +public: + enum { Type = UserType + 3 }; + + DiagramTextItem( + QGraphicsItem *parent = 0, QGraphicsScene *scene = 0, + bool editable =1, DiagramItem *ownerItem=0, unsigned char styleIO = 0, + unsigned char ID=0, QString defaultText="", + QPointF offset=QPointF(0,0)); + + int type() const + { return Type;} + + unsigned char styleIO() const + { return myStyleIO;} + + unsigned char textID() const + { return myID;} + + QPointF offset() const + { return posOffset;} + + DiagramItem *ownerItem() const + { return myOwnerItem; } + + bool isEditable() + { return editableItem;} + +public slots: + void updatePosition(); + +signals: + void lostFocus(DiagramTextItem *item); + void selectedChange(QGraphicsItem *item); + +protected: + QVariant itemChange(GraphicsItemChange change, const QVariant &value); + void focusOutEvent(QFocusEvent *event); + void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event); + void mousePressEvent(QGraphicsSceneMouseEvent *event); + void mouseReleaseEvent(QGraphicsSceneMouseEvent *event); + void mouseMoveEvent(QGraphicsSceneMouseEvent *event); + +private: + bool editableItem; + DiagramItem *myOwnerItem; + QPointF posOffset; + unsigned char myStyleIO; + unsigned char myID; +}; + +#endif diff --git a/Software/sie_cg/images/background1.png b/Software/sie_cg/images/background1.png new file mode 100644 index 0000000000000000000000000000000000000000..1afe1566a4da4130b1324bd6361dda98eafb4c27 GIT binary patch literal 289 zcmeAS@N?(olHy`uVBq!ia0vp^^&rg13?%;)_Xhwewg8_H*Z=?j1DT##<^r72& zYmT>yN+;Cpnjfmq^1aAQz=>f8Uy<*0PA3nB>wj7wuz7HH3NYkNxVu8zkt5=_e)_SV b{~y_2^K&GI_7qG6p_;mGxZn(4ni879t`2(D%}P3O9PT1xGZ*M$Pps|RGhYu>+ErE2lv;imdKI;Vst0Q<#jK>z>% literal 0 HcmV?d00001 diff --git a/Software/sie_cg/images/background3.png b/Software/sie_cg/images/background3.png new file mode 100644 index 0000000000000000000000000000000000000000..396f5f6fd396cacaaff70438adb85d7734c8b7ac GIT binary patch literal 330 zcmeAS@N?(olHy`uVBq!ia0vp^^&rg13?%;)_Xhwewg8_H*Z=?j1DTb~k5Jf3k!T>m+9yP;nqdv}WLDN(VX!fTGJ zT}`lCARweDw8Z&mtKH003&-<^<+lBCnE&qAnb%+1=Dl1~d9|S7=tcYbI_KMqyC)!p{NCPVplSq`QZEZa*u1vr@sPQO2QST;a~rNKJ5{KUH}!Uz89z1#KL{wuGj XmWrUA=51b}uNgdD{an^LB{Ts5ra*o$ literal 0 HcmV?d00001 diff --git a/Software/sie_cg/images/background4.png b/Software/sie_cg/images/background4.png new file mode 100644 index 0000000000000000000000000000000000000000..7c368ad6b57fed5da2976b2207c8d1c289afba06 GIT binary patch literal 342 zcmeAS@N?(olHy`uVBq!ia0vp^^&rg13?%;)_Xhwewg8_H*Z=?j1DT&Srnzb=2)b^E7LVa?85AAOs~CPyfb!4J|D&7 zXAyB|y)NU5w$+*qUqZth{yYA4TeGQY)tZWH0bBj%epUUVZIH`pUOV&Q3AxJ?92*3W zXsk^tkg$(B_M45ZzhKez+V}r>om-3}m;C!(d-qr?$6V)&_Bzhp4TrQR*sC38t>K>@A(j6D*&Vm2**Z`@FQyej)zp%a(H3{M*AnY0rW! l8-J8XDdttpQMNuUzqa!UGn0m!EieQaJYD@<);T3K0RX~9ic|mq literal 0 HcmV?d00001 diff --git a/Software/sie_cg/images/bold.png b/Software/sie_cg/images/bold.png new file mode 100644 index 0000000000000000000000000000000000000000..986e65e25084f3d313652b8dd248c1d7cae8f6e4 GIT binary patch literal 274 zcmV+t0qy>YP)(Fbo8M z2lQrH7A8r8p993c@02?QX__)52*dDESl2Zd0R;qA-d*T+9EWqZZR5jP3hzWw#Nr?b z^v>(LV%xTAl)mpzv3w|sg30q7ecxvTAp{P?piDrw4bwDP+;!b0{+@Z;Hk_u3W7#2& zV;sj3)y!`nBxJs-s{h+qmPL(5U0%0A%=3&*)1b^}S#~*lo~LkK_vh2vZAhr7EKAk# Y0MNh_$Of+#C;$Ke07*qoM6N<$f{V6t!TM=M0%Y8$2~h%vAT2sdSN z9x3AC`F~SVqK+~4qiDx{=8xWPY(WeT3>y_@luJnb+siEVt-tZ1`GnuxoXU;=|8Hy; z(9vLE;z)cj-<+d4!ARkZ>zvaGVvH;ThYrl=ILu?MpYUt(Bc-;>=gMCsx3D`fDDwPi zd}X^JX^)=KnjIaXG71d^QXEX$>x?Jx0F7DS7+*grPXT1zrJ0Ovrt|kr2J;RSF>p1w z9oW5|r$xxd%>`&Yw;k{M{X%E@BrLfU8a_zsfvJOa+M$h4 z8|quSdgDDNa`px^FeDvJl~`BO#=|mWzXH!6UO{FKg*9=uiZrlIxfTZ$< zG{$TCJZwta1uc1AIRW)3npvK>)9%vHY!fu&?-3mrpvkRITH4+mji15B1a!x~Ac^e2 tufpAq9*Gk?I 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%0DAEP7nMZid{sN6@6 z91#y}+qTW48x2Y%8gYv#g)0D0c`49WD++%MVs9-Z`XDW)AHAG9m_1;Z694zBtyIh4 zTZpPZCHgceB_(yxfB_46ZtOt-d&mJmK!9g%;sH!O;ep2mF`hxzLK}fJx_$e04+5BV z_hW+(L)rZ4F~W&Q{LW zJZ{{$U-OjkV>1E6Kmh&B?c290KR@3c1K68mz*|C)98xH3*REZ?Bfu4V_!vd0_2ZX1 zI91&ywV7qJ&aMH6U1RGQKYsi>++7yVojX@1E9Qwjz!Vo3%L)SspbBI14+2J-^{xe& zD?oAp|HT(y(C43j{^JPX$30cOxr%5tL#xoiH?ZBuH72l_2`q*Fz1KGZ3K<2#4}$1} zF!@IWV7>i;pEiH86!UdVoAbx%{fp%5B#^C?v&_*1~jP*Krw3`+t@EexUUl}BZ z-h%;;vdY(j<$befOAH{04FUjftcBjVaYJTr4Gj&l5ODSCRcXU_@7}$*R|Mu0C3DI> zzybR~8&M~ptJA^XBW*Tn01jt^sQGq6f;VS2{|OT&ywB}(JhBkhPqBId0>w`&jvxl`l#~=%$bww3`i3bdMjt`V*{7UI6>;3a z+l{*2z`*r}fO-AM=q%JHd`A!yC}9E_hyg?U$nzNS%F0S<+!*jR*8IP?UR>qNO*(LR z{4Qzob@bK$$bI07c8peg94N#6MZ{SNPs$9eA@2{2^(ccNwGEX9PIY zWFUQFu?j)Uz}q<6>}zgr#*%%D4jg+d8n>H(yFK3L9>5PywVh2(O@~j0q-0Z#0dA^Q=72WRx(ncJ> zQ4G6&2zXx;Kq^L!K>Lm~+in8xDyia@RMx+ Y0qN^wyJn)Opa1{>07*qoM6N<$f*x(P2LJ#7 literal 0 HcmV?d00001 diff --git a/Software/sie_cg/images/floodfill.png b/Software/sie_cg/images/floodfill.png new file mode 100644 index 0000000000000000000000000000000000000000..54c0dae237849b1ac4c8f74edd2a9f868df636e0 GIT binary patch literal 282 zcmeAS@N?(olHy`uVBq!ia0vp^T0pGL#0(^hKYq#uQak}ZA+G=b|8Hn$0P=tgS1)f1 zAd9gi$S;_|;n|HeAZL%Ki(^PdobTzqoh*htZHWsngj&el=~ufUw2W)>!)JbaM(j+t z*`p6k+Y&m*-QGCti{d?Yr?U^l-S&Rl_D1UcGDjwpO^yu-D(C0UdS}sHSJCWWm$KO) zBV53!M2U6A#7>?k0UbP7T%IVLyK`_xXR~pkLMPLcxv~ih^&I}cWcvG2i|^9E>c)Uu zOnvW}?6@m7=P=gCN-?L&nlLasiEenprD7hS5`JKk_KQi<6YeyC_#cY%WeVb>%WRI@ YUkl7o2x`3@5A+9vr>mdKI;Vst01-}XF8}}l literal 0 HcmV?d00001 diff --git a/Software/sie_cg/images/italic.png b/Software/sie_cg/images/italic.png new file mode 100644 index 0000000000000000000000000000000000000000..9a438b57ad4369dfd110d2f2bdc126890e1aec8e GIT binary patch literal 247 zcmV(sy*Prg8NDWuEbzopr0L)V>;{X5v literal 0 HcmV?d00001 diff --git a/Software/sie_cg/images/linepointer.png b/Software/sie_cg/images/linepointer.png new file mode 100644 index 0000000000000000000000000000000000000000..66933d43b30e4352c763cadb4f0ca3bd80325037 GIT binary patch literal 141 zcmeAS@N?(olHy`uVBq!ia0vp^(jd&p3?#QprHKJ4wg8_H*Z=?j1DTP)1A0e687B!#Lm%BmfS zjSWxldj>ac+a?Z_s+z6!20%orpk3GP?lruq{=t6%Y>e64N{5Y8+F*&ZZV(4{GllSW;AhrI>C^Mf7m%p9hk07*qoM6N<$f)Wjg@&Et; literal 0 HcmV?d00001 diff --git a/Software/sie_cg/images/new.png b/Software/sie_cg/images/new.png new file mode 100644 index 0000000000000000000000000000000000000000..2a8a9d69d615e5ec1d70cf2717b698a1b45b2a63 GIT binary patch literal 1841 zcmV-12hRA3P)T6{#P(71VYyU7mF4oqIt7TrY=?DfF9E$<3#4C^ zn~e(+D<9j*4>9d&{&FyC=;ihzoQpBXiaz zKn!Nu%D+jAz_9k3uwRm0=!7ogB9ePIz=DAfq2oJdxa}Mwe;;-k-$3~_4sp9C5TOFZ zVn#XJnpzLZowaZ%9PVlK%9A?>Q7%Vnfs>aVcq-!p26T_Z_b)fYp>q!OSz(5Q*{SW# zzhSp=DnXcQ0uegEbjH3&i^8Z*TG*YwqP=BNymN!M96porR-<9(L2T2YaWyiSl9&VL=!%5e9&TZApp7SX~6HPXA&>KQ~5bB!F(S3eYDh z9&1OpK$(^51rA|H$~qHVHqu*?vx6Y!z;5xzL`V>!15CTcHmAm5j4o0F@bf1h5FZcN z(PMT2dgUSxXQnFET9pHkYWJB8m>K!GW1838GMjs5Vc8 z;ek@Nd0Z@#_4OnGKVtnsc>#LP%0riq37GY4D_E?)>4bYJ(^QHLznb8|GXJm`M;5N9 zlOi%}br7Kgyn3B&G&IDh>O9~NK*IrS=rtz~x^|5)t=}WC*dz})-FI>w|7Du420KI3QL5If^kk-8o zDjcH6102FFCv$EZLBPHoGftfQn}YiEe*7|dIz6I*>=pvVLl_>o#x|tHAz2sg3lL}+ zm5;oS=UlR)F99G@o?f^WP0yztZkHs5mwBGlQ2F|aBRKHdd^*b_yGG`y9l(@Aw%*Vf zFX*FSbNUzSZ)nw!AXAYIY@|Rf?UHVwrWZ)Cn~tJ9cM|0J)Y%JVKb)c?u6ysL9)uFg#chp012>Kz zL+13wGC*PN0j6ALpQLaPMEiI^DK=17s&150-pj?@wz|>jrG3=vPZGck6#*t)WFH%v zV1zD40tg`1pI55O6Us{(8KCpTJrcm-w^Rg}Xl82-O)*>s2&aXsgH=NDc)4wLL6`m$ z0c5KUaGtG6X^LU`SYLn;TG-!p<^4)Ai~#hLegw+02;glM0gMIgBSSL`)z_B*f^>&q zV*O13r5JFbOZsjCAP*d!r6RzDe74%qq7tAcEi6`Zy)p)9W}5WkE}B$xfDAPOOl(zZ z3k=aWsN#W|i1jye@%+UBx~A_WfE)stqauJImwjkxiJ^%Ns(PRXV*PqR4&v_VJ1B@x z9mDatDgvaQCV*BLk{DMt4+Ifi?I@+F*Q^V9@5#a5=aCJ)4gm&k(5 zR{x#II6%+z?Nm5T0P|G@7@NgDNNYne&@gZ!3*eQI5}7=eU=#zr(znqlL;zU}R0J4v zf~`zzi$VJMzJFodI*knQ z^n}mJ19>U~j5y4ej(-9J^$9*f98L=d%>&>;>_mU#7NCLyysIL>@ITlR0(ef}IJA|y zAYub$Vh-?(aT65?Aa{wH9yr9_OKXP#y2f?#J>U_;yHJG_&raA#9xxHWQZ+r0$yOLU zU~p0+&w7p<-X(SUL4v$ZAOz3Em6zr3c%_Om3($A`dJ5uP0$8S|2M)59O`_2-T0=tR zbte9H7k!iq^5%w1QSTv>>)kG&deK|2G^!Ki=bG}1q%M@VTs43gjM#q-E{B%Ha00<+ z2gYY<#N}J>{T~!dDgb=$hhmvUkU=f^N07gA38ZBezA90xWtAwh=49>3TFB>h`Qxoo zM#fjF&ykfPz`jA~dt^X;vIP04tz!W07P}0=SLOK9qTlt=aCa%SsQoTwI1oX1GXFRG f#Q)jfeGl*tEoInkINJc-00000NkvXXu0mjf3Vm4i literal 0 HcmV?d00001 diff --git a/Software/sie_cg/images/no.png b/Software/sie_cg/images/no.png new file mode 100644 index 0000000000000000000000000000000000000000..df2a147d246ef62d628d73db36b0b24af98a2ab9 GIT binary patch literal 831 zcmV-F1Hk-=P)R5;6h zl}l(-K@^6Q=FtdACA#^NDs^{Lp)6)L zgDB5eX;UdG_4H6F7*yIgXmIAu0!5NyOCtSU7G=!;6%|3j{gliox-!pOK?G(o&X({YLK$5)lC7F{VZbo703UCXA=&? zO>Nu>w#%A8Rp;5oKacEBBT*BGX+{#I_yE%2i8f!~SeeejbP6SvLH5VQ-~o6A-hwe1 z-+)oOG3-#N-p|7H3rxph%DcJ`E`ihFDtIo2X&L#)9#wa!-__Ey=>18UreVqnx(m*O z14e_~1JA$~|`2HhU^Ra!WRl)GgiU zYU$BXh#q3R4$gpm?mF#|Br$YH!gK>%1c$VCx82fBJaI+hxwpFb)g=^Dbv{zQc<7+k z9t8>W67osVx3S=)K2n#oseNr$I`ov*vgsc2h}xyrpv>h+JHeJUF8ZjWkj` zH1UE>PMpf&iLCQ!iioCJ)~Hi?YjvJaK8_pg59Au!plIt&?SDO~mzDzYD;xj-002ov JPDHLkV1h`%ho%4k literal 0 HcmV?d00001 diff --git a/Software/sie_cg/images/open.png b/Software/sie_cg/images/open.png new file mode 100644 index 0000000000000000000000000000000000000000..32249f95b74ff4a9b68d2c69022732c162db2db6 GIT binary patch literal 3062 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 PXgY(ZtDnm{r-UW|*?2%h literal 0 HcmV?d00001 diff --git a/Software/sie_cg/images/preview.png b/Software/sie_cg/images/preview.png new file mode 100644 index 0000000000000000000000000000000000000000..1f7befba5dfa8b6f0afd6c08a50042bc9fee1a35 GIT binary patch literal 3253 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 literal 0 HcmV?d00001 diff --git a/Software/sie_cg/images/raise1.png b/Software/sie_cg/images/raise1.png new file mode 100644 index 0000000000000000000000000000000000000000..bda27578a2dfb80bc9a72965002f8c757cf35cc7 GIT binary patch literal 293 zcmV+=0owkFP)dm4?Fu&!p#^mymSVTh zU>sb6HlP;7W{N`X0QDB+k_jxAXelOsn#*51@U_g5OYIsl5L%VuiskzuK3zz?-u00000NkvXXu0mjfg_VD% literal 0 HcmV?d00001 diff --git a/Software/sie_cg/images/save.png b/Software/sie_cg/images/save.png new file mode 100644 index 0000000000000000000000000000000000000000..b1cbaf34b19004890e723eb3700824ee4540b06c GIT binary patch literal 2968 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 qM=M0%Y8$2~h%vATaL@TF z*?o5Zf*A)JGME{eI1(T5v)QmI9r*wMhBJql2m_E}0|Ntca&k#YN&Ni$6B82z1O%U-pTxw(si~<21qD}ER~Hu- z_V)G`78a(arl6ppU|?V*BqTmQJ|iO|x3{-VO-=at_`txxFfcF)2?^}%>>wZ@ii(Qb z+S>8)@eK_PnVFdx85#Nc`OVGE^z`&OIXNvYEjv3q5)u+aLqo#C!lb06+}zw%RaIzc zXj)oYP*70t@bCr(1|J_EbaZsFv9VoUT_GVMHa0d02ng!x>f77ffq{XXoSch`i*swgN1UC~rmJr6ZtwP$GZ*2`gv#l)X+8W}u^wiyPzo88jdmHTu(7OW- zlMU)k*g-2Zf^IIXHN!c(mF2ss+o!$2N6utNCw?(Ir*Vhc(JTP?=-L*|eis=D!-$m8 zUDdSq;cma*Ha6*!kgMyZ_X*pCVd~Gj?q|^)9YbKI(OrqVm{ZfZ@2PHF{gGgN-D*TgnTzabF6H?ke2Co}~y&DfWYwGHLUN z>ECB+w+ga*=wh-X*@Ob}V=m+b+3A^No>RkxNH1yW3PgHsQ;K9ZRdFD@*Sjvt00000NkvXXu0mjfuiIx( literal 0 HcmV?d00001 diff --git a/Software/sie_cg/images/underline.png b/Software/sie_cg/images/underline.png new file mode 100644 index 0000000000000000000000000000000000000000..9b8209f5252f74c3af386430d17b60f7eeda7ce3 GIT binary patch literal 250 zcmVVHb^x=zg3bp;R5gZF*!ld&eiecuD~aU8;zW%0@Dx(b}8DKI}F+qU^+sIF@nlx4|n z+j3P^(l<@R)>@zZ$QZ*}mWe4z62@Q7^L%gV1~VWy%?KWNb^rhX07*qoM6N<$f?^zL A8~^|S literal 0 HcmV?d00001 diff --git a/Software/sie_cg/images/yes.png b/Software/sie_cg/images/yes.png new file mode 100644 index 0000000000000000000000000000000000000000..7cf708b90a695f0e2aee05e121bb490a4c9091d3 GIT binary patch literal 2774 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 M07*qoM6N<$f`46YS^xk5 literal 0 HcmV?d00001 diff --git a/Software/sie_cg/librarydialog.o b/Software/sie_cg/librarydialog.o new file mode 100644 index 0000000000000000000000000000000000000000..91dd398d6786c52ec21dfd74918c92fb7f9e9c66 GIT binary patch literal 246916 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 literal 0 HcmV?d00001 diff --git a/Software/sie_cg/librarydialog.ui b/Software/sie_cg/librarydialog.ui new file mode 100644 index 0000000..3bb8a00 --- /dev/null +++ b/Software/sie_cg/librarydialog.ui @@ -0,0 +1,99 @@ + + + libraryDialog + + + + 0 + 0 + 333 + 341 + + + + Dialog + + + + + + + + + + + &Add Library + + + + + + + &Remove library + + + + + + + &Edit library + + + + + + + + + Qt::Horizontal + + + + + + + Qt::Horizontal + + + QDialogButtonBox::Cancel|QDialogButtonBox::Ok + + + + + + + + + buttonBox + rejected() + libraryDialog + reject() + + + 316 + 260 + + + 286 + 274 + + + + + buttonBox + accepted() + libraryDialog + accept() + + + 248 + 254 + + + 157 + 274 + + + + + diff --git a/Software/sie_cg/lineitem.cpp b/Software/sie_cg/lineitem.cpp new file mode 100644 index 0000000..48f1a24 --- /dev/null +++ b/Software/sie_cg/lineitem.cpp @@ -0,0 +1,137 @@ +/**************************************************************************** +** +** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial Usage +** Licensees holding valid Qt Commercial licenses may use this file in +** accordance with the Qt Commercial License Agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Nokia. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** If you have questions regarding the use of this file, please contact +** Nokia at qt-info@nokia.com. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include + +#include "lineitem.h" +#include + +lineItem::lineItem(QPointF startPoint, QPointF endItem, Arrow *ownerArrow, + int wt, bool movable, QGraphicsItem *parent, QGraphicsScene *scene) + : QGraphicsLineItem(parent, scene) +{ + isMovable=movable; + if(isMovable) setFlag(QGraphicsItem::ItemIsMovable, true); + + setFlag(QGraphicsItem::ItemIsSelectable, true); + + myColor = Qt::black; + setPen(QPen(myColor, 2, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin)); + setLine(QLineF(startPoint,endItem)); + myOwnerArrow = ownerArrow; + pWidth=wt; + moveItem=0; +} + +QRectF lineItem::boundingRect() const +{ + qreal extra = (pen().width() + 20) / 2.0; + + return QRectF(line().p1(), QSizeF(line().p2().x() - line().p1().x(), + line().p2().y() - line().p1().y())) + .normalized() + .adjusted(-extra, -extra, extra, extra); +} + +QPainterPath lineItem::shape() const +{ + QPainterPath path = QGraphicsLineItem::shape(); + return path; +} + +void lineItem::updatePos() +{ + QPointF itemPos = this->line().p1(); + myOwnerArrow->moveCorner(itemPos,this); +} + +void lineItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *, + QWidget *) +{ + QPen myPen = pen(); + myPen.setColor(myColor); + myPen.setWidth(pWidth); + painter->setPen(myPen); + painter->setBrush(myColor); + + setLine(line()); + painter->drawLine(line()); + + //Drawing arrow selected + if (isSelected()) { + painter->setPen(QPen(Qt::gray, pWidth, Qt::SolidLine)); + QLineF myLine = line(); + painter->drawLine(myLine); + } +} + +void lineItem::mouseDoubleClickEvent(QGraphicsSceneMouseEvent *mouseEvent) +{ + if(!isMovable) + { + myOwnerArrow->createCorner(mouseEvent->pos(),this); + } + QGraphicsLineItem::mouseDoubleClickEvent(mouseEvent); +} + + +void lineItem::mousePressEvent(QGraphicsSceneMouseEvent *mouseEvent) +{ + QGraphicsLineItem::mousePressEvent(mouseEvent); +} + +void lineItem::mouseMoveEvent(QGraphicsSceneMouseEvent *mouseEvent) +{ + if(isMovable) + { + updatePos(); + } + QGraphicsLineItem::mouseMoveEvent(mouseEvent); +} + +void lineItem::mouseReleaseEvent(QGraphicsSceneMouseEvent *mouseEvent) +{ + if(isMovable) + { + updatePos(); + } + QGraphicsLineItem::mouseReleaseEvent(mouseEvent); +} diff --git a/Software/sie_cg/lineitem.h b/Software/sie_cg/lineitem.h new file mode 100644 index 0000000..b2388ce --- /dev/null +++ b/Software/sie_cg/lineitem.h @@ -0,0 +1,98 @@ +/**************************************************************************** +** +** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial Usage +** Licensees holding valid Qt Commercial licenses may use this file in +** accordance with the Qt Commercial License Agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Nokia. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** If you have questions regarding the use of this file, please contact +** Nokia at qt-info@nokia.com. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef LINEITEM_H +#define LINEITEM_H + +#include + +#include "diagramitem.h" +#include "arrow.h" + +QT_BEGIN_NAMESPACE +class QGraphicsPolygonItem; +class QGraphicsLineItem; +class QGraphicsScene; +class QRectF; +class QGraphicsSceneMouseEvent; +class QPainterPath; +QT_END_NAMESPACE + +class lineItem : public QGraphicsLineItem +{ +public: + enum { Type = UserType + 4 }; + + lineItem(QPointF startPoint, QPointF endItem, Arrow *ownerArrow, int wt=2, + bool movable = 0, QGraphicsItem *parent = 0, QGraphicsScene *scene = 0); + + int type() const + { return Type;} + QRectF boundingRect() const; + QPainterPath shape() const; + void setColor(const QColor &color) + { myColor=color; } + + Arrow * myOwner() + { return myOwnerArrow;} + + bool itemIsMovable() {return isMovable;} + +public slots: + void updatePos(); + +protected: + void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, + QWidget *widget = 0); + void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event); + void mousePressEvent(QGraphicsSceneMouseEvent *event); + void mouseReleaseEvent(QGraphicsSceneMouseEvent *event); + void mouseMoveEvent(QGraphicsSceneMouseEvent *event); + +private: + QColor myColor; + int pWidth; + Arrow *myOwnerArrow; + int moveItem; + bool isMovable; +}; + +#endif diff --git a/Software/sie_cg/main.cpp b/Software/sie_cg/main.cpp new file mode 100644 index 0000000..070c8b3 --- /dev/null +++ b/Software/sie_cg/main.cpp @@ -0,0 +1,55 @@ +/**************************************************************************** +** +** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial Usage +** Licensees holding valid Qt Commercial licenses may use this file in +** accordance with the Qt Commercial License Agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Nokia. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** If you have questions regarding the use of this file, please contact +** Nokia at qt-info@nokia.com. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include + +#include "mainwindow.h" + +int main(int argv, char *args[]) +{ + Q_INIT_RESOURCE(diagramscene); + + QApplication app(argv, args); + MainWindow mainWindow; + mainWindow.setGeometry(100, 100, 1024, 640); + mainWindow.show(); + return app.exec(); +} diff --git a/Software/sie_cg/mainwindow.cpp b/Software/sie_cg/mainwindow.cpp new file mode 100644 index 0000000..ccd9f0c --- /dev/null +++ b/Software/sie_cg/mainwindow.cpp @@ -0,0 +1,929 @@ +/**************************************************************************** +** +** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial Usage +** Licensees holding valid Qt Commercial licenses may use this file in +** accordance with the Qt Commercial License Agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Nokia. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** If you have questions regarding the use of this file, please contact +** Nokia at qt-info@nokia.com. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include +#include + +#include "mainwindow.h" + +const int InsertTextButton = 100000; + +MainWindow::MainWindow() +{ + buttonGroup=0; + toolBox=0; + + createActions(); + createMenus(); + scene = new DiagramScene(itemMenu,this); + scene->setSceneRect(QRectF(0, 0, 5000, 5000)); + connect(scene, SIGNAL(itemInserted(DiagramItem*)), + this, SLOT(itemInserted(DiagramItem*))); + connect(scene, SIGNAL(textInserted(QGraphicsTextItem*)), + this, SLOT(textInserted(QGraphicsTextItem*))); + connect(scene, SIGNAL(itemSelected(QGraphicsItem*)), + this, SLOT(itemSelected(QGraphicsItem*))); + createToolBox(); + createToolbars(); + + setWindowTitle(tr("SIE Code Generator (Diagram Editor)")); + setUnifiedTitleAndToolBarOnMac(true); + myFilePath = ""; + libDialog=0; + + if(QApplication::argc()>1) + {newDiagram(QString(QApplication::argv()[1]));} +} + +void MainWindow::backgroundButtonGroupClicked(QAbstractButton *button) +{ + QList buttons = backgroundButtonGroup->buttons(); + foreach (QAbstractButton *myButton, buttons) { + if (myButton != button) + button->setChecked(false); + } + QString text = button->text(); + if (text == tr("Blue Grid")) + scene->setBackgroundBrush(QPixmap(":/images/background1.png")); + else if (text == tr("White Grid")) + scene->setBackgroundBrush(QPixmap(":/images/background2.png")); + else if (text == tr("Gray Grid")) + scene->setBackgroundBrush(QPixmap(":/images/background3.png")); + else + scene->setBackgroundBrush(QPixmap(":/images/background4.png")); + + scene->update(); + view->update(); +} + +void MainWindow::buttonGroupClicked(int id) +{ + QList buttons = buttonGroup->buttons(); + foreach (QAbstractButton *button, buttons) { + if (buttonGroup->button(id) != button) + button->setChecked(false); + } + if (id == InsertTextButton) { + scene->setMode(DiagramScene::InsertText); + } else { + scene->setItemType(buttonGroup->button(id)->text()); //Block name + scene->setMode(DiagramScene::InsertItem); + } +} + +void MainWindow::deleteItem() +{ + foreach (QGraphicsItem *item, scene->selectedItems()) { + if (item->type() == DiagramItem::Type) { + qgraphicsitem_cast(item)->removeArrows(); + qgraphicsitem_cast(item)->removeTextItems(); + scene->removeItem(item); + delete(item); + } + //If arrow is deleted then is romoved from diagram owner + else if (item->type() == Arrow::Type) { + qgraphicsitem_cast(item)->removeLines(); + qgraphicsitem_cast(item)->startItem()->ownerItem() + ->removeArrow(qgraphicsitem_cast(item)); + qgraphicsitem_cast(item)->endItem()->ownerItem() + ->removeArrow(qgraphicsitem_cast(item)); + scene->removeItem(item); + delete(item); + } + //If line is deleted then is romoved from the arrow owner + else if (item->type() == lineItem::Type && + !qgraphicsitem_cast(item)->itemIsMovable()) { + + qgraphicsitem_cast(item)->myOwner()->removeLine( + qgraphicsitem_cast(item)); + qgraphicsitem_cast(item)->myOwner()->updatePosition(); + scene->removeItem(item); + delete(item); + } + + } +} + +void MainWindow::pointerGroupClicked(int) +{ + scene->setMode(DiagramScene::Mode(pointerTypeGroup->checkedId())); +} + +void MainWindow::bringToFront() +{ + sendTo(1); +} + +void MainWindow::sendToBack() +{ + sendTo(0); +} + +void MainWindow::sendTo(bool value) +{ + if (scene->selectedItems().isEmpty()) + return; + + QGraphicsItem *selectedItem = scene->selectedItems().first(); + QList overlapItems = selectedItem->collidingItems(); + + qreal zValue = 0; + foreach (QGraphicsItem *item, overlapItems) { + if (item->zValue() <= zValue && + item->type() == DiagramItem::Type) + { + if(value) + zValue = item->zValue() + 0.1; + else + zValue = item->zValue() - 0.1; + } + } + selectedItem->setZValue(zValue); + if(selectedItem->type() == DiagramItem::Type) + foreach (DiagramTextItem *texts, + qgraphicsitem_cast(selectedItem)->getTextItems()) + { + texts->updatePosition(); + } + +} + +void MainWindow::itemInserted(DiagramItem *item) +{ + pointerTypeGroup->button(int(DiagramScene::MoveItem))->setChecked(true); + scene->setMode(DiagramScene::Mode(pointerTypeGroup->checkedId())); + buttonGroup->button(buttonIdByName.value(item->diagramType()))->setChecked(false); +} + +void MainWindow::textInserted(QGraphicsTextItem *) +{ + buttonGroup->button(InsertTextButton)->setChecked(false); + scene->setMode(DiagramScene::Mode(pointerTypeGroup->checkedId())); +} + +void MainWindow::currentFontChanged(const QFont &) +{ + handleFontChange(); +} + +void MainWindow::fontSizeChanged(const QString &) +{ + handleFontChange(); +} + +void MainWindow::sceneScaleChanged(const QString &scale) +{ + double newScale = scale.left(scale.indexOf(tr("%"))).toDouble() / 100.0; + QMatrix oldMatrix = view->matrix(); + view->resetMatrix(); + view->translate(oldMatrix.dx(), oldMatrix.dy()); + view->scale(newScale, newScale); +} + +void MainWindow::textColorChanged() +{ + textAction = qobject_cast(sender()); + fontColorToolButton->setIcon(createColorToolButtonIcon( + ":/images/textpointer.png", + qVariantValue(textAction->data()))); + textButtonTriggered(); +} + +void MainWindow::itemColorChanged() +{ + fillAction = qobject_cast(sender()); + fillColorToolButton->setIcon(createColorToolButtonIcon( + ":/images/floodfill.png", + qVariantValue(fillAction->data()))); + fillButtonTriggered(); +} + +void MainWindow::lineColorChanged() +{ + lineAction = qobject_cast(sender()); + lineColorToolButton->setIcon(createColorToolButtonIcon( + ":/images/linecolor.png", + qVariantValue(lineAction->data()))); + lineButtonTriggered(); +} + +void MainWindow::textButtonTriggered() +{ + scene->setTextColor(qVariantValue(textAction->data())); +} + +void MainWindow::fillButtonTriggered() +{ + scene->setItemColor(qVariantValue(fillAction->data())); +} + +void MainWindow::lineButtonTriggered() +{ + scene->setLineColor(qVariantValue(lineAction->data())); +} + +void MainWindow::handleFontChange() +{ + QFont font = fontCombo->currentFont(); + font.setPointSize(fontSizeCombo->currentText().toInt()); + font.setWeight(boldAction->isChecked() ? QFont::Bold : QFont::Normal); + font.setItalic(italicAction->isChecked()); + font.setUnderline(underlineAction->isChecked()); + + scene->setFont(font); +} + +void MainWindow::itemSelected(QGraphicsItem *item) +{ + DiagramTextItem *textItem = + qgraphicsitem_cast(item); + + QFont font = textItem->font(); + QColor color = textItem->defaultTextColor(); + fontCombo->setCurrentFont(font); + fontSizeCombo->setEditText(QString().setNum(font.pointSize())); + boldAction->setChecked(font.weight() == QFont::Bold); + italicAction->setChecked(font.italic()); + underlineAction->setChecked(font.underline()); +} + +void MainWindow::about() +{ + QMessageBox::question(this, tr("About SIE Code Generator"), + tr("TODO :)")); +} + +void MainWindow::addLibrariesButtons(QGridLayout *layout) +{ + int i=1; + domElementsByName.clear(); buttonIdByName.clear(); + QDomDocument customItems; + foreach(QString filepath, libraryList) + { + customItems = parseDocument(filepath); + for (QDomNode node = customItems.firstChild() ; + !node.isNull() ; + node = node.nextSibling()) + { + QDomElement *customItem = new QDomElement(node.toElement()); + if(customItem->tagName()=="CustomItem") + { + if(domElementsByName.contains( + customItem->attribute("BlockName"))) + { + QMessageBox::warning(this,"Block name in use.", + "The library " + filepath + + " has one block called" + + customItem->attribute("BlockName") + + " that is already in use. Only the " + " first Block loaded can be used, this" + " library will be ignored."); + } + else + { + domElementsByName.insert(customItem->attribute("BlockName"), + customItem); + buttonIdByName.insert(customItem->attribute("BlockName"),i-1); + + scene->setDomElementsByName(domElementsByName); + scene->setButtonIdByName(buttonIdByName); + + layout->addWidget(createCellWidget( + customItem->attribute("BlockName"), + domElementsByName. + value(customItem->attribute("BlockName"))),i/2,i&1); + i++; + } + } + } + } +} + + + +void MainWindow::createToolBox() +{ + if(buttonGroup!=0) delete(buttonGroup); + if(toolBox!=0) delete(toolBox); + buttonGroup = new QButtonGroup; + buttonGroup->setExclusive(false); + connect(buttonGroup, SIGNAL(buttonClicked(int)), + this, SLOT(buttonGroupClicked(int))); + + QGridLayout *layout = new QGridLayout; + + addLibrariesButtons(layout); + + QToolButton *textButton = new QToolButton; + textButton->setCheckable(true); + buttonGroup->addButton(textButton, InsertTextButton); + textButton->setIcon(QIcon(QPixmap(":/images/textpointer.png") + .scaled(30, 30))); + textButton->setIconSize(QSize(50, 50)); + QGridLayout *textLayout = new QGridLayout; + textLayout->addWidget(textButton, 0, 0, Qt::AlignHCenter); + textLayout->addWidget(new QLabel(tr("Text")), 1, 0, Qt::AlignCenter); + QWidget *textWidget = new QWidget; + textWidget->setLayout(textLayout); + layout->addWidget(textWidget, 0, 0); + + layout->setRowStretch(3, 10); + layout->setColumnStretch(2, 10); + + QWidget *itemWidget = new QWidget; + itemWidget->setLayout(layout); + + toolBox = new QToolBox; + toolBox->setSizePolicy(QSizePolicy(QSizePolicy::Maximum, QSizePolicy::Ignored)); + toolBox->setMinimumWidth(itemWidget->sizeHint().width()); + toolBox->addItem(itemWidget, tr("Basic Flowchart Shapes")); + //toolBox->addItem(backgroundWidget, tr("Backgrounds")); + + //Add tool box to window + QHBoxLayout *newLayout = new QHBoxLayout; + newLayout->addWidget(toolBox); + view = new QGraphicsView(scene); + newLayout->addWidget(view); + + QWidget *widget = new QWidget; + widget->setLayout(newLayout); + + setCentralWidget(widget); +} + +void MainWindow::createActions() +{ + toFrontAction = new QAction(QIcon(":/images/bringtofront.png"), + tr("Bring to &Front"), this); + toFrontAction->setShortcut(tr("Ctrl+F")); + toFrontAction->setStatusTip(tr("Bring item to front")); + connect(toFrontAction, SIGNAL(triggered()), + this, SLOT(bringToFront())); + + sendBackAction = new QAction(QIcon(":/images/sendtoback.png"), + tr("Send to &Back"), this); + sendBackAction->setShortcut(tr("Ctrl+B")); + sendBackAction->setStatusTip(tr("Send item to back")); + connect(sendBackAction, SIGNAL(triggered()), + this, SLOT(sendToBack())); + + deleteAction = new QAction(QIcon(":/images/delete.png"), + tr("&Delete"), this); + deleteAction->setShortcut(tr("Ctrl+Delete")); + deleteAction->setStatusTip(tr("Delete item from diagram")); + connect(deleteAction, SIGNAL(triggered()), + this, SLOT(deleteItem())); + + + newAction = new QAction(QIcon(":/images/new.png"),tr("&New"),this); + newAction->setShortcuts(QKeySequence::New); + newAction->setStatusTip("New diagram"); + connect(newAction,SIGNAL(triggered()),this,SLOT(newDiagram())); + + saveAction = new QAction(QIcon(":/images/save.png"),tr("&Save"),this); + saveAction->setShortcuts(QKeySequence::Save); + saveAction->setStatusTip("Save current diagram"); + connect(saveAction,SIGNAL(triggered()),this,SLOT(saveDiagram())); + + saveAsAction = new QAction(QIcon(":/images/save_as.png"), + tr("Save &As..."),this); + saveAsAction->setShortcuts(QKeySequence::SaveAs); + saveAsAction->setStatusTip("Save current diagram with another name"); + connect(saveAsAction,SIGNAL(triggered()),this,SLOT(saveAsDiagram())); + + openAction = new QAction(QIcon(":/images/open.png"),tr("&Open"),this); + openAction->setShortcuts(QKeySequence::Open); + openAction->setStatusTip("Open diagram"); + connect(openAction,SIGNAL(triggered()),this,SLOT(openDiagram())); + + exportImgAction = new QAction(tr("&Export to ..."),this); + exportImgAction->setStatusTip("Export current diagram to picture"); + connect(exportImgAction,SIGNAL(triggered()),this,SLOT(exportDiagram())); + + exitAction = new QAction(tr("E&xit"), this); + exitAction->setShortcuts(QKeySequence::Quit); + exitAction->setStatusTip(tr("Quit diagram editor")); + connect(exitAction, SIGNAL(triggered()), this, SLOT(close())); + + boldAction = new QAction(QIcon(":/images/bold.png"),tr("Bold"), this); + boldAction->setCheckable(true); + boldAction->setShortcut(tr("Ctrl+B")); + connect(boldAction, SIGNAL(triggered()), + this, SLOT(handleFontChange())); + + italicAction = new QAction(QIcon(":/images/italic.png"), + tr("Italic"), this); + italicAction->setCheckable(true); + italicAction->setShortcut(tr("Ctrl+I")); + connect(italicAction, SIGNAL(triggered()), + this, SLOT(handleFontChange())); + + underlineAction = new QAction(QIcon(":/images/underline.png"), + tr("Underline"), this); + underlineAction->setCheckable(true); + underlineAction->setShortcut(tr("Ctrl+U")); + connect(underlineAction, SIGNAL(triggered()), + this, SLOT(handleFontChange())); + + + + libraryAction = new QAction(tr("&Library..."),this); + connect(libraryAction, SIGNAL(triggered()), + this, SLOT(libraryForm())); + + optionsAction = new QAction(tr("&Options"),this); + optionsAction->setShortcuts(QKeySequence::Preferences); + connect(optionsAction, SIGNAL(triggered()), + this, SLOT(optionsForm())); + + aboutAction = new QAction(tr("A&bout"), this); + aboutAction->setShortcut(tr("Ctrl+B")); + connect(aboutAction, SIGNAL(triggered()), + this, SLOT(about())); +} + +void MainWindow::createMenus() +{ + fileMenu = menuBar()->addMenu(tr("&File")); + fileMenu->addAction(newAction); + fileMenu->addAction(openAction); + fileMenu->addSeparator(); + fileMenu->addAction(saveAction); + fileMenu->addAction(saveAsAction); + fileMenu->addAction(exportImgAction); + fileMenu->addSeparator(); + fileMenu->addAction(exitAction); + + itemMenu = menuBar()->addMenu(tr("&Item")); + itemMenu->addAction(deleteAction); + itemMenu->addSeparator(); + itemMenu->addAction(toFrontAction); + itemMenu->addAction(sendBackAction); + + preferencesMenu= menuBar()->addMenu(tr("&Preferences")); + preferencesMenu->addAction(libraryAction); + preferencesMenu->addAction(optionsAction); + + aboutMenu = menuBar()->addMenu(tr("&Help")); + aboutMenu->addAction(aboutAction); +} + +void MainWindow::createToolbars() +{ + fileToolBar = addToolBar(tr("File")); + fileToolBar->addAction(newAction); + fileToolBar->addAction(openAction); + fileToolBar->addAction(saveAction); + + editToolBar = addToolBar(tr("Edit")); + editToolBar->addAction(deleteAction); + editToolBar->addAction(toFrontAction); + editToolBar->addAction(sendBackAction); + + fontCombo = new QFontComboBox(); + fontSizeCombo = new QComboBox(); + connect(fontCombo, SIGNAL(currentFontChanged(QFont)), + this, SLOT(currentFontChanged(QFont))); + + fontSizeCombo = new QComboBox; + fontSizeCombo->setEditable(true); + for (int i = 8; i < 30; i = i + 2) + fontSizeCombo->addItem(QString().setNum(i)); + QIntValidator *validator = new QIntValidator(2, 64, this); + fontSizeCombo->setValidator(validator); + connect(fontSizeCombo, SIGNAL(currentIndexChanged(QString)), + this, SLOT(fontSizeChanged(QString))); + + fontColorToolButton = new QToolButton; + fontColorToolButton->setPopupMode(QToolButton::MenuButtonPopup); + fontColorToolButton->setMenu(createColorMenu(SLOT(textColorChanged()), + Qt::black)); + textAction = fontColorToolButton->menu()->defaultAction(); + fontColorToolButton->setIcon(createColorToolButtonIcon( + ":/images/textpointer.png", Qt::black)); + fontColorToolButton->setAutoFillBackground(true); + connect(fontColorToolButton, SIGNAL(clicked()), + this, SLOT(textButtonTriggered())); + + fillColorToolButton = new QToolButton; + fillColorToolButton->setPopupMode(QToolButton::MenuButtonPopup); + fillColorToolButton->setMenu(createColorMenu(SLOT(itemColorChanged()), + Qt::white)); + fillAction = fillColorToolButton->menu()->defaultAction(); + fillColorToolButton->setIcon(createColorToolButtonIcon( + ":/images/floodfill.png", Qt::white)); + connect(fillColorToolButton, SIGNAL(clicked()), + this, SLOT(fillButtonTriggered())); + + lineColorToolButton = new QToolButton; + lineColorToolButton->setPopupMode(QToolButton::MenuButtonPopup); + lineColorToolButton->setMenu(createColorMenu(SLOT(lineColorChanged()), + Qt::black)); + lineAction = lineColorToolButton->menu()->defaultAction(); + lineColorToolButton->setIcon(createColorToolButtonIcon( + ":/images/linecolor.png", Qt::black)); + connect(lineColorToolButton, SIGNAL(clicked()), + this, SLOT(lineButtonTriggered())); + + textToolBar = addToolBar(tr("Font")); + textToolBar->addWidget(fontCombo); + textToolBar->addWidget(fontSizeCombo); + textToolBar->addAction(boldAction); + textToolBar->addAction(italicAction); + textToolBar->addAction(underlineAction); + + colorToolBar = addToolBar(tr("Color")); + colorToolBar->addWidget(fontColorToolButton); + colorToolBar->addWidget(fillColorToolButton); + colorToolBar->addWidget(lineColorToolButton); + + QToolButton *pointerButton = new QToolButton; + pointerButton->setCheckable(true); + pointerButton->setChecked(true); + pointerButton->setIcon(QIcon(":/images/pointer.png")); + QToolButton *linePointerButton = new QToolButton; + linePointerButton->setCheckable(true); + linePointerButton->setIcon(QIcon(":/images/linepointer.png")); + + pointerTypeGroup = new QButtonGroup; + pointerTypeGroup->addButton(pointerButton, int(DiagramScene::MoveItem)); + pointerTypeGroup->addButton(linePointerButton, + int(DiagramScene::InsertLine)); + connect(pointerTypeGroup, SIGNAL(buttonClicked(int)), + this, SLOT(pointerGroupClicked(int))); + + sceneScaleCombo = new QComboBox; + QStringList scales; + scales << tr("50%") << tr("75%") << tr("100%") << tr("125%") << tr("150%"); + sceneScaleCombo->addItems(scales); + sceneScaleCombo->setCurrentIndex(2); + connect(sceneScaleCombo, SIGNAL(currentIndexChanged(QString)), + this, SLOT(sceneScaleChanged(QString))); + + pointerToolbar = addToolBar(tr("Pointer type")); + pointerToolbar->addWidget(pointerButton); + pointerToolbar->addWidget(linePointerButton); + pointerToolbar->addWidget(sceneScaleCombo); +} + +QWidget *MainWindow::createCellWidget(QString text, QDomElement *customItem) +{ + DiagramItem item(itemMenu,text,customItem); + QIcon icon(item.image()); + + QToolButton *button = new QToolButton; + button->setText(text); + button->setIcon(icon); + button->setIconSize(QSize(50, 50)); + button->setCheckable(true); + buttonGroup->addButton(button, buttonIdByName.value(text)); + + QGridLayout *layout = new QGridLayout; + layout->addWidget(button, 0, 0, Qt::AlignHCenter); + layout->addWidget(new QLabel(text), 1, 0, Qt::AlignCenter); + + QWidget *widget = new QWidget; + widget->setLayout(layout); + + return widget; +} + +QMenu *MainWindow::createColorMenu(const char *slot, QColor defaultColor) +{ + QList colors; + colors << Qt::black << Qt::white << Qt::magenta + << Qt::cyan << Qt::red << Qt::blue << Qt::yellow << Qt::green + << Qt::darkMagenta << Qt::darkCyan << Qt::darkRed << Qt::darkBlue + << Qt::darkYellow << Qt::darkGreen << Qt::darkGray; + + QStringList names; + names << tr("Black") << tr("White") << tr("Magenta") << tr("Cyan") + << tr("Red") << tr("Blue") << tr("Yellow") << tr("Green") + << tr("Dark Magenta") << tr("Dark Cyan") << tr("Dark Red") + << tr("Dark Blue") << tr("Dark Yellow") << tr("Dark Green") + << tr("Dark Gray") ; + + QMenu *colorMenu = new QMenu; + for (int i = 0; i < colors.count(); ++i) { + QAction *action = new QAction(names.at(i), this); + action->setData(colors.at(i)); + action->setIcon(createColorIcon(colors.at(i))); + connect(action, SIGNAL(triggered()), + this, slot); + colorMenu->addAction(action); + if (colors.at(i) == defaultColor) { + colorMenu->setDefaultAction(action); + } + } + return colorMenu; +} + +QIcon MainWindow::createColorToolButtonIcon(const QString &imageFile, + QColor color) +{ + QPixmap pixmap(50, 80); + pixmap.fill(Qt::transparent); + QPainter painter(&pixmap); + QPixmap image(imageFile); + QRect target(0, 0, 50, 60); + QRect source(0, 0, 42, 42); + painter.fillRect(QRect(0, 60, 50, 80), color); + painter.drawPixmap(target, image, source); + + return QIcon(pixmap); +} + +QIcon MainWindow::createColorIcon(QColor color) +{ + QPixmap pixmap(20, 20); + QPainter painter(&pixmap); + painter.setPen(Qt::NoPen); + painter.fillRect(QRect(0, 0, 20, 20), color); + + return QIcon(pixmap); +} + +int MainWindow::newDiagram(QString filePath) +{ + saveIfNeeded(); + scene->cleanScene(); + libraryList.clear(); //or set defaults + domElementsByName.clear(); //or set defaults + buttonIdByName.clear();//or set defaults + scene->setLibList(libraryList); + updateLibraries(); + myFilePath=""; + + if(filePath=="") + return 0; + + myFilePath=filePath; + if(!scene->fromXmlFormat(parseDocument(myFilePath))) + newDiagram(); + + return 1; +} + +QDomDocument MainWindow::parseDocument(QString filePath) +{ + QDomDocument document; + QFile file(filePath); + if(file.open(QIODevice::ReadOnly | QIODevice::Text)) + { + bool parsing=document.setContent(&file); + file.close(); + if(!parsing) + { + QMessageBox::warning(this,"Operation failed","Failed to parse file, " + "wrong format or encoding."); + } + } + else + QMessageBox::critical(this,"Error","Could not open file for read."); + + return document; +} + + + +int MainWindow::saveIfNeeded() +{ + if(myFilePath!="" || scene->items().count()>0) + {}//TODO save opened or modified diagram + return 0; +} + +int MainWindow::openDiagram() +{ + QString + filePath = QFileDialog::getOpenFileName(this,"Open", + currentDir(),"Diagram for SIE code generator (*.sie)"); + + if(filePath.isEmpty()) + return 0; + + if(!QFileInfo(filePath).isReadable()) + { + QMessageBox::critical(this,"Error","File is not readable " + " or not exists."); + return 0; + } + + newDiagram(filePath); + return 0; +} + +int MainWindow::saveDiagram() +{ + if(myFilePath=="") + { + saveAsDiagram(); + return 0; + } + if(!QFileInfo(myFilePath).isWritable() && QFileInfo(myFilePath).exists()) + { + QMessageBox::critical(this,"Error","File is not writable."); + return 0; + } + QFile file(myFilePath); + if(file.open(QIODevice::WriteOnly | QIODevice::Text)) + { + scene->setLibList(libraryList); + QDomDocument document = scene->toXmlFormat(); + QTextStream out(&file); + out.setCodec("UTF-8"); + out << document.toString(4); + file.close(); + return 1; + } + else + QMessageBox::critical(this,"Error","Could not open file for write."); + return 0; +} + +int MainWindow::saveAsDiagram() +{ + QString filePath = QFileDialog::getSaveFileName(this,"Save as...", + currentDir(),"Diagram for SIE code generator (*.sie)"); + + if(!filePath.isEmpty()) + { + myFilePath = filePath; + saveDiagram(); + return 1; + } + return 0; +} + +int MainWindow::exportDiagram() +{ + QString picturePath = QFileDialog::getSaveFileName(this,"Export", + currentDir(),"Portable Network Graphics (*.png)"); + + if(picturePath.isEmpty()) return 0; + + if(!QFileInfo(picturePath).isWritable() && QFileInfo(picturePath).exists()) + { + QMessageBox::critical(this,"Error","File is not writable."); + return 0; + } + scene->setDawGrid(0); + QSize sizeScene= scene->sceneRect().size().toSize(); + QImage img(sizeScene,QImage::Format_ARGB32_Premultiplied); + QPainter p(&img); + scene->render(&p, + scene->sceneRect(), + scene->itemsBoundingRect(), + Qt::KeepAspectRatio); + p.end(); + img.save(picturePath, "png"); + scene->setDawGrid(1); //TODO : set correct value + return 1; +} + +int MainWindow::libraryForm() +{ + if(!libDialog) + { + createLibraryDialog(); + } + libDialog->setModal(1); + libUi->listLib->clear(); + libUi->listLib->addItems(libraryList); + libDialog->setWindowTitle(tr("Library paths...")); + QStringList oldLibraryList=libraryList; + libDialog->exec(); + + if (libDialog->result() == QDialog::Rejected) + libraryList = oldLibraryList; + else + { + scene->setLibList(libraryList); + updateLibraries(); + } + + return 0; +} + +void MainWindow::createLibraryDialog() +{ + libDialog = new QDialog(this); + libUi = new Ui_libraryDialog; + libUi->setupUi(libDialog); + + connect(libUi->addLib,SIGNAL(clicked()),this,SLOT(addLibPath())); + connect(libUi->delLib,SIGNAL(clicked()),this,SLOT(delLibPath())); + connect(libUi->editLib,SIGNAL(clicked()),this,SLOT(editLibPath())); +} + +void MainWindow::addLibPath() +{ + QString + filePath = QFileDialog::getOpenFileName(this,"Open", + currentDir(),"Custom block for SIE code generator (*.die)"); + + if(filePath.isEmpty()) + return; + + if(!QFileInfo(filePath).isReadable()) + { + QMessageBox::critical(this,"Error","File is not readable " + " or not exists."); + return; + } + if(libUi->listLib->findItems(filePath,Qt::MatchExactly).count()==0) + { + QDir myCurrentDir = this->currentDir(); + QString relativePath=myCurrentDir.relativeFilePath(filePath); + libraryList.append(relativePath); + libUi->listLib->addItem(relativePath); + } + else + QMessageBox::information(this,"Information","Library already exist."); +} + +void MainWindow::delLibPath() +{ + QList selected = libUi->listLib->selectedItems(); + if(selected.count()>0) + { + libraryList.removeOne(selected.at(0)->text()); + libUi->listLib->clear(); + libUi->listLib->addItems(libraryList); + } +} + +void MainWindow::editLibPath() +{ + QList selected = libUi->listLib->selectedItems(); + if(selected.count()>0) + { + callexternapp("block_editor/blockeditor",selected.at(0)->text()); + } +} + +int MainWindow::updateLibraries() +{ + libraryList=scene->getLibList(); + createToolBox(); + return 0; +} + + +int MainWindow::optionsForm() +{ + + return 0; +} + +QString MainWindow::callexternapp(QString xexecFile, QString xexecParm) +{ + QEventLoop cxaw; + callexternappT cxat; + connect(&cxat, SIGNAL(finished()), &cxaw, SLOT(quit())); + cxat.execFile = xexecFile; + cxat.execParm = xexecParm; + cxat.start(); + cxaw.exec(); + return cxat.retnValu; +} + + diff --git a/Software/sie_cg/mainwindow.h b/Software/sie_cg/mainwindow.h new file mode 100644 index 0000000..1503f97 --- /dev/null +++ b/Software/sie_cg/mainwindow.h @@ -0,0 +1,220 @@ +/**************************************************************************** +** +** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial Usage +** Licensees holding valid Qt Commercial licenses may use this file in +** accordance with the Qt Commercial License Agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Nokia. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** If you have questions regarding the use of this file, please contact +** Nokia at qt-info@nokia.com. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef MAINWINDOW_H +#define MAINWINDOW_H + +#include +#include +#include +#include +#include + +#include "diagramitem.h" +#include "diagramscene.h" +#include "diagramtextitem.h" +#include "lineitem.h" +#include "arrow.h" +#include "ui_librarydialog.h" + +class DiagramScene; +class Ui_libraryDialog; + +QT_BEGIN_NAMESPACE +class QAction; +class QToolBox; +class QSpinBox; +class QComboBox; +class QFontComboBox; +class QButtonGroup; +class QLineEdit; +class QGraphicsTextItem; +class QFont; +class QToolButton; +class QAbstractButton; +class QGraphicsView; +QT_END_NAMESPACE + +class MainWindow : public QMainWindow +{ + Q_OBJECT + +public: + MainWindow(); + QString filePath() const + { return myFilePath;} + QString currentDir() const + { return QDir::currentPath();} + + int updateLibraries(); + +private slots: + void backgroundButtonGroupClicked(QAbstractButton *button); + void buttonGroupClicked(int id); + void deleteItem(); + void pointerGroupClicked(int id); + void bringToFront(); + void sendToBack(); + void itemInserted(DiagramItem *item); + void textInserted(QGraphicsTextItem *item); + void currentFontChanged(const QFont &font); + void fontSizeChanged(const QString &size); + void sceneScaleChanged(const QString &scale); + void textColorChanged(); + void itemColorChanged(); + void lineColorChanged(); + void textButtonTriggered(); + void fillButtonTriggered(); + void lineButtonTriggered(); + void handleFontChange(); + void itemSelected(QGraphicsItem *item); + void about(); + + int newDiagram(QString pathFile=""); + int openDiagram(); + int saveDiagram(); + int saveAsDiagram(); + int exportDiagram(); + + int libraryForm(); + void addLibPath(); + void delLibPath(); + void editLibPath(); + + int optionsForm(); + + + +private: + int saveIfNeeded(); + void addLibrariesButtons(QGridLayout *layout); + QDomDocument parseDocument(QString filePath); + void createLibraryDialog(); + void createToolBox(); + void createActions(); + void createMenus(); + void createToolbars(); + void sendTo(bool value); + QWidget *createBackgroundCellWidget(const QString &text, + const QString &image); + QWidget *createCellWidget(QString text, QDomElement *customItem); + + QMenu *createColorMenu(const char *slot, QColor defaultColor); + QIcon createColorToolButtonIcon(const QString &image, QColor color); + QIcon createColorIcon(QColor color); + + DiagramScene *scene; + QGraphicsView *view; + + QAction *newAction; + QAction *saveAction; + QAction *saveAsAction; + QAction *openAction; + QAction *exportImgAction; + + QAction *exitAction; + QAction *addAction; + QAction *deleteAction; + + QAction *libraryAction; + QAction *optionsAction; + + QAction *toFrontAction; + QAction *sendBackAction; + QAction *aboutAction; + + QMenu *fileMenu; + QMenu *itemMenu; + QMenu *preferencesMenu; + QMenu *aboutMenu; + + QToolBar *fileToolBar; + QToolBar *textToolBar; + QToolBar *editToolBar; + QToolBar *colorToolBar; + QToolBar *pointerToolbar; + + QComboBox *sceneScaleCombo; + QComboBox *itemColorCombo; + QComboBox *textColorCombo; + QComboBox *fontSizeCombo; + QFontComboBox *fontCombo; + + QToolBox *toolBox; + QButtonGroup *buttonGroup; + QButtonGroup *pointerTypeGroup; + QButtonGroup *backgroundButtonGroup; + QToolButton *fontColorToolButton; + QToolButton *fillColorToolButton; + QToolButton *lineColorToolButton; + QAction *boldAction; + QAction *underlineAction; + QAction *italicAction; + QAction *textAction; + QAction *fillAction; + QAction *lineAction; + QString myFilePath; + + QDialog *libDialog; + Ui_libraryDialog *libUi; + QStringList libraryList; + QHash domElementsByName; + QHash buttonIdByName; + static QString callexternapp(QString xexecFile, QString xexecParm); + +}; + +class callexternappT : public QThread +{ +public: + QString execFile; + QString execParm; + QString retnValu; + void run() + { + QProcess lnexternapp; + lnexternapp.start(QString("%1 %2").arg(execFile).arg(execParm)); + lnexternapp.waitForFinished(-1); + retnValu = QString(lnexternapp.readAll()); + } +}; + +#endif diff --git a/Software/sie_cg/moc_librarydialog.cpp b/Software/sie_cg/moc_librarydialog.cpp new file mode 100644 index 0000000..0acca32 --- /dev/null +++ b/Software/sie_cg/moc_librarydialog.cpp @@ -0,0 +1,69 @@ +/**************************************************************************** +** Meta object code from reading C++ file 'librarydialog.h' +** +** Created: Wed Oct 20 10:39:37 2010 +** by: The Qt Meta Object Compiler version 62 (Qt 4.6.2) +** +** WARNING! All changes made in this file will be lost! +*****************************************************************************/ + +#include "librarydialog.h" +#if !defined(Q_MOC_OUTPUT_REVISION) +#error "The header file 'librarydialog.h' doesn't include ." +#elif Q_MOC_OUTPUT_REVISION != 62 +#error "This file was generated using the moc from 4.6.2. It" +#error "cannot be used with the include files from this version of Qt." +#error "(The moc has changed too much.)" +#endif + +QT_BEGIN_MOC_NAMESPACE +static const uint qt_meta_data_libraryDialog[] = { + + // content: + 4, // revision + 0, // classname + 0, 0, // classinfo + 0, 0, // methods + 0, 0, // properties + 0, 0, // enums/sets + 0, 0, // constructors + 0, // flags + 0, // signalCount + + 0 // eod +}; + +static const char qt_meta_stringdata_libraryDialog[] = { + "libraryDialog\0" +}; + +const QMetaObject libraryDialog::staticMetaObject = { + { &QDialog::staticMetaObject, qt_meta_stringdata_libraryDialog, + qt_meta_data_libraryDialog, 0 } +}; + +#ifdef Q_NO_DATA_RELOCATION +const QMetaObject &libraryDialog::getStaticMetaObject() { return staticMetaObject; } +#endif //Q_NO_DATA_RELOCATION + +const QMetaObject *libraryDialog::metaObject() const +{ + return QObject::d_ptr->metaObject ? QObject::d_ptr->metaObject : &staticMetaObject; +} + +void *libraryDialog::qt_metacast(const char *_clname) +{ + if (!_clname) return 0; + if (!strcmp(_clname, qt_meta_stringdata_libraryDialog)) + return static_cast(const_cast< libraryDialog*>(this)); + return QDialog::qt_metacast(_clname); +} + +int libraryDialog::qt_metacall(QMetaObject::Call _c, int _id, void **_a) +{ + _id = QDialog::qt_metacall(_c, _id, _a); + if (_id < 0) + return _id; + return _id; +} +QT_END_MOC_NAMESPACE diff --git a/Software/sie_cg/moc_librarydialog.o b/Software/sie_cg/moc_librarydialog.o new file mode 100644 index 0000000000000000000000000000000000000000..cceb2549738d7d02dfd02cf9a208547b118e97d3 GIT binary patch literal 144780 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +