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( ChangeZValueCommand::ChangeZValueCommand(
ElementScene *elmt, ElementScene *elmt,
ChangeZValueCommand::Option o, QET::DepthOption o,
QUndoCommand *parent QUndoCommand *parent
) : ) :
ElementEditionCommand(elmt, nullptr, parent), ElementEditionCommand(elmt, nullptr, parent),
option(o) m_option(o)
{ {
// retrieve all primitives but terminals // retrieve all primitives but terminals
QList<QGraphicsItem *> items_list = m_scene -> zItems(ElementScene::SortByZValue | ElementScene::SelectedOrNot); 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()); foreach(QGraphicsItem *qgi, items_list) undo_hash.insert(qgi, qgi -> zValue());
// choisit le nom en fonction du traitement // choisit le nom en fonction du traitement
if (option == BringForward) { if (m_option == QET::BringForward) {
setText(QObject::tr("amener au premier plan", "undo caption")); setText(QObject::tr("amener au premier plan", "undo caption"));
applyBringForward(items_list); applyBringForward(items_list);
} else if (option == Raise) { } else if (m_option == QET::Raise) {
setText(QObject::tr("rapprocher", "undo caption")); setText(QObject::tr("rapprocher", "undo caption"));
applyRaise(items_list); applyRaise(items_list);
} else if (option == Lower) { } else if (m_option == QET::Lower) {
setText(QObject::tr("éloigner", "undo caption")); setText(QObject::tr("éloigner", "undo caption"));
applyLower(items_list); applyLower(items_list);
} else if (option == SendBackward) { } else if (m_option == QET::SendBackward) {
setText(QObject::tr("envoyer au fond", "undo caption")); setText(QObject::tr("envoyer au fond", "undo caption"));
applySendBackward(items_list); 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 This command changes the zValue of a set of primitives when editing an
electrical element. electrical element.
*/ */
class ChangeZValueCommand : public ElementEditionCommand { class ChangeZValueCommand : public ElementEditionCommand
// constructors, destructor {
// constructors, destructor
public: public:
/// List the various kind of changes for the zValue ChangeZValueCommand(ElementScene *, QET::DepthOption , QUndoCommand * = nullptr);
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() override; ~ChangeZValueCommand() override;
private: private:
ChangeZValueCommand(const ChangeZValueCommand &); ChangeZValueCommand(const ChangeZValueCommand &);
@@ -230,7 +224,7 @@ class ChangeZValueCommand : public ElementEditionCommand {
/// associates impacted primitives with their new zValues /// associates impacted primitives with their new zValues
QHash<QGraphicsItem *, qreal> redo_hash; QHash<QGraphicsItem *, qreal> redo_hash;
/// kind of treatment to apply /// 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. @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_editNames();
void slot_editAuthorInformations(); void slot_editAuthorInformations();
void slot_editProperties(); void slot_editProperties();
void slot_bringForward();
void slot_raise();
void slot_lower();
void slot_sendBackward();
void managePrimitivesGroups(); void managePrimitivesGroups();
void stackAction(ElementEditionCommand *); void stackAction(ElementEditionCommand *);

View File

@@ -27,6 +27,7 @@
#include "recentfiles.h" #include "recentfiles.h"
#include "qeticons.h" #include "qeticons.h"
#include "qetmessagebox.h" #include "qetmessagebox.h"
#include "editorcommands.h"
// editeurs de primitives // editeurs de primitives
#include "arceditor.h" #include "arceditor.h"
@@ -224,30 +225,17 @@ void QETElementEditor::setupActions() {
connect(edit_author, SIGNAL(triggered()), m_elmt_scene, SLOT(slot_editAuthorInformations())); connect(edit_author, SIGNAL(triggered()), m_elmt_scene, SLOT(slot_editAuthorInformations()));
connect(m_edit_properties, SIGNAL(triggered()), m_elmt_scene, SLOT(slot_editProperties())); 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
*/ connect(m_depth_action_group, &QActionGroup::triggered, [this](QAction *action) {
m_depth_ag = new QActionGroup(this); this->elementScene()->undoStack().push(new ChangeZValueCommand(this->elementScene(), action->data().value<QET::DepthOption>()));
emit(this->elementScene()->partsZValueChanged());
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() ));
depth_toolbar = addToolBar(tr("Profondeur", "toolbar title")); depth_toolbar = addToolBar(tr("Profondeur", "toolbar title"));
depth_toolbar -> setObjectName("depth_toolbar"); 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); addToolBar(Qt::TopToolBarArea, depth_toolbar);
@@ -402,7 +390,7 @@ void QETElementEditor::setupMenus() {
edit_menu -> addAction(edit_author); edit_menu -> addAction(edit_author);
edit_menu -> addAction(m_edit_properties); edit_menu -> addAction(m_edit_properties);
edit_menu -> addSeparator(); 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()); display_menu -> addActions(m_zoom_ag -> actions());
@@ -432,7 +420,7 @@ void QETElementEditor::contextMenu(QPoint p)
menu.addAction(paste_in_area); menu.addAction(paste_in_area);
menu.addMenu(paste_from_menu); menu.addMenu(paste_from_menu);
menu.addSeparator(); 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. //Remove from the context menu the actions which are disabled.
const QList<QAction *>actions = menu.actions(); const QList<QAction *>actions = menu.actions();
@@ -467,7 +455,7 @@ void QETElementEditor::slot_updateMenus() {
cut -> setEnabled(selected_items); cut -> setEnabled(selected_items);
copy -> setEnabled(selected_items); copy -> setEnabled(selected_items);
edit_delete -> 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); action->setEnabled(selected_items);
// actions dependant du contenu du presse-papiers // actions dependant du contenu du presse-papiers

View File

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

View File

@@ -16,8 +16,11 @@
along with QElectroTech. If not, see <http://www.gnu.org/licenses/>. along with QElectroTech. If not, see <http://www.gnu.org/licenses/>.
*/ */
#include "qet.h" #include "qet.h"
#include "qeticons.h"
#include <limits> #include <limits>
#include <QGraphicsSceneContextMenuEvent> #include <QGraphicsSceneContextMenuEvent>
#include <QAction>
/** /**
Permet de convertir une chaine de caracteres ("n", "s", "e" ou "w") 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); 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 @param angle Un angle quelconque
@return l'angle passe en parametre, mais ramene entre -360.0 + 360.0 degres @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); 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 Export an XML document to an UTF-8 text file indented with 4 spaces, with LF
end of lines and no BOM. end of lines and no BOM.
@@ -582,62 +565,6 @@ bool QET::writeXmlFile(QDomDocument &xml_doc, const QString &filepath, QString *
return(true); 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 * @brief QET::eachStrIsEqual
* @param qsl list of string to compare * @param qsl list of string to compare
@@ -690,3 +617,31 @@ QET::QetCollection QET::qetCollectionFromString(const QString &str)
else else
return QetCollection::Common; 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 #define _QET_H
#include <QtXml> #include <QtXml>
#include <QObject> #include <QObject>
class QActionGroup;
/** /**
This file provides useful functions and enums that may be used from This file provides useful functions and enums that may be used from
anywhere else within the QElectroTech application. 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 &);
QList<QDomElement> findInDomElement(const QDomElement &, const QString &, const QString &); QList<QDomElement> findInDomElement(const QDomElement &, const QString &, const QString &);
QList<QChar> forbiddenCharacters(); QList<QChar> forbiddenCharacters();
QString forbiddenCharactersString(bool = false);
QString stringToFileName(const QString &); QString stringToFileName(const QString &);
QString escapeSpaces(const QString &); QString escapeSpaces(const QString &);
QString unescapeSpaces(const QString &); QString unescapeSpaces(const QString &);
@@ -164,13 +165,11 @@ namespace QET {
QString diagramAreaToString(const QET::DiagramArea &); QString diagramAreaToString(const QET::DiagramArea &);
QET::DiagramArea diagramAreaFromString(const QString &); QET::DiagramArea diagramAreaFromString(const QString &);
qreal round(qreal, qreal); qreal round(qreal, qreal);
QPointF roundPoint(const QPointF &, qreal);
qreal correctAngle(const qreal &); qreal correctAngle(const qreal &);
bool compareCanonicalFilePaths(const QString &, const QString &); bool compareCanonicalFilePaths(const QString &, const QString &);
QString titleBlockColumnLengthToString(const TitleBlockColumnLength &);
bool writeXmlFile(QDomDocument &xml_doc, const QString &filepath, QString * error_message= nullptr); bool writeXmlFile(QDomDocument &xml_doc, const QString &filepath, QString * error_message= nullptr);
QPointF graphicsSceneEventPos(QEvent *);
bool eachStrIsEqual (const QStringList &qsl); bool eachStrIsEqual (const QStringList &qsl);
QActionGroup *depthActionGroup(QObject *parent = nullptr);
} }
Q_DECLARE_METATYPE(QET::DepthOption) Q_DECLARE_METATYPE(QET::DepthOption)