diff --git a/sources/diagramevent/diagrameventaddtext.cpp b/sources/diagramevent/diagrameventaddtext.cpp new file mode 100644 index 000000000..6d12599cb --- /dev/null +++ b/sources/diagramevent/diagrameventaddtext.cpp @@ -0,0 +1,56 @@ +/* + Copyright 2006-2015 The QElectroTech Team + This file is part of QElectroTech. + + QElectroTech is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 2 of the License, or + (at your option) any later version. + + QElectroTech is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with QElectroTech. If not, see . +*/ + +#include "diagrameventaddtext.h" +#include "independenttextitem.h" +#include "diagramcommands.h" +#include "diagram.h" + +/** + * @brief DiagramEventAddText::DiagramEventAddText + * Default constructor + * @param diagram : the diagram where this event must operate + */ +DiagramEventAddText::DiagramEventAddText(Diagram *diagram) : + DiagramEventInterface(diagram) +{} + +/** + * @brief DiagramEventAddText::~DiagramEventAddText + */ +DiagramEventAddText::~DiagramEventAddText() +{} + +/** + * @brief DiagramEventAddText::mousePressEvent + * @param event : event of mouse press event. + * @return : true if this event is handled, otherwise false + */ +bool DiagramEventAddText::mousePressEvent(QGraphicsSceneMouseEvent *event) +{ + if (event->button() == Qt::LeftButton) + { + IndependentTextItem *text = new IndependentTextItem(); + m_diagram -> undoStack().push(new AddItemCommand(text, m_diagram, event->scenePos())); + text->setTextInteractionFlags(Qt::TextEditorInteraction); + text->setFocus(Qt::MouseFocusReason); + emit finish(); + return true; + } + return false; +} diff --git a/sources/diagramevent/diagrameventaddtext.h b/sources/diagramevent/diagrameventaddtext.h new file mode 100644 index 000000000..8ef2393d3 --- /dev/null +++ b/sources/diagramevent/diagrameventaddtext.h @@ -0,0 +1,40 @@ +/* + Copyright 2006-2015 The QElectroTech Team + This file is part of QElectroTech. + + QElectroTech is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 2 of the License, or + (at your option) any later version. + + QElectroTech is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with QElectroTech. If not, see . +*/ +#ifndef DIAGRAMEVENTADDTEXT_H +#define DIAGRAMEVENTADDTEXT_H + +#include "diagrameventinterface.h" + +class Diagram; + +/** + * @brief The DiagramEventAddText class + * This diagram event handle the creation of a new text in a diagram + */ +class DiagramEventAddText : public DiagramEventInterface +{ + Q_OBJECT + + public: + DiagramEventAddText(Diagram *diagram); + virtual ~DiagramEventAddText(); + + virtual bool mousePressEvent (QGraphicsSceneMouseEvent *event); +}; + +#endif // DIAGRAMEVENTADDTEXT_H diff --git a/sources/dvevent/dveventaddtext.cpp b/sources/dvevent/dveventaddtext.cpp deleted file mode 100644 index e7d85cf64..000000000 --- a/sources/dvevent/dveventaddtext.cpp +++ /dev/null @@ -1,43 +0,0 @@ -/* - Copyright 2006-2015 The QElectroTech Team - This file is part of QElectroTech. - - QElectroTech is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 2 of the License, or - (at your option) any later version. - - QElectroTech is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with QElectroTech. If not, see . -*/ -#include "dveventaddtext.h" -#include "independenttextitem.h" -#include "diagram.h" -#include "diagramcommands.h" -#include "diagramview.h" -#include - -DVEventAddText::DVEventAddText(DiagramView *dv) : - DVEventInterface (dv) -{} - -DVEventAddText::~DVEventAddText() {} - -bool DVEventAddText::mousePressEvent(QMouseEvent *event) -{ - if (event->button() == Qt::LeftButton) - { - IndependentTextItem *text = new IndependentTextItem(); - m_diagram -> undoStack().push(new AddItemCommand(text, m_diagram, m_dv -> mapToScene(event -> pos()))); - text->setTextInteractionFlags(Qt::TextEditorInteraction); - text->setFocus(Qt::MouseFocusReason); - emit finish(); - return true; - } - return false; -} diff --git a/sources/dvevent/dveventaddtext.h b/sources/dvevent/dveventaddtext.h deleted file mode 100644 index afe70d312..000000000 --- a/sources/dvevent/dveventaddtext.h +++ /dev/null @@ -1,33 +0,0 @@ -/* - Copyright 2006-2015 The QElectroTech Team - This file is part of QElectroTech. - - QElectroTech is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 2 of the License, or - (at your option) any later version. - - QElectroTech is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with QElectroTech. If not, see . -*/ -#ifndef DVEVENTADDTEXT_H -#define DVEVENTADDTEXT_H - -#include "dveventinterface.h" - -class DVEventAddText : public DVEventInterface -{ - Q_OBJECT - - public: - DVEventAddText(DiagramView *dv); - virtual ~DVEventAddText (); - virtual bool mousePressEvent (QMouseEvent *event); -}; - -#endif // DVEVENTADDTEXT_H diff --git a/sources/qetdiagrameditor.cpp b/sources/qetdiagrameditor.cpp index 237b7a83c..d2c2b9bce 100644 --- a/sources/qetdiagrameditor.cpp +++ b/sources/qetdiagrameditor.cpp @@ -35,11 +35,11 @@ #include "nomenclature.h" #include "diagramfoliolist.h" #include "qetshapeitem.h" -#include "dveventaddtext.h" #include "reportproperties.h" #include "diagrampropertieseditordockwidget.h" #include "diagrameventaddshape.h" #include "diagrameventaddimage.h" +#include "diagrameventaddtext.h" #include "ui/dialogautonum.h" @@ -1138,25 +1138,10 @@ void QETDiagramEditor::selectGroupTriggered(QAction *action) void QETDiagramEditor::addItemGroupTriggered(QAction *action) { QString value = action->data().toString(); - DiagramView *dv = currentDiagram(); - if (!dv || value.isEmpty()) return; + if (Q_UNLIKELY (!currentDiagram() || !currentDiagram()->diagram() || value.isEmpty())) return; - DVEventInterface *dvevent = nullptr; - - if (value == "text") - dvevent = new DVEventAddText(dv); - - if (dvevent) - { - dv->setEventInterface(dvevent); - connect(dvevent, &DVEventInterface::finish, [action](){action->setChecked(false);}); - return; - } - - if (Q_UNLIKELY (!dv->diagram())) return; - - Diagram *d = dv->diagram(); + Diagram *d = currentDiagram()->diagram(); DiagramEventInterface *diagram_event = nullptr; if (value == "line") @@ -1179,6 +1164,8 @@ void QETDiagramEditor::addItemGroupTriggered(QAction *action) else diagram_event = deai; } + else if (value == "text") + diagram_event = new DiagramEventAddText(d); if (diagram_event) {