From 848be587e3e010ed0258483116cf9f035c2855d7 Mon Sep 17 00:00:00 2001 From: blacksun Date: Mon, 10 Nov 2014 22:57:32 +0000 Subject: [PATCH] Element editor : clean some code git-svn-id: svn+ssh://svn.tuxfamily.org/svnroot/qet/qet/trunk@3476 bfdf4180-ca20-0410-9c96-a3a8aa849046 --- sources/editor/elementscene.cpp | 12 ++--- sources/editor/elementscene.h | 5 --- sources/editor/esevent/eseventaddellipse.cpp | 2 +- sources/editor/esevent/eseventinterface.cpp | 8 ++++ sources/editor/esevent/eseventinterface.h | 2 + sources/editor/qetelementeditor.cpp | 46 +++++--------------- sources/editor/qetelementeditor.h | 4 +- 7 files changed, 29 insertions(+), 50 deletions(-) diff --git a/sources/editor/elementscene.cpp b/sources/editor/elementscene.cpp index b72a29b22..a7e5b3cb1 100644 --- a/sources/editor/elementscene.cpp +++ b/sources/editor/elementscene.cpp @@ -80,7 +80,6 @@ void ElementScene::mouseMoveEvent(QGraphicsSceneMouseEvent *e) { if (m_event_interface -> mouseMoveEvent(e)) { if (m_event_interface->isFinish()) { emit(partsAdded()); - emit(needNormalMode()); delete m_event_interface; m_event_interface = nullptr; } return; @@ -109,7 +108,6 @@ void ElementScene::mousePressEvent(QGraphicsSceneMouseEvent *e) { if (m_event_interface -> mousePressEvent(e)) { if (m_event_interface->isFinish()) { emit(partsAdded()); - emit(needNormalMode()); delete m_event_interface; m_event_interface = nullptr; } return; @@ -128,7 +126,6 @@ void ElementScene::mouseReleaseEvent(QGraphicsSceneMouseEvent *e) { if (m_event_interface -> mouseReleaseEvent(e)) { if (m_event_interface->isFinish()) { emit(partsAdded()); - emit(needNormalMode()); delete m_event_interface; m_event_interface = nullptr; } return; @@ -155,7 +152,6 @@ void ElementScene::mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event) { if (m_event_interface -> mouseDoubleClickEvent(event)) { if (m_event_interface->isFinish()) { emit(partsAdded()); - emit(needNormalMode()); delete m_event_interface; m_event_interface = nullptr; } return; @@ -175,7 +171,6 @@ void ElementScene::keyPressEvent(QKeyEvent *event) { if (m_event_interface -> keyPressEvent(event)) { if (m_event_interface->isFinish()) { emit(partsAdded()); - emit(needNormalMode()); delete m_event_interface; m_event_interface = nullptr; } return; @@ -211,7 +206,12 @@ void ElementScene::drawForeground(QPainter *p, const QRectF &rect) { * @param interface */ void ElementScene::setEventInterface(ESEventInterface *interface) { - if (m_event_interface) delete m_event_interface; + if (m_event_interface) { + delete m_event_interface; + //We must to re-init because previous interface + //Reset his own init when deleted + interface->init(); + } m_event_interface = interface; } diff --git a/sources/editor/elementscene.h b/sources/editor/elementscene.h index 2de517ff3..524085fb8 100644 --- a/sources/editor/elementscene.h +++ b/sources/editor/elementscene.h @@ -174,11 +174,6 @@ class ElementScene : public QGraphicsScene { void stackAction(ElementEditionCommand *); signals: - /** - Signal emitted when the scene requires the element editor to switch back to - normal mode. - */ - void needNormalMode(); /// Signal emitted after one or several parts were added void partsAdded(); /// Signal emitted after one or several parts were removed diff --git a/sources/editor/esevent/eseventaddellipse.cpp b/sources/editor/esevent/eseventaddellipse.cpp index 28a52ad4d..7b807c883 100644 --- a/sources/editor/esevent/eseventaddellipse.cpp +++ b/sources/editor/esevent/eseventaddellipse.cpp @@ -60,7 +60,7 @@ bool ESEventAddEllipse::mousePressEvent(QGraphicsSceneMouseEvent *event) { //Add ellipse to scene m_ellipse -> setRect(m_ellipse -> rect().normalized()); - m_scene -> undoStack().push(new AddPartCommand(QObject::tr("Rectangle"), m_scene, m_ellipse)); + m_scene -> undoStack().push(new AddPartCommand(QObject::tr("Ellipse"), m_scene, m_ellipse)); //Set m_ellipse to nullptr for create new ellipse at next mouse press m_ellipse = nullptr; diff --git a/sources/editor/esevent/eseventinterface.cpp b/sources/editor/esevent/eseventinterface.cpp index c0a6f0584..4ae6f42ce 100644 --- a/sources/editor/esevent/eseventinterface.cpp +++ b/sources/editor/esevent/eseventinterface.cpp @@ -28,8 +28,14 @@ ESEventInterface::ESEventInterface(ElementScene *scene) : m_running (false), m_abort (false) { + init(); +} + +void ESEventInterface::init() { foreach (QGraphicsView *qgv, m_scene->views()) qgv->setContextMenuPolicy(Qt::NoContextMenu); + + m_editor->slot_setNoDragToView(); } ESEventInterface::~ESEventInterface() { @@ -38,6 +44,8 @@ ESEventInterface::~ESEventInterface() { foreach (QGraphicsView *qgv, m_scene->views()) qgv->setContextMenuPolicy(Qt::DefaultContextMenu); + + m_editor->slot_setRubberBandToView(); } bool ESEventInterface::mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event) { diff --git a/sources/editor/esevent/eseventinterface.h b/sources/editor/esevent/eseventinterface.h index 162612e39..4b85ec4f1 100644 --- a/sources/editor/esevent/eseventinterface.h +++ b/sources/editor/esevent/eseventinterface.h @@ -32,6 +32,8 @@ class ESEventInterface ESEventInterface(ElementScene *scene); virtual ~ESEventInterface(); + void init(); + virtual bool mouseDoubleClickEvent (QGraphicsSceneMouseEvent *event); virtual bool mousePressEvent (QGraphicsSceneMouseEvent *event); virtual bool mouseMoveEvent (QGraphicsSceneMouseEvent *event); diff --git a/sources/editor/qetelementeditor.cpp b/sources/editor/qetelementeditor.cpp index 51f67e1a8..c6185ad70 100644 --- a/sources/editor/qetelementeditor.cpp +++ b/sources/editor/qetelementeditor.cpp @@ -162,7 +162,6 @@ void QETElementEditor::setupActions() { edit_lower = new QAction(QET::Icons::Lower, tr("\311loigner"), this); edit_backward = new QAction(QET::Icons::SendBackward, tr("Envoyer au fond"), this); edit_forward = new QAction(QET::Icons::BringForward, tr("Amener au premier plan"), this); - move = new QAction(QET::Icons::PartSelect, tr("D\351placer un objet"), this); add_line = new QAction(QET::Icons::PartLine, tr("Ajouter une ligne"), this); add_rectangle = new QAction(QET::Icons::PartRectangle, tr("Ajouter un rectangle"), this); add_ellipse = new QAction(QET::Icons::PartEllipse, tr("Ajouter une ellipse"), this); @@ -172,16 +171,6 @@ void QETElementEditor::setupActions() { add_terminal = new QAction(QET::Icons::Terminal, tr("Ajouter une borne"), this); add_textfield = new QAction(QET::Icons::PartTextField, tr("Ajouter un champ de texte"), this); - QString add_status_tip = tr("Maintenez la touche Shift enfonc\351e pour effectuer plusieurs ajouts d'affil\351e"); - add_line -> setStatusTip(add_status_tip); - add_rectangle -> setStatusTip(add_status_tip); - add_ellipse -> setStatusTip(add_status_tip); - add_text -> setStatusTip(add_status_tip); - add_arc -> setStatusTip(add_status_tip); - add_terminal -> setStatusTip(add_status_tip); - add_textfield -> setStatusTip(add_status_tip); - add_polygon -> setStatusTip(tr("Utilisez le bouton droit de la souris pour poser le dernier point du polygone")); - undo = ce_scene -> undoStack().createUndoAction(this, tr("Annuler")); redo = ce_scene -> undoStack().createRedoAction(this, tr("Refaire")); undo -> setIcon(QET::Icons::EditUndo); @@ -251,7 +240,6 @@ void QETElementEditor::setupActions() { connect(edit_raise, SIGNAL(triggered()), ce_scene, SLOT(slot_raise())); connect(edit_lower, SIGNAL(triggered()), ce_scene, SLOT(slot_lower())); connect(edit_backward, SIGNAL(triggered()), ce_scene, SLOT(slot_sendBackward())); - connect(move, SIGNAL(triggered()), ce_scene, SLOT(slot_move())); connect(add_line, SIGNAL(triggered()), this, SLOT(addLine())); connect(add_rectangle, SIGNAL(triggered()), this, SLOT(addRect())); @@ -261,20 +249,7 @@ void QETElementEditor::setupActions() { connect(add_arc, SIGNAL(triggered()), this, SLOT(addArc())); connect(add_terminal, SIGNAL(triggered()), this, SLOT(addTerminal())); connect(add_textfield, SIGNAL(triggered()), this, SLOT(addTextField())); - - connect(move, SIGNAL(triggered()), this, SLOT(slot_setRubberBandToView())); - connect(add_line, SIGNAL(triggered()), this, SLOT(slot_setNoDragToView())); - connect(add_rectangle, SIGNAL(triggered()), this, SLOT(slot_setNoDragToView())); - connect(add_ellipse, SIGNAL(triggered()), this, SLOT(slot_setNoDragToView())); - connect(add_polygon, SIGNAL(triggered()), this, SLOT(slot_setNoDragToView())); - connect(add_text, SIGNAL(triggered()), this, SLOT(slot_setNoDragToView())); - connect(add_arc, SIGNAL(triggered()), this, SLOT(slot_setNoDragToView())); - connect(add_terminal, SIGNAL(triggered()), this, SLOT(slot_setNoDragToView())); - connect(add_textfield, SIGNAL(triggered()), this, SLOT(slot_setNoDragToView())); - connect(ce_scene, SIGNAL(needNormalMode()), this, SLOT(slot_setNormalMode())); - - move -> setCheckable(true); add_line -> setCheckable(true); add_rectangle -> setCheckable(true); add_ellipse -> setCheckable(true); @@ -285,7 +260,6 @@ void QETElementEditor::setupActions() { add_textfield -> setCheckable(true); parts = new QActionGroup(this); - parts -> addAction(move); parts -> addAction(add_line); parts -> addAction(add_rectangle); parts -> addAction(add_ellipse); @@ -295,11 +269,12 @@ void QETElementEditor::setupActions() { parts -> addAction(add_textfield); parts -> addAction(add_terminal); parts -> setExclusive(true); + + connect (ce_scene, SIGNAL(partsAdded()), this, SLOT(UncheckAddPrimitive())); parts_toolbar = new QToolBar(tr("Parties", "toolbar title"), this); parts_toolbar -> setObjectName("parts"); foreach (QAction *action, parts -> actions()) parts_toolbar -> addAction(action); - move -> setChecked(true); parts_toolbar -> setAllowedAreas(Qt::AllToolBarAreas); /* @@ -597,15 +572,6 @@ void QETElementEditor::slot_setNoDragToView() { ce_view -> setDragMode(QGraphicsView::NoDrag); } -/** - Passe l'editeur en mode normal -*/ -void QETElementEditor::slot_setNormalMode() { - if (!move -> isChecked()) move -> setChecked(true); - ce_view -> setDragMode(QGraphicsView::RubberBandDrag); - ce_scene -> slot_move(); -} - /** Met a jour la zone d'information et d'edition des primitives. Si plusieurs primitives sont selectionnees, seule leur quantite est @@ -993,6 +959,14 @@ void QETElementEditor::addTerminal() { ce_scene -> setEventInterface(new ESEventAddTerminal(ce_scene)); } +/** + * @brief QETElementEditor::UncheckAddPrimitive + * Uncheck all action related to primitive + */ +void QETElementEditor::UncheckAddPrimitive() { + foreach(QAction *action, parts->actions()) action -> setChecked(false); +} + /** Lance l'assistant de creation d'un nouvel element. */ diff --git a/sources/editor/qetelementeditor.h b/sources/editor/qetelementeditor.h index eef4c9105..9d629a846 100644 --- a/sources/editor/qetelementeditor.h +++ b/sources/editor/qetelementeditor.h @@ -81,7 +81,7 @@ class QETElementEditor : public QETMainWindow { QToolBar *parts_toolbar, *main_toolbar, *view_toolbar, *depth_toolbar, *element_toolbar; /// toolbars actions QActionGroup *parts; - QAction *move, *add_line, *add_rectangle, *add_ellipse, *add_polygon, *add_text; + QAction *add_line, *add_rectangle, *add_ellipse, *add_polygon, *add_text; QAction *add_arc, *add_terminal, *add_textfield; /// minimum window title QString min_title; @@ -136,6 +136,7 @@ class QETElementEditor : public QETMainWindow { void addText(); void addTextField(); void addTerminal(); + void UncheckAddPrimitive(); void slot_new(); void slot_open(); @@ -148,7 +149,6 @@ class QETElementEditor : public QETMainWindow { bool slot_saveAsFile(); void slot_setRubberBandToView(); void slot_setNoDragToView(); - void slot_setNormalMode(); void slot_updateInformations(); void slot_updateMenus(); void slot_updateTitle();