[qet] [3451] Element editor : start work for change how draw primitive ( work in progress) |
[ Thread Index |
Date Index
| More lists.tuxfamily.org/qet Archives
]
Revision: 3451
Author: blacksun
Date: 2014-11-04 23:08:42 +0100 (Tue, 04 Nov 2014)
Log Message:
-----------
Element editor : start work for change how draw primitive (work in progress)
Modified Paths:
--------------
trunk/qelectrotech.pro
trunk/sources/editor/elementscene.cpp
trunk/sources/editor/elementscene.h
Added Paths:
-----------
trunk/sources/editor/esevent/
trunk/sources/editor/esevent/eseventaddline.cpp
trunk/sources/editor/esevent/eseventaddline.h
trunk/sources/editor/esevent/eseventinterface.cpp
trunk/sources/editor/esevent/eseventinterface.h
Modified: trunk/qelectrotech.pro
===================================================================
--- trunk/qelectrotech.pro 2014-11-04 17:39:27 UTC (rev 3450)
+++ trunk/qelectrotech.pro 2014-11-04 22:08:42 UTC (rev 3451)
@@ -63,17 +63,28 @@
TEMPLATE = app
DEPENDPATH += .
-INCLUDEPATH += sources sources/editor sources/titleblock sources/ui sources/qetgraphicsitem sources/richtext sources/factory sources/properties sources/dvevent
+INCLUDEPATH += sources \
+ sources/titleblock \
+ sources/ui sources/qetgraphicsitem \
+ sources/richtext \
+ sources/factory \
+ sources/properties \
+ sources/dvevent \
+ sources/editor \
+ sources/editor/esevent
+
# Fichiers sources
HEADERS += $$files(sources/*.h) $$files(sources/ui/*.h) $$files(sources/editor/*.h) $$files(sources/titleblock/*.h) $$files(sources/richtext/*.h) $$files(sources/qetgraphicsitem/*.h) $$files(sources/factory/*.h) \
$$files(sources/properties/*.h) \
$$files(sources/editor/ui/*.h) \
+ $$files(sources/editor/esevent/*.h) \
$$files(sources/dvevent/*.h)
SOURCES += $$files(sources/*.cpp) $$files(sources/editor/*.cpp) $$files(sources/titleblock/*.cpp) $$files(sources/richtext/*.cpp) $$files(sources/ui/*.cpp) $$files(sources/qetgraphicsitem/*.cpp) $$files(sources/factory/*.cpp) \
$$files(sources/properties/*.cpp) \
$$files(sources/editor/ui/*.cpp) \
+ $$files(sources/editor/esevent/*.cpp) \
$$files(sources/dvevent/*.cpp)
# Liste des fichiers qui seront incorpores au binaire en tant que ressources Qt
Modified: trunk/sources/editor/elementscene.cpp
===================================================================
--- trunk/sources/editor/elementscene.cpp 2014-11-04 17:39:27 UTC (rev 3450)
+++ trunk/sources/editor/elementscene.cpp 2014-11-04 22:08:42 UTC (rev 3451)
@@ -31,7 +31,10 @@
#include "elementcontent.h"
#include "nameslist.h"
#include "ui/elementpropertieseditorwidget.h"
+#include "eseventinterface.h"
+#include <QKeyEvent>
+
/**
Constructeur
@param editor L'editeur d'element concerne
@@ -41,6 +44,7 @@
QGraphicsScene(parent),
m_elmt_type("simple"),
qgi_manager(this),
+ m_event_interface(nullptr),
element_editor(editor),
decorator_(0)
{
@@ -67,13 +71,6 @@
}
/**
- Passe la scene en mode "ajout de ligne"
-*/
-void ElementScene::slot_addLine() {
- behavior = Line;
-}
-
-/**
Passe la scene en mode "ajout de rectangle"
*/
void ElementScene::slot_addRectangle() {
@@ -135,8 +132,19 @@
@param e objet decrivant l'evenement
*/
void ElementScene::mouseMoveEvent(QGraphicsSceneMouseEvent *e) {
+ if (m_event_interface) {
+ if (m_event_interface -> mouseMoveEvent(e)) {
+ if (m_event_interface->isFinish()) {
+ emit(partsAdded());
+ emit(needNormalMode());
+ delete m_event_interface; m_event_interface = nullptr;
+ }
+ return;
+ }
+ }
+
QPointF event_pos = e -> scenePos();
- if (mustSnapToGrid(e)) snapToGrid(event_pos);
+ if (mustSnapToGrid(e)) event_pos = snapToGrid(event_pos);
if (behavior != Polygon && current_polygon != NULL) current_polygon = NULL;
if (behavior == PasteArea) {
@@ -151,9 +159,6 @@
QPolygonF temp_polygon;
if (e -> buttons() & Qt::LeftButton) {
switch(behavior) {
- case Line:
- current_line -> setLine(QLineF(current_line -> line().p1(), event_pos));
- break;
case Rectangle:
temp_rect = current_rectangle -> rect();
temp_rect.setBottomRight(event_pos);
@@ -193,17 +198,23 @@
@param e objet decrivant l'evenement
*/
void ElementScene::mousePressEvent(QGraphicsSceneMouseEvent *e) {
+ if (m_event_interface) {
+ if (m_event_interface -> mousePressEvent(e)) {
+ if (m_event_interface->isFinish()) {
+ emit(partsAdded());
+ emit(needNormalMode());
+ delete m_event_interface; m_event_interface = nullptr;
+ }
+ return;
+ }
+ }
QPointF event_pos = e -> scenePos();
- if (mustSnapToGrid(e)) snapToGrid(event_pos);
+ if (mustSnapToGrid(e)) event_pos = snapToGrid(event_pos);
if (behavior != Polygon && current_polygon != NULL) current_polygon = NULL;
QPolygonF temp_polygon;
if (e -> button() & Qt::LeftButton) {
switch(behavior) {
- case Line:
- current_line = new PartLine(element_editor, 0, this);
- current_line -> setLine(QLineF(event_pos, event_pos));
- break;
case Rectangle:
current_rectangle = new PartRectangle(element_editor, 0, this);
current_rectangle -> setRect(QRectF(event_pos, QSizeF(0.0, 0.0)));
@@ -240,8 +251,19 @@
@param e objet decrivant l'evenement
*/
void ElementScene::mouseReleaseEvent(QGraphicsSceneMouseEvent *e) {
+ if (m_event_interface) {
+ if (m_event_interface -> mouseReleaseEvent(e)) {
+ if (m_event_interface->isFinish()) {
+ emit(partsAdded());
+ emit(needNormalMode());
+ delete m_event_interface; m_event_interface = nullptr;
+ }
+ return;
+ }
+ }
+
QPointF event_pos = e -> scenePos();
- if (mustSnapToGrid(e)) snapToGrid(event_pos);
+ if (mustSnapToGrid(e)) event_pos = snapToGrid(event_pos);
PartTerminal *terminal;
PartText *text;
@@ -258,12 +280,6 @@
if (e -> button() & Qt::LeftButton) {
switch(behavior) {
- case Line:
- if (qgiManager().manages(current_line)) break;
- undo_stack.push(new AddPartCommand(tr("ligne"), this, current_line));
- emit(partsAdded());
- endCurrentBehavior(e);
- break;
case Rectangle:
if (qgiManager().manages(current_rectangle)) break;
current_rectangle -> setRect(current_rectangle -> rect().normalized());
@@ -323,6 +339,25 @@
}
/**
+ * @brief ElementScene::keyPressEvent
+ * manage key press event
+ * @param event
+ */
+void ElementScene::keyPressEvent(QKeyEvent *event) {
+ if (m_event_interface) {
+ if (m_event_interface -> keyPressEvent(event)) {
+ if (m_event_interface->isFinish()) {
+ emit(partsAdded());
+ emit(needNormalMode());
+ delete m_event_interface; m_event_interface = nullptr;
+ }
+ return;
+ }
+ }
+ QGraphicsScene::keyPressEvent(event);
+}
+
+/**
Dessine l'arriere-plan de l'editeur, cad l'indicateur de hotspot.
@param p Le QPainter a utiliser pour dessiner
@param rect Le rectangle de la zone a dessiner
@@ -358,6 +393,16 @@
}
/**
+ * @brief ElementScene::setInterface
+ * Set a new event interface
+ * @param interface
+ */
+void ElementScene::setInterface(ESEventInterface *interface) {
+ if (m_event_interface) delete m_event_interface;
+ m_event_interface = interface;
+}
+
+/**
@return la taille horizontale de la grille
*/
int ElementScene::xGrid() const {
@@ -620,6 +665,10 @@
element_editor -> contextMenu(event);
}
+QETElementEditor* ElementScene::editor() const {
+ return element_editor;
+}
+
/**
Selectionne une liste de parties
@param content liste des parties a selectionner
@@ -1097,9 +1146,10 @@
@param point une reference vers un QPointF. Cet objet sera modifie.
*/
-void ElementScene::snapToGrid(QPointF &point) {
+QPointF ElementScene::snapToGrid(QPointF point) {
point.rx() = qRound(point.x() / x_grid) * x_grid;
point.ry() = qRound(point.y() / y_grid) * y_grid;
+ return point;
}
/**
Modified: trunk/sources/editor/elementscene.h
===================================================================
--- trunk/sources/editor/elementscene.h 2014-11-04 17:39:27 UTC (rev 3450)
+++ trunk/sources/editor/elementscene.h 2014-11-04 22:08:42 UTC (rev 3451)
@@ -23,15 +23,17 @@
#include "qgimanager.h"
#include "elementcontent.h"
#include "diagramcontext.h"
+
class CustomElementPart;
class ElementEditionCommand;
class ElementPrimitiveDecorator;
class QETElementEditor;
-class PartLine;
class PartRectangle;
class PartEllipse;
class PartPolygon;
class PartArc;
+class ESEventInterface;
+class QKeyEvent;
/**
This class is the canvas allowing the visual edition of an electrial element.
It displays the various primitives composing the drawing of the element, the
@@ -43,7 +45,7 @@
// enum
public:
- enum Behavior { Normal, Line, Rectangle, Circle, Ellipse, Polygon, Text, Terminal, Arc, TextField, PasteArea };
+ enum Behavior { Normal, Rectangle, Circle, Ellipse, Polygon, Text, Terminal, Arc, TextField, PasteArea };
enum ItemOption {
SortByZValue = 1,
IncludeTerminals = 2,
@@ -64,57 +66,57 @@
// attributes
private:
- /// List of localized names
- NamesList _names;
- /// Extra informations
- QString informations_;
- /// element type
- QString m_elmt_type;
- /// element kind info
- DiagramContext m_elmt_kindInfo;
- /// QGraphicsItem manager
- QGIManager qgi_manager;
- /// Undo stack
- QUndoStack undo_stack;
- /**
- fsi_pos (first selected item pos) : Position of the forst selected item: used
- to cancel mouse movements; also used to handle movements using keybard
- arrwows.
- */
- QPointF fsi_pos;
- QPointF moving_press_pos;
- bool moving_parts_;
+ /// List of localized names
+ NamesList _names;
+ /// Extra informations
+ QString informations_;
+ /// element type
+ QString m_elmt_type;
+ /// element kind info
+ DiagramContext m_elmt_kindInfo;
+ /// QGraphicsItem manager
+ QGIManager qgi_manager;
+ /// Undo stack
+ QUndoStack undo_stack;
+ /**
+ fsi_pos (first selected item pos) : Position of the forst selected item: used
+ to cancel mouse movements; also used to handle movements using keybard
+ arrwows.
+ */
+ QPointF fsi_pos;
+ QPointF moving_press_pos;
+ bool moving_parts_;
- /// Variables related to drawing
- Behavior behavior;
- PartLine *current_line;
- PartRectangle *current_rectangle;
- PartEllipse *current_ellipse;
- PartPolygon *current_polygon;
- PartArc *current_arc;
- QETElementEditor *element_editor;
+ /// Variables related to drawing
+ ESEventInterface *m_event_interface;
+ Behavior behavior;
+ PartRectangle *current_rectangle;
+ PartEllipse *current_ellipse;
+ PartPolygon *current_polygon;
+ PartArc *current_arc;
+ QETElementEditor *element_editor;
- /// Variables to manage the paste area on the scene
- QGraphicsRectItem *paste_area_;
- QRectF defined_paste_area_;
+ /// Variables to manage the paste area on the scene
+ QGraphicsRectItem *paste_area_;
+ QRectF defined_paste_area_;
- /// Variables to handle copy/paste with offset
- QString last_copied_;
+ /// Variables to handle copy/paste with offset
+ QString last_copied_;
- /// Decorator item displayed when at least one item is selected
- ElementPrimitiveDecorator *decorator_;
+ /// Decorator item displayed when at least one item is selected
+ ElementPrimitiveDecorator *decorator_;
- ///< Size of the horizontal grid step
- int x_grid;
- ///< Size of the vertical grid step
- int y_grid;
+ ///< Size of the horizontal grid step
+ int x_grid;
+ ///< Size of the vertical grid step
+ int y_grid;
// methods
public:
+ void setInterface (ESEventInterface *interface);
+ QPointF snapToGrid(QPointF point);
void setNames(const NamesList &);
NamesList names() const;
- bool internalConnections();
- void setInternalConnections(bool);
QString informations() const;
void setInformations(const QString &);
QString elementType () const {return m_elmt_type;}
@@ -140,11 +142,14 @@
void copy();
void paste();
void contextMenu (QContextMenuEvent *event);
+ QETElementEditor* editor() const;
protected:
- virtual void mouseMoveEvent(QGraphicsSceneMouseEvent *);
- virtual void mousePressEvent(QGraphicsSceneMouseEvent *);
- virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent *);
+ virtual void mouseMoveEvent (QGraphicsSceneMouseEvent *);
+ virtual void mousePressEvent (QGraphicsSceneMouseEvent *);
+ virtual void mouseReleaseEvent (QGraphicsSceneMouseEvent *);
+ virtual void keyPressEvent (QKeyEvent *event);
+
virtual void drawForeground(QPainter *, const QRectF &);
virtual void endCurrentBehavior(const QGraphicsSceneMouseEvent *);
@@ -156,7 +161,6 @@
ElementContent addContentAtPos(const ElementContent &, const QPointF &, QString * = 0);
void addPrimitive(QGraphicsItem *);
void initPasteArea();
- void snapToGrid(QPointF &);
bool mustSnapToGrid(QGraphicsSceneMouseEvent *);
static bool zValueLessThan(QGraphicsItem *, QGraphicsItem *);
QMutex *decorator_lock_;
@@ -164,7 +168,6 @@
public slots:
void slot_move();
- void slot_addLine();
void slot_addRectangle();
void slot_addCircle();
void slot_addEllipse();
Added: trunk/sources/editor/esevent/eseventaddline.cpp
===================================================================
--- trunk/sources/editor/esevent/eseventaddline.cpp (rev 0)
+++ trunk/sources/editor/esevent/eseventaddline.cpp 2014-11-04 22:08:42 UTC (rev 3451)
@@ -0,0 +1,103 @@
+/*
+ Copyright 2006-2014 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 <http://www.gnu.org/licenses/>.
+*/
+#include <QGraphicsSceneMouseEvent>
+#include <QObject>
+
+#include "eseventaddline.h"
+#include "elementscene.h"
+#include "qetelementeditor.h"
+#include "partline.h"
+#include "editorcommands.h"
+
+/**
+ * @brief ESEventAddLine::ESEventAddLine
+ * Constructor
+ * @param scene : scene where we operate this action
+ */
+ESEventAddLine::ESEventAddLine(ElementScene *scene) :
+ ESEventInterface (scene),
+ m_line (nullptr)
+{}
+
+/**
+ * @brief ESEventAddLine::~ESEventAddLine
+ * destructor
+ */
+ESEventAddLine::~ESEventAddLine() {
+ if (m_running || m_abort)
+ delete m_line;
+}
+
+/**
+ * @brief ESEventAddLine::mousePressEvent
+ * @param event
+ * @return
+ */
+bool ESEventAddLine::mousePressEvent(QGraphicsSceneMouseEvent *event) {
+
+ if (event -> button() == Qt::LeftButton) {
+
+ if (! m_running) m_running = true;
+ QPointF pos = m_scene -> snapToGrid(event -> scenePos());
+
+ //Create new line
+ if (!m_line) {
+ m_line = new PartLine(m_editor, 0, m_scene);
+ m_line -> setLine(QLineF(pos, pos));
+ return true;
+ }
+
+ //Add new line to scene
+ m_line -> setLine(QLineF(m_line->line().p1(), pos));
+ m_scene -> undoStack().push(new AddPartCommand(QObject::tr("ligne"), m_scene, m_line));
+
+ //Set m_line to nullptr for create new line at next mouse press
+ m_line = nullptr;
+
+ return true;
+ }
+
+ //Remove the current line if exist
+ //or finish if no line
+ if (event -> button() == Qt::RightButton) {
+ if (m_line) {
+ delete m_line; m_line = nullptr;
+ }
+ else {
+ m_running = false;
+ }
+ return true;
+ }
+
+ return false;
+}
+
+/**
+ * @brief ESEventAddLine::mouseMoveEvent
+ * @param event
+ * @return
+ */
+bool ESEventAddLine::mouseMoveEvent(QGraphicsSceneMouseEvent *event) {
+ updateHelpCross (event -> scenePos());
+
+ if (!m_line) return false;
+
+ QPointF pos = m_scene -> snapToGrid(event -> scenePos());
+ m_line -> setLine(QLineF(m_line->line().p1(), pos));
+ return true;
+}
Added: trunk/sources/editor/esevent/eseventaddline.h
===================================================================
--- trunk/sources/editor/esevent/eseventaddline.h (rev 0)
+++ trunk/sources/editor/esevent/eseventaddline.h 2014-11-04 22:08:42 UTC (rev 3451)
@@ -0,0 +1,40 @@
+/*
+ Copyright 2006-2014 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 <http://www.gnu.org/licenses/>.
+*/
+#ifndef ESEVENTADDLINE_H
+#define ESEVENTADDLINE_H
+
+#include "eseventinterface.h"
+
+class ElementScene;
+class PartLine;
+class QGraphicsSceneMouseEvent;
+
+class ESEventAddLine : public ESEventInterface
+{
+ public:
+ ESEventAddLine(ElementScene *scene);
+ virtual ~ESEventAddLine();
+
+ virtual bool mousePressEvent(QGraphicsSceneMouseEvent *event);
+ virtual bool mouseMoveEvent (QGraphicsSceneMouseEvent *event);
+
+ private:
+ PartLine *m_line;
+};
+
+#endif // ESEVENTADDLINE_H
Added: trunk/sources/editor/esevent/eseventinterface.cpp
===================================================================
--- trunk/sources/editor/esevent/eseventinterface.cpp (rev 0)
+++ trunk/sources/editor/esevent/eseventinterface.cpp 2014-11-04 22:08:42 UTC (rev 3451)
@@ -0,0 +1,117 @@
+/*
+ Copyright 2006-2014 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 <http://www.gnu.org/licenses/>.
+*/
+#include "eseventinterface.h"
+#include "elementscene.h"
+#include "qetelementeditor.h"
+#include <QGraphicsSceneMouseEvent>
+
+ESEventInterface::ESEventInterface(ElementScene *scene) :
+ m_scene (scene),
+ m_editor (scene->editor()),
+ m_help_horiz (nullptr),
+ m_help_verti (nullptr),
+ m_running (false),
+ m_abort (false)
+{
+ foreach (QGraphicsView *qgv, m_scene->views())
+ qgv->setContextMenuPolicy(Qt::NoContextMenu);
+}
+
+ESEventInterface::~ESEventInterface() {
+ delete m_help_horiz;
+ delete m_help_verti;
+
+ foreach (QGraphicsView *qgv, m_scene->views())
+ qgv->setContextMenuPolicy(Qt::DefaultContextMenu);
+}
+
+bool ESEventInterface::mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event) {
+ Q_UNUSED (event);
+ return false;
+}
+
+bool ESEventInterface::mousePressEvent(QGraphicsSceneMouseEvent *event) {
+ Q_UNUSED (event);
+ return false;
+}
+
+bool ESEventInterface::mouseMoveEvent(QGraphicsSceneMouseEvent *event) {
+ Q_UNUSED (event);
+ return false;
+}
+
+bool ESEventInterface::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) {
+ Q_UNUSED (event);
+ return false;
+}
+
+bool ESEventInterface::wheelEvent(QGraphicsSceneWheelEvent *event) {
+ Q_UNUSED (event);
+ return false;
+}
+
+/**
+ * @brief ESEventInterface::keyPressEvent
+ * By default, press escape key abort the curent action
+ * @param event
+ * @return
+ */
+bool ESEventInterface::keyPressEvent(QKeyEvent *event) {
+ if (event->key() == Qt::Key_Escape) {
+ m_running = false;
+ m_abort = true;
+ return true;
+ }
+ return false;
+}
+
+bool ESEventInterface::KeyReleaseEvent(QKeyEvent *event) {
+ Q_UNUSED (event);
+ return false;
+}
+
+bool ESEventInterface::isRunning() const {
+ return m_running;
+}
+
+bool ESEventInterface::isFinish() const {
+ return !m_running;
+}
+
+void ESEventInterface::updateHelpCross(const QPointF &p) {
+ //If line isn't created yet, we create it.
+ if (!m_help_horiz || !m_help_verti) {
+ QPen pen;
+ pen.setColor(Qt::darkBlue);
+ if (!m_help_horiz) {
+ m_help_horiz = new QGraphicsLineItem(-10000, 0, 10000, 0, 0, m_scene);
+ m_help_horiz -> setPen(pen);
+ }
+ if (!m_help_verti) {
+ m_help_verti = new QGraphicsLineItem(0, -10000, 0, 10000, 0, m_scene);
+ m_help_verti -> setPen(pen);
+ }
+ }
+
+ //Update the position of the cross
+ QPointF point = m_scene -> snapToGrid(p);
+
+ m_help_horiz -> setY(point.y());
+ m_help_verti -> setX(point.x());
+
+}
Added: trunk/sources/editor/esevent/eseventinterface.h
===================================================================
--- trunk/sources/editor/esevent/eseventinterface.h (rev 0)
+++ trunk/sources/editor/esevent/eseventinterface.h 2014-11-04 22:08:42 UTC (rev 3451)
@@ -0,0 +1,55 @@
+/*
+ Copyright 2006-2014 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 <http://www.gnu.org/licenses/>.
+*/
+#ifndef ESEVENTINTERFACE_H
+#define ESEVENTINTERFACE_H
+
+class QGraphicsSceneMouseEvent;
+class QGraphicsSceneWheelEvent;
+class QKeyEvent;
+class ElementScene;
+class QETElementEditor;
+class QGraphicsLineItem;
+class QPointF;
+
+class ESEventInterface
+{
+ public:
+ ESEventInterface(ElementScene *scene);
+ virtual ~ESEventInterface();
+
+ virtual bool mouseDoubleClickEvent (QGraphicsSceneMouseEvent *event);
+ virtual bool mousePressEvent (QGraphicsSceneMouseEvent *event);
+ virtual bool mouseMoveEvent (QGraphicsSceneMouseEvent *event);
+ virtual bool mouseReleaseEvent (QGraphicsSceneMouseEvent *event);
+ virtual bool wheelEvent (QGraphicsSceneWheelEvent *event);
+ virtual bool keyPressEvent (QKeyEvent *event);
+ virtual bool KeyReleaseEvent (QKeyEvent *event);
+ virtual bool isRunning () const;
+ virtual bool isFinish () const;
+
+ protected:
+ void updateHelpCross (const QPointF &p);
+
+ protected:
+ ElementScene *m_scene;
+ QETElementEditor *m_editor;
+ QGraphicsLineItem *m_help_horiz, *m_help_verti;
+ bool m_running, m_abort;
+};
+
+#endif // ESEVENTINTERFACE_H