[qet] [4214] revamp and improve some code |
[ Thread Index |
Date Index
| More lists.tuxfamily.org/qet Archives
]
Revision: 4214
Author: blacksun
Date: 2015-09-19 15:27:06 +0200 (Sat, 19 Sep 2015)
Log Message:
-----------
revamp and improve some code
Modified Paths:
--------------
trunk/sources/diagramview.cpp
trunk/sources/diagramview.h
trunk/sources/dvevent/dveventaddimage.cpp
trunk/sources/dvevent/dveventaddimage.h
trunk/sources/dvevent/dveventaddshape.cpp
trunk/sources/dvevent/dveventaddshape.h
trunk/sources/dvevent/dveventaddtext.cpp
trunk/sources/dvevent/dveventaddtext.h
trunk/sources/dvevent/dveventinterface.cpp
trunk/sources/dvevent/dveventinterface.h
trunk/sources/qetdiagrameditor.cpp
trunk/sources/qetdiagrameditor.h
Modified: trunk/sources/diagramview.cpp
===================================================================
--- trunk/sources/diagramview.cpp 2015-09-17 19:22:51 UTC (rev 4213)
+++ trunk/sources/diagramview.cpp 2015-09-19 13:27:06 UTC (rev 4214)
@@ -477,22 +477,15 @@
Manage the events press click :
* click to add an independent text field
*/
-void DiagramView::mousePressEvent(QMouseEvent *e) {
-
- if (fresh_focus_in_) {
+void DiagramView::mousePressEvent(QMouseEvent *e)
+{
+ if (fresh_focus_in_)
+ {
switchToVisualisationModeIfNeeded(e);
fresh_focus_in_ = false;
}
- if (m_event_interface) {
- if (m_event_interface -> mousePressEvent(e)) {
- if (m_event_interface->isFinish()) {
- emit (itemAdded());
- delete m_event_interface; m_event_interface = nullptr;
- }
- return;
- }
- }
+ if (m_event_interface && m_event_interface->mousePressEvent(e)) return;
//Start drag view when hold the middle button
if (e->button() == Qt::MidButton)
@@ -508,18 +501,10 @@
* @brief DiagramView::mouseMoveEvent
* Manage the event move mouse
*/
-void DiagramView::mouseMoveEvent(QMouseEvent *e) {
+void DiagramView::mouseMoveEvent(QMouseEvent *e)
+{
+ if (m_event_interface && m_event_interface->mouseMoveEvent(e)) return;
- if (m_event_interface) {
- if (m_event_interface -> mouseMoveEvent(e)) {
- if (m_event_interface->isFinish()) {
- emit (itemAdded());
- delete m_event_interface; m_event_interface = nullptr;
- }
- return;
- }
- }
-
//Drag the view
if (e->buttons() == Qt::MidButton)
{
@@ -538,17 +523,10 @@
* @brief DiagramView::mouseReleaseEvent
* Manage event release click mouse
*/
-void DiagramView::mouseReleaseEvent(QMouseEvent *e) {
+void DiagramView::mouseReleaseEvent(QMouseEvent *e)
+{
+ if (m_event_interface && m_event_interface->mouseReleaseEvent(e)) return;
- if (m_event_interface) {
- if (m_event_interface -> mouseReleaseEvent(e)) {
- if (m_event_interface->isFinish()) {
- emit (itemAdded());
- delete m_event_interface; m_event_interface = nullptr;
- }
- return;
- }
- }
//Stop drag view
if (e -> button() == Qt::MidButton) viewport()->setCursor(Qt::ArrowCursor);
@@ -569,16 +547,9 @@
Manage wheel event of mouse
@param e QWheelEvent
*/
-void DiagramView::wheelEvent(QWheelEvent *e) {
- if (m_event_interface) {
- if (m_event_interface -> wheelEvent(e)) {
- if (m_event_interface->isFinish()) {
- emit (itemAdded());
- delete m_event_interface; m_event_interface = nullptr;
- }
- return;
- }
- }
+void DiagramView::wheelEvent(QWheelEvent *e)
+{
+ if (m_event_interface && m_event_interface->wheelEvent(e)) return;
//Zoom and scrolling
if ( gestures() ) {
@@ -633,15 +604,8 @@
mode if needed.
*/
void DiagramView::keyPressEvent(QKeyEvent *e) {
- if (m_event_interface) {
- if (m_event_interface -> keyPressEvent(e)) {
- if (m_event_interface->isFinish()) {
- emit (itemAdded());
- delete m_event_interface; m_event_interface = nullptr;
- }
- return;
- }
- }
+ if (m_event_interface && m_event_interface->keyPressEvent(e)) return;
+
switchToVisualisationModeIfNeeded(e);
QGraphicsView::keyPressEvent(e);
}
@@ -651,15 +615,8 @@
mode if needed.
*/
void DiagramView::keyReleaseEvent(QKeyEvent *e) {
- if (m_event_interface) {
- if (m_event_interface -> KeyReleaseEvent(e)) {
- if (m_event_interface->isFinish()) {
- emit (itemAdded());
- delete m_event_interface; m_event_interface = nullptr;
- }
- return;
- }
- }
+ if (m_event_interface && m_event_interface->KeyReleaseEvent(e)) return;
+
switchToSelectionModeIfNeeded(e);
QGraphicsView::keyReleaseEvent(e);
}
@@ -1083,10 +1040,14 @@
/**
* @brief DiagramView::setEventInterface
* Set an event interface to diagram view.
+ * If diagram view already have an event interface, he delete it before.
+ * Diagram view take ownership of event interface and delete it when event interface is finish
*/
-void DiagramView::setEventInterface(DVEventInterface *event_interface) {
+void DiagramView::setEventInterface(DVEventInterface *event_interface)
+{
if (m_event_interface) delete m_event_interface;
m_event_interface = event_interface;
+ connect(m_event_interface, &DVEventInterface::finish, this, [=](){delete this->m_event_interface; this->m_event_interface = nullptr;}, Qt::QueuedConnection);
}
/**
@@ -1140,18 +1101,10 @@
* @brief DiagramView::mouseDoubleClickEvent
* @param e
*/
-void DiagramView::mouseDoubleClickEvent(QMouseEvent *e) {
+void DiagramView::mouseDoubleClickEvent(QMouseEvent *e)
+{
+ if (m_event_interface && m_event_interface -> mouseDoubleClickEvent(e)) return;
- if (m_event_interface) {
- if (m_event_interface -> mouseDoubleClickEvent(e)) {
- if (m_event_interface->isFinish()) {
- emit (itemAdded());
- delete m_event_interface; m_event_interface = nullptr;
- }
- return;
- }
- }
-
BorderTitleBlock &bi = scene -> border_and_titleblock;
//Get the click pos on the diagram
Modified: trunk/sources/diagramview.h
===================================================================
--- trunk/sources/diagramview.h 2015-09-17 19:22:51 UTC (rev 4213)
+++ trunk/sources/diagramview.h 2015-09-19 13:27:06 UTC (rev 4214)
@@ -53,7 +53,6 @@
DVEventInterface *m_event_interface;
QMenu *context_menu;
QAction *paste_here;
- QAction *find_element_;
QPoint paste_here_pos;
QPointF rubber_band_origin;
bool fresh_focus_in_; ///< Indicate the focus was freshly gained
@@ -121,8 +120,6 @@
void editElementRequired(const ElementsLocation &);
/// Signal emitted when users want to edit and/or duplicate an existing title block template
void editTitleBlockTemplate(const QString &, bool);
- /// Signal emitted after an item is added
- void itemAdded();
/// Signal emmitted when diagram must be show
void showDiagram (Diagram *);
Modified: trunk/sources/dvevent/dveventaddimage.cpp
===================================================================
--- trunk/sources/dvevent/dveventaddimage.cpp 2015-09-17 19:22:51 UTC (rev 4213)
+++ trunk/sources/dvevent/dveventaddimage.cpp 2015-09-19 13:27:06 UTC (rev 4214)
@@ -53,14 +53,17 @@
* @param event : event of mouse pressed
* @return : true if this event is managed, otherwise false
*/
-bool DVEventAddImage::mousePressEvent(QMouseEvent *event) {
- if (m_image && event -> button() == Qt::LeftButton) {
+bool DVEventAddImage::mousePressEvent(QMouseEvent *event)
+{
+ if (m_image && event -> button() == Qt::LeftButton)
+ {
QPointF pos = m_dv -> mapToScene(event -> pos());
pos.rx() -= m_image->boundingRect().width()/2;
pos.ry() -= m_image->boundingRect().height()/2;
m_diagram -> undoStack().push (new AddItemCommand<DiagramImageItem *>(m_image, m_diagram, pos));
m_dv -> setContextMenuPolicy(Qt::DefaultContextMenu);
m_running = false;
+ emit finish();
return true;
}
Modified: trunk/sources/dvevent/dveventaddimage.h
===================================================================
--- trunk/sources/dvevent/dveventaddimage.h 2015-09-17 19:22:51 UTC (rev 4213)
+++ trunk/sources/dvevent/dveventaddimage.h 2015-09-19 13:27:06 UTC (rev 4214)
@@ -28,6 +28,8 @@
*/
class DVEventAddImage : public DVEventInterface
{
+ Q_OBJECT
+
public:
DVEventAddImage(DiagramView *dv);
virtual ~DVEventAddImage();
Modified: trunk/sources/dvevent/dveventaddshape.cpp
===================================================================
--- trunk/sources/dvevent/dveventaddshape.cpp 2015-09-17 19:22:51 UTC (rev 4213)
+++ trunk/sources/dvevent/dveventaddshape.cpp 2015-09-19 13:27:06 UTC (rev 4214)
@@ -161,6 +161,7 @@
//Else (no shape), we set to false the running status
//for indicate to the owner of this event that everything is done
m_running = false;
+ emit finish();
return true;
}
Modified: trunk/sources/dvevent/dveventaddshape.h
===================================================================
--- trunk/sources/dvevent/dveventaddshape.h 2015-09-17 19:22:51 UTC (rev 4213)
+++ trunk/sources/dvevent/dveventaddshape.h 2015-09-19 13:27:06 UTC (rev 4214)
@@ -25,6 +25,8 @@
class DVEventAddShape : public DVEventInterface
{
+ Q_OBJECT
+
public:
DVEventAddShape(DiagramView *dv, QetShapeItem::ShapeType shape_type);
virtual ~DVEventAddShape ();
Modified: trunk/sources/dvevent/dveventaddtext.cpp
===================================================================
--- trunk/sources/dvevent/dveventaddtext.cpp 2015-09-17 19:22:51 UTC (rev 4213)
+++ trunk/sources/dvevent/dveventaddtext.cpp 2015-09-19 13:27:06 UTC (rev 4214)
@@ -28,11 +28,15 @@
DVEventAddText::~DVEventAddText() {}
-bool DVEventAddText::mousePressEvent(QMouseEvent *event) {
- if (event->button() == Qt::LeftButton) {
- m_diagram -> undoStack().push(new AddItemCommand<IndependentTextItem *>(new IndependentTextItem("_"),
- m_diagram,
- m_dv -> mapToScene(event -> pos())));
+bool DVEventAddText::mousePressEvent(QMouseEvent *event)
+{
+ if (event->button() == Qt::LeftButton)
+ {
+ IndependentTextItem *text = new IndependentTextItem();
+ m_diagram -> undoStack().push(new AddItemCommand<IndependentTextItem *>(text, m_diagram, m_dv -> mapToScene(event -> pos())));
+ text->setTextInteractionFlags(Qt::TextEditorInteraction);
+ text->setFocus(Qt::MouseFocusReason);
+ emit finish();
return true;
}
return false;
Modified: trunk/sources/dvevent/dveventaddtext.h
===================================================================
--- trunk/sources/dvevent/dveventaddtext.h 2015-09-17 19:22:51 UTC (rev 4213)
+++ trunk/sources/dvevent/dveventaddtext.h 2015-09-19 13:27:06 UTC (rev 4214)
@@ -22,6 +22,8 @@
class DVEventAddText : public DVEventInterface
{
+ Q_OBJECT
+
public:
DVEventAddText(DiagramView *dv);
virtual ~DVEventAddText ();
Modified: trunk/sources/dvevent/dveventinterface.cpp
===================================================================
--- trunk/sources/dvevent/dveventinterface.cpp 2015-09-17 19:22:51 UTC (rev 4213)
+++ trunk/sources/dvevent/dveventinterface.cpp 2015-09-19 13:27:06 UTC (rev 4214)
@@ -20,6 +20,7 @@
#include <QMouseEvent>
DVEventInterface::DVEventInterface(DiagramView *dv) :
+ QObject(dv),
m_dv(dv),
m_diagram(dv->diagram()),
m_running(false),
@@ -57,14 +58,18 @@
/**
* @brief DVEventInterface::keyPressEvent
- * By default, press escape key abort the curent action
+ * By default, press escape key abort the curent action.
+ * isFinish return true, and emit finish
* @param event
* @return
*/
-bool DVEventInterface::keyPressEvent(QKeyEvent *event) {
- if (event->key() == Qt::Key_Escape) {
+bool DVEventInterface::keyPressEvent(QKeyEvent *event)
+{
+ if (event->key() == Qt::Key_Escape)
+ {
m_running = false;
m_abort = true;
+ emit finish();
return true;
}
return false;
Modified: trunk/sources/dvevent/dveventinterface.h
===================================================================
--- trunk/sources/dvevent/dveventinterface.h 2015-09-17 19:22:51 UTC (rev 4213)
+++ trunk/sources/dvevent/dveventinterface.h 2015-09-19 13:27:06 UTC (rev 4214)
@@ -18,6 +18,8 @@
#ifndef DVEVENTINTERFACE_H
#define DVEVENTINTERFACE_H
+#include <QObject>
+
class QMouseEvent;
class QWheelEvent;
class QKeyEvent;
@@ -33,8 +35,10 @@
* isRunning() return true if action is started but not finish. By default return false.
* isFinish() return true when the action is finish, or not started. By default return true.
*/
-class DVEventInterface
+class DVEventInterface : public QObject
{
+ Q_OBJECT
+
public:
DVEventInterface(DiagramView *dv);
virtual ~DVEventInterface () = 0;
@@ -48,6 +52,13 @@
virtual bool isRunning () const;
virtual bool isFinish () const;
+ signals:
+ /**
+ * @brief finish
+ * emited when the interface finish is work
+ */
+ void finish();
+
protected:
DiagramView *m_dv;
Diagram *m_diagram;
Modified: trunk/sources/qetdiagrameditor.cpp
===================================================================
--- trunk/sources/qetdiagrameditor.cpp 2015-09-17 19:22:51 UTC (rev 4213)
+++ trunk/sources/qetdiagrameditor.cpp 2015-09-19 13:27:06 UTC (rev 4214)
@@ -192,14 +192,38 @@
print = new QAction(QET::Icons::DocumentPrint, tr("Imprimer"), this);
quit_editor = new QAction(QET::Icons::ApplicationExit, tr("&Quitter"), this);
+ //Undo redo
undo = undo_group.createUndoAction(this, tr("Annuler"));
- undo -> setIcon(QET::Icons::EditUndo);
redo = undo_group.createRedoAction(this, tr("Refaire"));
+
+ undo -> setIcon(QET::Icons::EditUndo);
redo -> setIcon(QET::Icons::EditRedo);
- cut = new QAction(QET::Icons::EditCut, tr("Co&uper"), this);
- copy = new QAction(QET::Icons::EditCopy, tr("Cop&ier"), this);
- paste = new QAction(QET::Icons::EditPaste, tr("C&oller"), this);
+
+ undo -> setShortcut(QKeySequence::Undo);
+ redo -> setShortcut(QKeySequence::Redo);
+
+ undo -> setStatusTip(tr("Annule l'action précédente", "status bar tip"));
+ redo -> setStatusTip(tr("Restaure l'action annulée", "status bar tip"));
+
+ //cut copy past action
+ cut = new QAction(QET::Icons::EditCut, tr("Co&uper"), this);
+ copy = new QAction(QET::Icons::EditCopy, tr("Cop&ier"), this);
+ paste = new QAction(QET::Icons::EditPaste, tr("C&oller"), this);
+
+ cut -> setShortcut(QKeySequence::Cut);
+ copy -> setShortcut(QKeySequence::Copy);
+ paste -> setShortcut(QKeySequence::Paste);
+
+ cut -> setStatusTip(tr("Transfère les éléments sélectionnés dans le presse-papier", "status bar tip"));
+ copy -> setStatusTip(tr("Copie les éléments sélectionnés dans le presse-papier", "status bar tip"));
+ paste -> setStatusTip(tr("Place les éléments du presse-papier sur le folio", "status bar tip"));
+
+ connect(cut, SIGNAL(triggered()), this, SLOT(slot_cut()));
+ connect(copy, SIGNAL(triggered()), this, SLOT(slot_copy()));
+ connect(paste, SIGNAL(triggered()), this, SLOT(slot_paste()));
+
conductor_reset = new QAction(QET::Icons::ConductorSettings, tr("Réinitialiser les conducteurs"), this);
+ conductor_reset -> setShortcut( QKeySequence( tr("Ctrl+K") ) );
m_auto_conductor = new QAction (QET::Icons::Autoconnect, tr("Création automatique de conducteur(s)","Tool tip of auto conductor"), this);
m_auto_conductor -> setStatusTip (tr("Utiliser la création automatique de conducteur(s) quand cela est possible", "Status tip of auto conductor"));
@@ -216,6 +240,7 @@
});
infos_diagram = new QAction(QET::Icons::DialogInformation, tr("Propriétés du folio"), this);
+ infos_diagram -> setShortcut( QKeySequence( tr("Ctrl+L") ) );
prj_edit_prop = new QAction(QET::Icons::DialogInformation, tr("Propriétés du projet"), this);
prj_add_diagram = new QAction(QET::Icons::DiagramAdd, tr("Ajouter un folio"), this);
prj_del_diagram = new QAction(QET::Icons::DiagramDelete, tr("Supprimer le folio"), this);
@@ -231,7 +256,7 @@
next_window = new QAction( tr("Projet suivant"), this);
prev_window = new QAction( tr("Projet précédent"), this);
- ///Files action///
+ //Files action
QAction *new_file = m_file_actions_group.addAction( QET::Icons::ProjectNew, tr("&Nouveau") );
QAction *open_file = m_file_actions_group.addAction( QET::Icons::DocumentOpen, tr("&Ouvrir") );
save_file = m_file_actions_group.addAction( QET::Icons::DocumentSave, tr("&Enregistrer") );
@@ -255,75 +280,74 @@
connect(open_file, SIGNAL( triggered() ), this, SLOT( openProject() ) );
connect(close_file, SIGNAL( triggered() ), this, SLOT( closeCurrentProject() ) );
- ///Row Column action///
+ //Row and Column actions
QAction *add_column = m_row_column_actions_group.addAction( QET::Icons::EditTableInsertColumnRight, tr("Ajouter une colonne") );
QAction *remove_column = m_row_column_actions_group.addAction( QET::Icons::EditTableDeleteColumn, tr("Enlever une colonne") );
QAction *add_row = m_row_column_actions_group.addAction( QET::Icons::EditTableInsertRowUnder, tr("Ajouter une ligne") );
QAction *remove_row = m_row_column_actions_group.addAction( QET::Icons::EditTableDeleteRow, tr("Enlever une ligne") );
- add_column -> setStatusTip( tr("Ajoute une colonne au folio", "status bar tip") );
- remove_column -> setStatusTip( tr("Enlève une colonne au folio", "status bar tip") );
- add_row -> setStatusTip( tr("Agrandit le folio en hauteur", "status bar tip") );
- remove_row -> setStatusTip( tr("Rétrécit le folio en hauteur", "status bar tip") );
+ add_column -> setStatusTip( tr("Ajoute une colonne au folio", "status bar tip"));
+ remove_column -> setStatusTip( tr("Enlève une colonne au folio", "status bar tip"));
+ add_row -> setStatusTip( tr("Agrandit le folio en hauteur", "status bar tip"));
+ remove_row -> setStatusTip( tr("Rétrécit le folio en hauteur", "status bar tip"));
- connect(add_column, SIGNAL( triggered() ), this, SLOT( slot_addColumn() ) );
- connect(remove_column, SIGNAL( triggered() ), this, SLOT( slot_removeColumn() ) );
- connect(add_row, SIGNAL( triggered() ), this, SLOT( slot_addRow() ) );
- connect(remove_row, SIGNAL( triggered() ), this, SLOT( slot_removeRow() ) );
+ add_column ->setData("add_column");
+ remove_column->setData("remove_column");
+ add_row ->setData("add_row");
+ remove_row ->setData("remove_row");
- ///Selections Actions (related to a selected item)///
+ connect(&m_row_column_actions_group, &QActionGroup::triggered, this, &QETDiagramEditor::rowColumnGroupTriggered);
+
+ //Selections Actions (related to a selected item)
delete_selection = m_selection_actions_group.addAction( QET::Icons::EditDelete, tr("Supprimer") );
rotate_selection = m_selection_actions_group.addAction( QET::Icons::ObjectRotateRight, tr("Pivoter") );
rotate_texts = m_selection_actions_group.addAction( QET::Icons::ObjectRotateRight, tr("Orienter les textes") );
find_element = m_selection_actions_group.addAction( tr("Retrouver dans le panel") );
edit_selection = m_selection_actions_group.addAction( QET::Icons::ElementEdit, tr("Éditer l'item sélectionné") );
-#ifndef Q_OS_MAC
- delete_selection -> setShortcut( QKeySequence( Qt::Key_Delete) );
-#else
- delete_selection -> setShortcut( QKeySequence( tr("Backspace") ) );
-#endif
-
+ delete_selection -> setShortcut( QKeySequence::Delete);
rotate_selection -> setShortcut( QKeySequence( tr("Space") ) );
rotate_texts -> setShortcut( QKeySequence( tr("Ctrl+Space") ) );
- conductor_reset -> setShortcut( QKeySequence( tr("Ctrl+K") ) );
- infos_diagram -> setShortcut( QKeySequence( tr("Ctrl+L") ) );
edit_selection -> setShortcut( QKeySequence( tr("Ctrl+E") ) );
- delete_selection -> setStatusTip( tr("Enlève les éléments sélectionnés du folio", "status bar tip") );
- rotate_selection -> setStatusTip( tr("Pivote les éléments et textes sélectionnés", "status bar tip") );
- rotate_texts -> setStatusTip( tr("Pivote les textes sélectionnés à un angle précis", "status bar tip") );
- find_element -> setStatusTip( tr("Retrouve l'élément sélectionné dans le panel", "status bar tip") );
+ delete_selection -> setStatusTip( tr("Enlève les éléments sélectionnés du folio", "status bar tip"));
+ rotate_selection -> setStatusTip( tr("Pivote les éléments et textes sélectionnés", "status bar tip"));
+ rotate_texts -> setStatusTip( tr("Pivote les textes sélectionnés à un angle précis", "status bar tip"));
+ find_element -> setStatusTip( tr("Retrouve l'élément sélectionné dans le panel", "status bar tip"));
- connect(delete_selection, SIGNAL( triggered() ), this, SLOT( slot_delete() ) );
- connect(rotate_selection, SIGNAL( triggered() ), this, SLOT( slot_rotate() ) );
- connect(rotate_texts, SIGNAL( triggered() ), this, SLOT( slot_rotateTexts() ) );
- connect(find_element, SIGNAL( triggered() ), this, SLOT( findSelectedElementInPanel() ) );
- connect(edit_selection, SIGNAL( triggered() ), this, SLOT( slot_editSelection() ) );
+ delete_selection ->setData("delete_selection");
+ rotate_selection ->setData("rotate_selection");
+ rotate_texts ->setData("rotate_selected_text");
+ find_element ->setData("find_selected_element");
+ edit_selection ->setData("edit_selected_element");
- ///Select Action///
+ connect(&m_selection_actions_group, &QActionGroup::triggered, this, &QETDiagramEditor::selectionGroupTriggered);
+
+ //Select Action
QAction *select_all = m_select_actions_group.addAction( QET::Icons::EditSelectAll, tr("Tout sélectionner") );
QAction *select_nothing = m_select_actions_group.addAction( tr("Désélectionner tout") );
QAction *select_invert = m_select_actions_group.addAction( tr("Inverser la sélection") );
- select_all -> setShortcut( QKeySequence::SelectAll );
- select_nothing -> setShortcut( QKeySequence( tr("Ctrl+Shift+A") ) );
- select_invert -> setShortcut( QKeySequence( tr("Ctrl+I") ) );
+ select_all -> setShortcut(QKeySequence::SelectAll);
+ select_nothing -> setShortcut(QKeySequence::Deselect);
+ select_invert -> setShortcut(QKeySequence( tr("Ctrl+I")));
select_all -> setStatusTip( tr("Sélectionne tous les éléments du folio", "status bar tip") );
select_nothing -> setStatusTip( tr("Désélectionne tous les éléments du folio", "status bar tip") );
select_invert -> setStatusTip( tr("Désélectionne les éléments sélectionnés et sélectionne les éléments non sélectionnés", "status bar tip") );
- connect(select_all, SIGNAL( triggered() ), this, SLOT( slot_selectAll() ) );
- connect(select_nothing, SIGNAL( triggered() ), this, SLOT( slot_selectNothing() ) );
- connect(select_invert, SIGNAL( triggered() ), this, SLOT( slot_selectInvert() ) );
+ select_all -> setData("select_all");
+ select_nothing -> setData("deselect");
+ select_invert -> setData("invert_selection");
- ///Zoom actions///
- QAction *zoom_in = m_zoom_actions_group.addAction( QET::Icons::ZoomIn, tr("Zoom avant") );
- QAction *zoom_out = m_zoom_actions_group.addAction( QET::Icons::ZoomOut, tr("Zoom arrière") );
- QAction *zoom_content = m_zoom_actions_group.addAction( QET::Icons::ZoomDraw, tr("Zoom sur le contenu") );
- QAction *zoom_fit = m_zoom_actions_group.addAction( QET::Icons::ZoomFitBest, tr("Zoom adapté") );
- QAction *zoom_reset = m_zoom_actions_group.addAction( QET::Icons::ZoomOriginal, tr("Pas de zoom") );
+ connect(&m_select_actions_group, &QActionGroup::triggered, this, &QETDiagramEditor::selectGroupTriggered);
+
+ //Zoom actions
+ QAction *zoom_in = m_zoom_actions_group.addAction( QET::Icons::ZoomIn, tr("Zoom avant"));
+ QAction *zoom_out = m_zoom_actions_group.addAction( QET::Icons::ZoomOut, tr("Zoom arrière"));
+ QAction *zoom_content = m_zoom_actions_group.addAction( QET::Icons::ZoomDraw, tr("Zoom sur le contenu"));
+ QAction *zoom_fit = m_zoom_actions_group.addAction( QET::Icons::ZoomFitBest, tr("Zoom adapté"));
+ QAction *zoom_reset = m_zoom_actions_group.addAction( QET::Icons::ZoomOriginal, tr("Pas de zoom"));
m_zoom_action_toolBar << zoom_content << zoom_fit << zoom_reset;
zoom_in -> setShortcut( QKeySequence::ZoomIn );
@@ -338,41 +362,38 @@
zoom_fit -> setStatusTip(tr("Adapte le zoom exactement sur le cadre du folio", "status bar tip"));
zoom_reset -> setStatusTip(tr("Restaure le zoom par défaut", "status bar tip"));
- connect( zoom_in, SIGNAL( triggered() ), this, SLOT( slot_zoomIn() ) );
- connect( zoom_out, SIGNAL( triggered() ), this, SLOT( slot_zoomOut() ) );
- connect( zoom_content, SIGNAL( triggered() ), this, SLOT( slot_zoomContent() ) );
- connect( zoom_fit, SIGNAL( triggered() ), this, SLOT( slot_zoomFit() ) );
- connect( zoom_reset, SIGNAL( triggered() ), this, SLOT( slot_zoomReset() ) );
+ zoom_in ->setData("zoom_in");
+ zoom_out ->setData("zoom_out");
+ zoom_content->setData("zoom_content");
+ zoom_fit ->setData("zoom_fit");
+ zoom_reset ->setData("zoom_reset");
- ///Adding action (add text, image, shape...)///
- m_add_item_actions_group.setExclusive(true);
+ connect(&m_zoom_actions_group, &QActionGroup::triggered, this, &QETDiagramEditor::zoomGroupTriggered);
- QAction *add_text = m_add_item_actions_group.addAction( QET::Icons::PartTextField, tr("Ajouter un champ de texte") );
- QAction *add_image = m_add_item_actions_group.addAction( QET::Icons::adding_image, tr("Ajouter une image") );
- QAction *add_line = m_add_item_actions_group.addAction( QET::Icons::PartLine, tr("Ajouter une ligne droite") );
- QAction *add_rectangle = m_add_item_actions_group.addAction( QET::Icons::PartRectangle, tr("Ajouter un rectangle") );
- QAction *add_ellipse = m_add_item_actions_group.addAction( QET::Icons::PartEllipse, tr("Ajouter une ellipse") );
- QAction *add_polyline = m_add_item_actions_group.addAction( QET::Icons::PartPolygon, tr("Ajouter une polyligne") );
+ //Adding action (add text, image, shape...)
+ QAction *add_text = m_add_item_actions_group.addAction(QET::Icons::PartTextField, tr("Ajouter un champ de texte"));
+ QAction *add_image = m_add_item_actions_group.addAction(QET::Icons::adding_image, tr("Ajouter une image"));
+ QAction *add_line = m_add_item_actions_group.addAction(QET::Icons::PartLine, tr("Ajouter une ligne"));
+ QAction *add_rectangle = m_add_item_actions_group.addAction(QET::Icons::PartRectangle, tr("Ajouter un rectangle"));
+ QAction *add_ellipse = m_add_item_actions_group.addAction(QET::Icons::PartEllipse, tr("Ajouter une ellipse"));
+ QAction *add_polyline = m_add_item_actions_group.addAction(QET::Icons::PartPolygon, tr("Ajouter une polyligne"));
- connect( add_text, SIGNAL( triggered() ), this, SLOT( slot_addText() ) );
- connect( add_image, SIGNAL( triggered() ), this, SLOT( slot_addImage() ) );
- connect( add_line, SIGNAL( triggered() ), this, SLOT( slot_addLine() ) );
- connect( add_rectangle, SIGNAL( triggered() ), this, SLOT( slot_addRectangle() ) );
- connect( add_ellipse, SIGNAL( triggered() ), this, SLOT( slot_addEllipse() ) );
- connect( add_polyline, SIGNAL( triggered() ), this, SLOT( slot_addPolyline() ) );
+ add_text ->setData("text");
+ add_image ->setData("image");
+ add_line ->setData("line");
+ add_rectangle->setData("rectangle");
+ add_ellipse ->setData("ellipse");
+ add_polyline ->setData("polyline");
- foreach(QAction *action, m_add_item_actions_group.actions()) action->setCheckable(true);
+ foreach (QAction *action, m_add_item_actions_group.actions()) action->setCheckable(true);
+ connect(&m_add_item_actions_group, &QActionGroup::triggered, this, &QETDiagramEditor::addItemGroupTriggered);
- ///Keyboard shortcut
+ //Keyboard shortcut
export_diagram -> setShortcut(QKeySequence(tr("Ctrl+Shift+X")));
print -> setShortcut(QKeySequence(QKeySequence::Print));
quit_editor -> setShortcut(QKeySequence(tr("Ctrl+Q")));
- undo -> setShortcut(QKeySequence::Undo);
- redo -> setShortcut(QKeySequence::Redo);
- cut -> setShortcut(QKeySequence::Cut);
- copy -> setShortcut(QKeySequence::Copy);
- paste -> setShortcut(QKeySequence::Paste);
+
prj_add_diagram -> setShortcut(QKeySequence(tr("Ctrl+T")));
next_window -> setShortcut(QKeySequence::NextChild);
@@ -382,11 +403,6 @@
export_diagram -> setStatusTip(tr("Exporte le folio courant dans un autre format", "status bar tip"));
print -> setStatusTip(tr("Imprime un ou plusieurs folios du projet courant", "status bar tip"));
quit_editor -> setStatusTip(tr("Ferme l'application QElectroTech", "status bar tip"));
- undo -> setStatusTip(tr("Annule l'action précédente", "status bar tip"));
- redo -> setStatusTip(tr("Restaure l'action annulée", "status bar tip"));
- cut -> setStatusTip(tr("Transfère les éléments sélectionnés dans le presse-papier", "status bar tip"));
- copy -> setStatusTip(tr("Copie les éléments sélectionnés dans le presse-papier", "status bar tip"));
- paste -> setStatusTip(tr("Place les éléments du presse-papier sur le folio", "status bar tip"));
conductor_reset -> setStatusTip(tr("Recalcule les chemins des conducteurs sans tenir compte des modifications", "status bar tip"));
infos_diagram -> setStatusTip(tr("Édite les propriétés du folio (dimensions, informations du cartouche, propriétés des conducteurs...)", "status bar tip"));
@@ -433,9 +449,6 @@
connect(prj_nomenclature, SIGNAL(triggered()), this, SLOT(nomenclatureProject()) );
connect(print, SIGNAL(triggered()), this, SLOT(printDialog()) );
connect(export_diagram, SIGNAL(triggered()), this, SLOT(exportDialog()) );
- connect(cut, SIGNAL(triggered()), this, SLOT(slot_cut()) );
- connect(copy, SIGNAL(triggered()), this, SLOT(slot_copy()) );
- connect(paste, SIGNAL(triggered()), this, SLOT(slot_paste()) );
connect(tile_window, SIGNAL(triggered()), &workspace, SLOT(tileSubWindows()) );
connect(cascade_window, SIGNAL(triggered()), &workspace, SLOT(cascadeSubWindows()) );
connect(next_window, SIGNAL(triggered()), &workspace, SLOT(activateNextSubWindow()) );
@@ -1077,81 +1090,129 @@
if(currentDiagram()) currentDiagram() -> paste();
}
-/**
- Effectue l'action "zoom avant" sur le diagram en cours
-*/
-void QETDiagramEditor::slot_zoomIn() {
- if(currentDiagram()) currentDiagram() -> zoomIn();
-}
+void QETDiagramEditor::zoomGroupTriggered(QAction *action)
+{
+ QString value = action->data().toString();
+ DiagramView *dv = currentDiagram();
-/**
- Effectue l'action "zoom arriere" sur le schema en cours
-*/
-void QETDiagramEditor::slot_zoomOut() {
- if(currentDiagram()) currentDiagram() -> zoomOut();
-}
+ if (!dv || value.isEmpty()) return;
-/**
- Effectue l'action "zoom arriere" sur le diagram en cours
-*/
-void QETDiagramEditor::slot_zoomFit() {
- if(currentDiagram()) currentDiagram() -> zoomFit();
+ if (value == "zoom_in")
+ dv->zoomIn();
+ else if (value == "zoom_out")
+ dv->zoomOut();
+ else if (value == "zoom_content")
+ dv->zoomContent();
+ else if (value == "zoom_fit")
+ dv->zoomFit();
+ else if (value == "zoom_reset")
+ dv->zoomReset();
}
/**
- Call the "zoom content" action for the current diagram.
-*/
-void QETDiagramEditor::slot_zoomContent() {
- if(currentDiagram()) currentDiagram() -> zoomContent();
-}
+ * @brief QETDiagramEditor::selectGroupTriggered
+ * This slot is called when selection need to change.
+ * @param action : Action that describes what to do.
+ */
+void QETDiagramEditor::selectGroupTriggered(QAction *action)
+{
+ QString value = action->data().toString();
+ DiagramView *dv = currentDiagram();
-/**
- Effectue l'action "zoom par defaut" sur le schema en cours
-*/
-void QETDiagramEditor::slot_zoomReset() {
- if(currentDiagram()) currentDiagram() -> zoomReset();
-}
+ if (!dv || value.isEmpty()) return;
-/**
- Effectue l'action "selectionner tout" sur le schema en cours
-*/
-void QETDiagramEditor::slot_selectAll() {
- if(currentDiagram()) currentDiagram() -> selectAll();
+ if (value == "select_all")
+ dv->selectAll();
+ else if (value == "deselect")
+ dv->selectNothing();
+ else if (value == "invert_selection")
+ dv->selectInvert();
}
/**
- Effectue l'action "deselectionenr tout" sur le schema en cours
-*/
-void QETDiagramEditor::slot_selectNothing() {
- if(currentDiagram()) currentDiagram() -> selectNothing();
-}
+ * @brief QETDiagramEditor::addItemGroupTriggered
+ * This slot is called when an item must be added to the curent diagram,
+ * this slot use the DVEventInterface to add item
+ * @param action : Action that describe the item to add.
+ */
+void QETDiagramEditor::addItemGroupTriggered(QAction *action)
+{
+ QString value = action->data().toString();
+ DiagramView *dv = currentDiagram();
-/**
- Effectue l'action "inverser la selection" sur le schema en cours
-*/
-void QETDiagramEditor::slot_selectInvert() {
- if(currentDiagram()) currentDiagram() -> selectInvert();
-}
+ if (!dv || value.isEmpty()) return;
-/**
- Effectue l'action "supprimer" sur le schema en cours
-*/
-void QETDiagramEditor::slot_delete() {
- if(currentDiagram()) currentDiagram() -> deleteSelection();
+ DVEventInterface *dvevent = nullptr;
+
+ if (value == "text")
+ dvevent = new DVEventAddText(dv);
+ else if (value == "image")
+ {
+ DVEventAddImage *event = new DVEventAddImage(dv);
+ if (event -> isNull())
+ {
+ delete event;
+ action->setChecked(false);
+ return;
+ }
+ else
+ dvevent = event;
+ }
+ else if (value == "line")
+ dvevent = new DVEventAddShape(dv, QetShapeItem::Line);
+ else if (value == "rectangle")
+ dvevent = new DVEventAddShape(dv, QetShapeItem::Rectangle);
+ else if (value == "ellipse")
+ dvevent = new DVEventAddShape(dv, QetShapeItem::Ellipse);
+ else if (value == "polyline")
+ dvevent = new DVEventAddShape(dv, QetShapeItem::Polygon);
+
+ if (dvevent)
+ {
+ dv->setEventInterface(dvevent);
+ connect(dvevent, &DVEventInterface::finish, [action](){action->setChecked(false);});
+ }
}
/**
- Effectue l'action "pivoter" sur le schema en cours
-*/
-void QETDiagramEditor::slot_rotate() {
- if(currentDiagram()) currentDiagram() -> rotateSelection();
+ * @brief QETDiagramEditor::selectionGroupTriggered
+ * This slot is called when an action should be made on the current selection
+ * @param action : Action that describe the action to do.
+ */
+void QETDiagramEditor::selectionGroupTriggered(QAction *action)
+{
+ QString value = action->data().toString();
+ DiagramView *dv = currentDiagram();
+
+ if (!dv || value.isEmpty()) return;
+
+ if (value == "delete_selection")
+ dv->deleteSelection();
+ else if (value == "rotate_selection")
+ dv->rotateSelection();
+ else if (value == "rotate_selected_text")
+ dv->rotateTexts();
+ else if (value == "find_selected_element" && currentCustomElement())
+ findElementInPanel(currentCustomElement()->location());
+ else if (value == "edit_selected_element")
+ dv->editSelection();
}
-/**
- Effectue l'action "Orienter les textes selectionnes" sur le schema en cours
-*/
-void QETDiagramEditor::slot_rotateTexts() {
- if (currentDiagram()) currentDiagram() -> rotateTexts();
+void QETDiagramEditor::rowColumnGroupTriggered(QAction *action)
+{
+ QString value = action->data().toString();
+ DiagramView *dv = currentDiagram();
+
+ if (!dv || value.isEmpty()) return;
+
+ if (value == "add_column")
+ dv->addColumn();
+ else if (value == "remove_column")
+ dv->removeColumn();
+ else if (value == "add_row")
+ dv->addRow();
+ else if (value == "remove_row")
+ dv->removeRow();
}
/**
@@ -1514,42 +1575,6 @@
}
/**
- Ajoute une colonne au schema en cours
-*/
-void QETDiagramEditor::slot_addColumn() {
- if (DiagramView *dv = currentDiagram()) {
- dv -> addColumn();
- }
-}
-
-/**
- Enleve une colonne au schema en cours
-*/
-void QETDiagramEditor::slot_removeColumn() {
- if (DiagramView *dv = currentDiagram()) {
- dv -> removeColumn();
- }
-}
-
-/**
- Allonge le schema en cours en hauteur
-*/
-void QETDiagramEditor::slot_addRow() {
- if (DiagramView *dv = currentDiagram()) {
- dv -> addRow();
- }
-}
-
-/**
- Retrecit le schema en cours en hauteur
-*/
-void QETDiagramEditor::slot_removeRow() {
- if (DiagramView *dv = currentDiagram()) {
- dv -> removeRow();
- }
-}
-
-/**
Edite les proprietes des objets selectionnes
*/
void QETDiagramEditor::editSelectionProperties() {
@@ -1579,76 +1604,6 @@
}
/**
- * @brief QETDiagramEditor::slot_addText
- * add text to curent diagram
- */
-void QETDiagramEditor::slot_addText() {
- if (DiagramView *dv = currentDiagram())
- dv -> setEventInterface(new DVEventAddText(dv));
-}
-
-/**
- * @brief QETDiagramEditor::slot_addImage
- * add image to curent diagram
- */
-void QETDiagramEditor::slot_addImage() {
- if (DiagramView *dv = currentDiagram()) {
- DVEventAddImage *event = new DVEventAddImage(dv);
- if (event -> isNull()) {
- delete event;
- m_add_item_actions_group.checkedAction()->setChecked(false);
- } else {
- dv -> setEventInterface(event);
- }
- }
-}
-
-/**
- * @brief QETDiagramEditor::slot_addLine
- * add line to curent diagram
- */
-void QETDiagramEditor::slot_addLine() {
- if (DiagramView *dv = currentDiagram())
- dv -> setEventInterface(new DVEventAddShape(dv, QetShapeItem::Line));
-}
-
-/**
- * @brief QETDiagramEditor::slot_addRectangle
- * add rectangle to curent diagram
- */
-void QETDiagramEditor::slot_addRectangle() {
- if (DiagramView *dv = currentDiagram()) dv -> setEventInterface(new DVEventAddShape(dv, QetShapeItem::Rectangle));
-}
-
-/**
- * @brief QETDiagramEditor::slot_addEllipse
- * add ellipse to curent diagram
- */
-void QETDiagramEditor::slot_addEllipse() {
- if (DiagramView *dv = currentDiagram()) dv -> setEventInterface(new DVEventAddShape(dv, QetShapeItem::Ellipse));
-}
-
-/**
- * @brief QETDiagramEditor::slot_addPolyline
- * add polyline to current diagram
- */
-void QETDiagramEditor::slot_addPolyline() {
- if (DiagramView *dv = currentDiagram()) dv -> setEventInterface(new DVEventAddShape(dv, QetShapeItem::Polygon));
-}
-
-/**
- * @brief QETDiagramEditor::slot_editSelection
- * edit the selected item if he can be edited and if only one item is selected
- */
-void QETDiagramEditor::slot_editSelection() {
- if (DiagramView *dv = currentDiagram()) {
- DiagramContent dc = dv -> diagram() -> selectedContent();
- if (dc.count(DiagramContent::SelectedOnly | DiagramContent::All) != 1) return;
- dv->editSelection();
- }
-}
-
-/**
Affiche les projets dans des fenetres.
*/
void QETDiagramEditor::setWindowedMode() {
@@ -1992,7 +1947,6 @@
{
connect(dv, SIGNAL(selectionChanged()), this, SLOT(selectionChanged()));
connect(dv, SIGNAL(modeChanged()), this, SLOT(slot_updateModeActions()));
- connect(dv, SIGNAL(itemAdded()), this, SLOT(addItemFinish()));
}
/**
@@ -2036,16 +1990,6 @@
}
/**
- Search the panel for the definition for the selected element in the current
- diagram view.
-*/
-void QETDiagramEditor::findSelectedElementInPanel() {
- if (CustomElement *selected_element = currentCustomElement()) {
- findElementInPanel(selected_element -> location());
- }
-}
-
-/**
Lance l'editeur d'element pour l'element filename
@param location Emplacement de l'element a editer
*/
@@ -2080,14 +2024,6 @@
}
/**
- * @brief QETDiagramEditor::addItemFinish
- * Uncheck all action in m_add_item_actions_group
- */
-void QETDiagramEditor::addItemFinish() {
- m_add_item_actions_group.checkedAction()->setChecked(false);
-}
-
-/**
* @brief QETDiagramEditor::subWindowActivated
* Slot used to update menu and undo stack when subwindows of MDIarea was activated
* @param subWindows
Modified: trunk/sources/qetdiagrameditor.h
===================================================================
--- trunk/sources/qetdiagrameditor.h 2015-09-17 19:22:51 UTC (rev 4213)
+++ trunk/sources/qetdiagrameditor.h 2015-09-19 13:27:06 UTC (rev 4214)
@@ -77,7 +77,7 @@
ProjectView *findProject(QETProject *) const;
ProjectView *findProject(const QString &) const;
QMdiSubWindow *subWindowForWidget(QWidget *) const;
-
+
public slots:
void printDialog();
void exportDialog();
@@ -92,17 +92,11 @@
void slot_cut();
void slot_copy();
void slot_paste();
- void slot_zoomIn();
- void slot_zoomOut();
- void slot_zoomFit();
- void slot_zoomContent();
- void slot_zoomReset();
- void slot_selectAll();
- void slot_selectNothing();
- void slot_selectInvert();
- void slot_delete();
- void slot_rotate();
- void slot_rotateTexts();
+ void zoomGroupTriggered (QAction *action);
+ void selectGroupTriggered (QAction *action);
+ void addItemGroupTriggered (QAction *action);
+ void selectionGroupTriggered (QAction *action);
+ void rowColumnGroupTriggered (QAction *action);
void slot_setSelectionMode();
void slot_setVisualisationMode();
void slot_updateActions();
@@ -111,20 +105,9 @@
void slot_updateComplexActions();
void slot_updatePasteAction();
void slot_updateWindowsMenu();
- void slot_addColumn();
- void slot_removeColumn();
- void slot_addRow();
- void slot_removeRow();
void editSelectionProperties();
void slot_resetConductors();
void slot_autoConductor(bool ac);
- void slot_addText();
- void slot_addImage();
- void slot_addLine();
- void slot_addRectangle();
- void slot_addEllipse();
- void slot_addPolyline();
- void slot_editSelection();
void setWindowedMode();
void setTabbedMode();
void readSettings();
@@ -154,12 +137,10 @@
void nomenclatureProject();
void diagramWasAdded(DiagramView *);
void findElementInPanel(const ElementsLocation &);
- void findSelectedElementInPanel();
void editElementInEditor(const ElementsLocation &);
void editSelectedElementInEditor();
void showError(const QETResult &);
void showError(const QString &);
- void addItemFinish();
void subWindowActivated(QMdiSubWindow *subWindows);
private slots: