Forget qet.cpp and qet.h from previous comit.

Add new function for create QAction used for edit the depth of items.


git-svn-id: svn+ssh://svn.tuxfamily.org/svnroot/qet/qet/trunk@5402 bfdf4180-ca20-0410-9c96-a3a8aa849046
This commit is contained in:
blacksun
2018-06-20 18:35:06 +00:00
parent 8386002ef3
commit 24812944eb
8 changed files with 59 additions and 159 deletions

View File

@@ -343,11 +343,11 @@ void ChangeNamesCommand::redo() {
*/
ChangeZValueCommand::ChangeZValueCommand(
ElementScene *elmt,
ChangeZValueCommand::Option o,
QET::DepthOption o,
QUndoCommand *parent
) :
ElementEditionCommand(elmt, nullptr, parent),
option(o)
m_option(o)
{
// retrieve all primitives but terminals
QList<QGraphicsItem *> items_list = m_scene -> zItems(ElementScene::SortByZValue | ElementScene::SelectedOrNot);
@@ -356,16 +356,16 @@ ChangeZValueCommand::ChangeZValueCommand(
foreach(QGraphicsItem *qgi, items_list) undo_hash.insert(qgi, qgi -> zValue());
// choisit le nom en fonction du traitement
if (option == BringForward) {
if (m_option == QET::BringForward) {
setText(QObject::tr("amener au premier plan", "undo caption"));
applyBringForward(items_list);
} else if (option == Raise) {
} else if (m_option == QET::Raise) {
setText(QObject::tr("rapprocher", "undo caption"));
applyRaise(items_list);
} else if (option == Lower) {
} else if (m_option == QET::Lower) {
setText(QObject::tr("éloigner", "undo caption"));
applyLower(items_list);
} else if (option == SendBackward) {
} else if (m_option == QET::SendBackward) {
setText(QObject::tr("envoyer au fond", "undo caption"));
applySendBackward(items_list);
}

View File

@@ -197,17 +197,11 @@ class ChangeNamesCommand : public ElementEditionCommand {
This command changes the zValue of a set of primitives when editing an
electrical element.
*/
class ChangeZValueCommand : public ElementEditionCommand {
class ChangeZValueCommand : public ElementEditionCommand
{
// constructors, destructor
public:
/// List the various kind of changes for the zValue
enum Option {
BringForward, ///< Bring primitives to the foreground so they have the highest zValue
Raise, ///< Raise primitives one layer above their current one; zValues are incremented
Lower, ///< Send primitives one layer below their current one; zValues are decremented
SendBackward ///< Send primitives to the background so they have the lowest zValue
};
ChangeZValueCommand(ElementScene *, Option, QUndoCommand * = nullptr);
ChangeZValueCommand(ElementScene *, QET::DepthOption , QUndoCommand * = nullptr);
~ChangeZValueCommand() override;
private:
ChangeZValueCommand(const ChangeZValueCommand &);
@@ -230,7 +224,7 @@ class ChangeZValueCommand : public ElementEditionCommand {
/// associates impacted primitives with their new zValues
QHash<QGraphicsItem *, qreal> redo_hash;
/// kind of treatment to apply
Option option;
QET::DepthOption m_option;
};
/**

View File

@@ -759,38 +759,6 @@ void ElementScene::slot_editNames() {
}
}
/**
Amene les elements selectionnes au premier plan
*/
void ElementScene::slot_bringForward() {
undoStack().push(new ChangeZValueCommand(this, ChangeZValueCommand::BringForward));
emit(partsZValueChanged());
}
/**
Remonte les elements selectionnes d'un plan
*/
void ElementScene::slot_raise() {
undoStack().push(new ChangeZValueCommand(this, ChangeZValueCommand::Raise));
emit(partsZValueChanged());
}
/**
Descend les elements selectionnes d'un plan
*/
void ElementScene::slot_lower() {
undoStack().push(new ChangeZValueCommand(this, ChangeZValueCommand::Lower));
emit(partsZValueChanged());
}
/**
Envoie les elements selectionnes au fond
*/
void ElementScene::slot_sendBackward() {
undoStack().push(new ChangeZValueCommand(this, ChangeZValueCommand::SendBackward));
emit(partsZValueChanged());
}
/**
@return the list of primitives currently present on the scene.
*/

View File

@@ -152,10 +152,6 @@ class ElementScene : public QGraphicsScene
void slot_editNames();
void slot_editAuthorInformations();
void slot_editProperties();
void slot_bringForward();
void slot_raise();
void slot_lower();
void slot_sendBackward();
void managePrimitivesGroups();
void stackAction(ElementEditionCommand *);

View File

@@ -27,6 +27,7 @@
#include "recentfiles.h"
#include "qeticons.h"
#include "qetmessagebox.h"
#include "editorcommands.h"
// editeurs de primitives
#include "arceditor.h"
@@ -224,30 +225,17 @@ void QETElementEditor::setupActions() {
connect(edit_author, SIGNAL(triggered()), m_elmt_scene, SLOT(slot_editAuthorInformations()));
connect(m_edit_properties, SIGNAL(triggered()), m_elmt_scene, SLOT(slot_editProperties()));
//Action related to change depth of primitive
m_depth_action_group = QET::depthActionGroup(this);
/*
* Action related to change depth of primitive
*/
m_depth_ag = new QActionGroup(this);
QAction *edit_forward = new QAction(QET::Icons::BringForward, tr("Amener au premier plan"), m_depth_ag);
QAction *edit_raise = new QAction(QET::Icons::Raise, tr("Rapprocher"), m_depth_ag);
QAction *edit_lower = new QAction(QET::Icons::Lower, tr("Éloigner"), m_depth_ag);
QAction *edit_backward = new QAction(QET::Icons::SendBackward, tr("Envoyer au fond"), m_depth_ag);
edit_raise -> setShortcut(QKeySequence(tr("Ctrl+Shift+Up")));
edit_lower -> setShortcut(QKeySequence(tr("Ctrl+Shift+Down")));
edit_backward -> setShortcut(QKeySequence(tr("Ctrl+Shift+End")));
edit_forward -> setShortcut(QKeySequence(tr("Ctrl+Shift+Home")));
connect(edit_forward, SIGNAL(triggered()), m_elmt_scene, SLOT(slot_bringForward() ));
connect(edit_raise, SIGNAL(triggered()), m_elmt_scene, SLOT(slot_raise() ));
connect(edit_lower, SIGNAL(triggered()), m_elmt_scene, SLOT(slot_lower() ));
connect(edit_backward, SIGNAL(triggered()), m_elmt_scene, SLOT(slot_sendBackward() ));
connect(m_depth_action_group, &QActionGroup::triggered, [this](QAction *action) {
this->elementScene()->undoStack().push(new ChangeZValueCommand(this->elementScene(), action->data().value<QET::DepthOption>()));
emit(this->elementScene()->partsZValueChanged());
});
depth_toolbar = addToolBar(tr("Profondeur", "toolbar title"));
depth_toolbar -> setObjectName("depth_toolbar");
depth_toolbar -> addActions(m_depth_ag -> actions());
depth_toolbar -> addActions(m_depth_action_group -> actions());
addToolBar(Qt::TopToolBarArea, depth_toolbar);
@@ -402,7 +390,7 @@ void QETElementEditor::setupMenus() {
edit_menu -> addAction(edit_author);
edit_menu -> addAction(m_edit_properties);
edit_menu -> addSeparator();
edit_menu -> addActions(m_depth_ag -> actions());
edit_menu -> addActions(m_depth_action_group -> actions());
display_menu -> addActions(m_zoom_ag -> actions());
@@ -432,7 +420,7 @@ void QETElementEditor::contextMenu(QPoint p)
menu.addAction(paste_in_area);
menu.addMenu(paste_from_menu);
menu.addSeparator();
menu.addActions(m_depth_ag -> actions());
menu.addActions(m_depth_action_group -> actions());
//Remove from the context menu the actions which are disabled.
const QList<QAction *>actions = menu.actions();
@@ -467,7 +455,7 @@ void QETElementEditor::slot_updateMenus() {
cut -> setEnabled(selected_items);
copy -> setEnabled(selected_items);
edit_delete -> setEnabled(selected_items);
foreach (QAction *action, m_depth_ag -> actions())
foreach (QAction *action, m_depth_action_group -> actions())
action->setEnabled(selected_items);
// actions dependant du contenu du presse-papiers

View File

@@ -80,7 +80,7 @@ class QETElementEditor : public QETMainWindow {
/// toolbars
QToolBar *parts_toolbar, *main_toolbar, *view_toolbar, *depth_toolbar, *element_toolbar;
/// Action group
QActionGroup *parts, *m_zoom_ag, *m_depth_ag;
QActionGroup *parts, *m_zoom_ag, *m_depth_action_group;
/// minimum window title
QString min_title;
/// filename of the currently edited element

View File

@@ -16,8 +16,11 @@
along with QElectroTech. If not, see <http://www.gnu.org/licenses/>.
*/
#include "qet.h"
#include "qeticons.h"
#include <limits>
#include <QGraphicsSceneContextMenuEvent>
#include <QAction>
/**
Permet de convertir une chaine de caracteres ("n", "s", "e" ou "w")
@@ -493,13 +496,6 @@ qreal QET::round(qreal x, qreal epsilon) {
return(int(x * epsilon) / epsilon);
}
/**
Round the coordinates of \a p to the nearest multiple of \a epsilon.
*/
QPointF QET::roundPoint(const QPointF &p, qreal epsilon) {
return(QPointF(QET::round(p.x(), epsilon), QET::round(p.y(), epsilon)));
}
/**
@param angle Un angle quelconque
@return l'angle passe en parametre, mais ramene entre -360.0 + 360.0 degres
@@ -534,19 +530,6 @@ bool QET::compareCanonicalFilePaths(const QString &first, const QString &second)
return(first_canonical_path == second_canonical_path);
}
/**
@param icl an TitleBlockColumnLength object
@see TitleBlockColumnLength
@return a string describing the type of this TitleBlockColumnLength object
*/
QString QET::titleBlockColumnLengthToString(const TitleBlockColumnLength &icl) {
QString type_str;
if (icl== Absolute) type_str = "absolute";
else if (icl == RelativeToTotalLength) type_str = "relative to total";
else if (icl == RelativeToRemainingLength) type_str = "relative to remaining";
return(type_str);
}
/**
Export an XML document to an UTF-8 text file indented with 4 spaces, with LF
end of lines and no BOM.
@@ -582,62 +565,6 @@ bool QET::writeXmlFile(QDomDocument &xml_doc, const QString &filepath, QString *
return(true);
}
/**
@return the scene position where \a event occurred, provided it is
QGraphicsScene-related event; otherwise, this function returns a null
QPointF.
*/
QPointF QET::graphicsSceneEventPos(QEvent *event) {
QPointF event_scene_pos;
if (event -> type() < QEvent::GraphicsSceneContextMenu) return(event_scene_pos);
if (event -> type() > QEvent::GraphicsSceneWheel) return(event_scene_pos);
switch (event -> type()) {
case QEvent::GraphicsSceneContextMenu: {
QGraphicsSceneContextMenuEvent *qgs_event = static_cast<QGraphicsSceneContextMenuEvent *>(event);
event_scene_pos = qgs_event -> scenePos();
break;
}
case QEvent::GraphicsSceneDragEnter:
case QEvent::GraphicsSceneDragLeave:
case QEvent::GraphicsSceneDragMove:
case QEvent::GraphicsSceneDrop: {
QGraphicsSceneDragDropEvent *qgs_event = static_cast<QGraphicsSceneDragDropEvent *>(event);
event_scene_pos = qgs_event -> scenePos();
break;
}
case QEvent::GraphicsSceneHelp: {
QGraphicsSceneHelpEvent *qgs_event = static_cast<QGraphicsSceneHelpEvent *>(event);
event_scene_pos = qgs_event -> scenePos();
break;
}
case QEvent::GraphicsSceneHoverEnter:
case QEvent::GraphicsSceneHoverLeave:
case QEvent::GraphicsSceneHoverMove: {
QGraphicsSceneHoverEvent *qgs_event = static_cast<QGraphicsSceneHoverEvent *>(event);
event_scene_pos = qgs_event -> scenePos();
break;
}
case QEvent::GraphicsSceneMouseDoubleClick:
case QEvent::GraphicsSceneMouseMove:
case QEvent::GraphicsSceneMousePress:
case QEvent::GraphicsSceneMouseRelease: {
QGraphicsSceneMouseEvent *qgs_event = static_cast<QGraphicsSceneMouseEvent *>(event);
event_scene_pos = qgs_event -> scenePos();
break;
}
case QEvent::GraphicsSceneWheel: {
QGraphicsSceneWheelEvent *qgs_event = static_cast<QGraphicsSceneWheelEvent *>(event);
event_scene_pos = qgs_event -> scenePos();
break;
}
default:
break;
}
return(event_scene_pos);
}
/**
* @brief QET::eachStrIsEqual
* @param qsl list of string to compare
@@ -690,3 +617,31 @@ QET::QetCollection QET::qetCollectionFromString(const QString &str)
else
return QetCollection::Common;
}
/**
* @brief QET::depthActionGroup
* @param parent
* @return an action group which contain 4 actions (forward, raise, lower, backward)
* already made with icon, shortcut and data (see QET::DepthOption)
*/
QActionGroup *QET::depthActionGroup(QObject *parent)
{
QActionGroup *action_group = new QActionGroup(parent);
QAction *edit_forward = new QAction(QET::Icons::BringForward, QObject::tr("Amener au premier plan"), action_group);
QAction *edit_raise = new QAction(QET::Icons::Raise, QObject::tr("Rapprocher"), action_group);
QAction *edit_lower = new QAction(QET::Icons::Lower, QObject::tr("Éloigner"), action_group);
QAction *edit_backward = new QAction(QET::Icons::SendBackward, QObject::tr("Envoyer au fond"), action_group);
edit_raise ->setShortcut(QKeySequence(QObject::tr("Ctrl+Shift+Up")));
edit_lower ->setShortcut(QKeySequence(QObject::tr("Ctrl+Shift+Down")));
edit_backward->setShortcut(QKeySequence(QObject::tr("Ctrl+Shift+End")));
edit_forward ->setShortcut(QKeySequence(QObject::tr("Ctrl+Shift+Home")));
edit_forward ->setData(QET::BringForward);
edit_raise ->setData(QET::Raise);
edit_lower ->setData(QET::Lower);
edit_backward->setData(QET::SendBackward);
return action_group;
}

View File

@@ -19,6 +19,8 @@
#define _QET_H
#include <QtXml>
#include <QObject>
class QActionGroup;
/**
This file provides useful functions and enums that may be used from
anywhere else within the QElectroTech application.
@@ -155,7 +157,6 @@ namespace QET {
QList<QDomElement> findInDomElement(const QDomElement &, const QString &);
QList<QDomElement> findInDomElement(const QDomElement &, const QString &, const QString &);
QList<QChar> forbiddenCharacters();
QString forbiddenCharactersString(bool = false);
QString stringToFileName(const QString &);
QString escapeSpaces(const QString &);
QString unescapeSpaces(const QString &);
@@ -164,13 +165,11 @@ namespace QET {
QString diagramAreaToString(const QET::DiagramArea &);
QET::DiagramArea diagramAreaFromString(const QString &);
qreal round(qreal, qreal);
QPointF roundPoint(const QPointF &, qreal);
qreal correctAngle(const qreal &);
bool compareCanonicalFilePaths(const QString &, const QString &);
QString titleBlockColumnLengthToString(const TitleBlockColumnLength &);
bool writeXmlFile(QDomDocument &xml_doc, const QString &filepath, QString * error_message= nullptr);
QPointF graphicsSceneEventPos(QEvent *);
bool eachStrIsEqual (const QStringList &qsl);
QActionGroup *depthActionGroup(QObject *parent = nullptr);
}
Q_DECLARE_METATYPE(QET::DepthOption)