diff --git a/sources/elementspanelwidget.cpp b/sources/elementspanelwidget.cpp index d74c06351..a745b57c6 100644 --- a/sources/elementspanelwidget.cpp +++ b/sources/elementspanelwidget.cpp @@ -73,6 +73,7 @@ ElementsPanelWidget::ElementsPanelWidget(QWidget *parent) : QWidget(parent) { prj_move_diagram_up = new QAction(QET::Icons::GoUp, tr("Remonter ce schéma"), this); prj_move_diagram_down = new QAction(QET::Icons::GoDown, tr("Abaisser ce schéma"), this); prj_move_diagram_upx10 = new QAction(QET::Icons::GoUp, tr("Remonter ce schéma x10"), this); + prj_move_diagram_top = new QAction(QET::Icons::GoUp, tr("Remonter ce schéma au debut"), this); prj_move_diagram_downx10 = new QAction(QET::Icons::GoDown, tr("Abaisser ce schéma x10"), this); tbt_add = new QAction(QET::Icons::TitleBlock, tr("Nouveau modèle"), this); tbt_edit = new QAction(QET::Icons::TitleBlock, tr("Éditer ce modèle"), this); @@ -121,6 +122,7 @@ ElementsPanelWidget::ElementsPanelWidget(QWidget *parent) : QWidget(parent) { connect(prj_del_diagram, SIGNAL(triggered()), this, SLOT(deleteDiagram())); connect(prj_move_diagram_up, SIGNAL(triggered()), this, SLOT(moveDiagramUp())); connect(prj_move_diagram_down, SIGNAL(triggered()), this, SLOT(moveDiagramDown())); + connect(prj_move_diagram_top, SIGNAL(triggered()), this, SLOT(moveDiagramUpTop())); connect(prj_move_diagram_upx10, SIGNAL(triggered()), this, SLOT(moveDiagramUpx10())); connect(prj_move_diagram_downx10, SIGNAL(triggered()), this, SLOT(moveDiagramDownx10())); connect(tbt_add, SIGNAL(triggered()), this, SLOT(addTitleBlockTemplate())); @@ -298,6 +300,17 @@ void ElementsPanelWidget::deleteDiagram() { } } +/** + Emet le signal requestForDiagramMoveUpTop avec le schema selectionne ++ */ +void ElementsPanelWidget::moveDiagramUpTop() { + if (Diagram *selected_diagram = elements_panel -> selectedDiagram()) { + emit(requestForDiagramMoveUpTop(selected_diagram)); + } +} + + + /** Emet le signal requestForDiagramMoveUp avec le schema selectionne */ @@ -455,6 +468,7 @@ void ElementsPanelWidget::updateButtons() { prj_del_diagram -> setEnabled(is_writable); prj_move_diagram_up -> setEnabled(is_writable && diagram_position > 0); prj_move_diagram_down -> setEnabled(is_writable && diagram_position < project_diagrams_count - 1); + prj_move_diagram_top -> setEnabled(is_writable && diagram_position > 0); prj_move_diagram_upx10 -> setEnabled(is_writable && diagram_position > 10); prj_move_diagram_downx10 -> setEnabled(is_writable && diagram_position < project_diagrams_count - 10); setElementsActionEnabled(false); @@ -559,6 +573,7 @@ void ElementsPanelWidget::handleContextMenu(const QPoint &pos) { case QET::Diagram: context_menu -> addAction(prj_prop_diagram); context_menu -> addAction(prj_del_diagram); + context_menu -> addAction(prj_move_diagram_top); context_menu -> addAction(prj_move_diagram_upx10); context_menu -> addAction(prj_move_diagram_up); context_menu -> addAction(prj_move_diagram_down); diff --git a/sources/elementspanelwidget.h b/sources/elementspanelwidget.h index 73e4fdb6f..931a77a2e 100644 --- a/sources/elementspanelwidget.h +++ b/sources/elementspanelwidget.h @@ -44,7 +44,7 @@ class ElementsPanelWidget : public QWidget { QAction *new_category, *edit_category, *delete_category; QAction *delete_collection; QAction *new_element, *edit_element, *delete_element, *open_element; - QAction *prj_activate, *prj_close, *prj_edit_prop, *prj_prop_diagram, *prj_add_diagram, *prj_del_diagram, *prj_move_diagram_up, *prj_move_diagram_down, *prj_move_diagram_upx10, *prj_move_diagram_downx10; + QAction *prj_activate, *prj_close, *prj_edit_prop, *prj_prop_diagram, *prj_add_diagram, *prj_del_diagram, *prj_move_diagram_up, *prj_move_diagram_top, *prj_move_diagram_down, *prj_move_diagram_upx10, *prj_move_diagram_downx10; QAction *tbt_add, *tbt_edit, *tbt_remove; QAction *copy_elements_, *move_elements_, *cancel_elements_; QMenu *context_menu; @@ -67,6 +67,7 @@ class ElementsPanelWidget : public QWidget { void requestForDiagramDeletion(Diagram *); void requestForDiagramMoveUp(Diagram *); void requestForDiagramMoveDown(Diagram *); + void requestForDiagramMoveUpTop(Diagram *); void requestForDiagramMoveUpx10(Diagram *); void requestForDiagramMoveDownx10(Diagram *); @@ -83,6 +84,7 @@ class ElementsPanelWidget : public QWidget { void deleteDiagram(); void moveDiagramUp(); void moveDiagramDown(); + void moveDiagramUpTop(); void moveDiagramUpx10(); void moveDiagramDownx10(); void addTitleBlockTemplate(); diff --git a/sources/projectview.cpp b/sources/projectview.cpp index 04b55d78f..d19bfb377 100644 --- a/sources/projectview.cpp +++ b/sources/projectview.cpp @@ -501,6 +501,28 @@ void ProjectView::moveDiagramDown(Diagram *diagram) { moveDiagramDown(findDiagram(diagram)); } +/** + Deplace le schema diagram_view vers le haut / la gauche en position 0 +*/ +void ProjectView::moveDiagramUpTop(DiagramView *diagram_view) { + if (!diagram_view) return; + + int diagram_view_position = diagram_ids_.key(diagram_view); + if (!diagram_view_position) { + // le schema est le premier du projet + return; + } + tabs_ -> moveTab(diagram_view_position, (diagrams().size()-1, 0)); +} + +/** + Deplace le schema diagram vers le haut / la gauche en position 0 +*/ +void ProjectView::moveDiagramUpTop(Diagram *diagram) { + moveDiagramUpTop(findDiagram(diagram)); +} + + /** Deplace le schema diagram_view vers le haut / la gauche x10 */ diff --git a/sources/projectview.h b/sources/projectview.h index b83c59b38..40a54743e 100644 --- a/sources/projectview.h +++ b/sources/projectview.h @@ -73,6 +73,8 @@ class ProjectView : public QWidget { void moveDiagramUp(Diagram *); void moveDiagramDown(DiagramView *); void moveDiagramDown(Diagram *); + void moveDiagramUpTop(DiagramView *); + void moveDiagramUpTop(Diagram *); void moveDiagramUpx10(DiagramView *); void moveDiagramUpx10(Diagram *); void moveDiagramDownx10(DiagramView *); diff --git a/sources/qetdiagrameditor.cpp b/sources/qetdiagrameditor.cpp index 9c7657519..8dbec118d 100644 --- a/sources/qetdiagrameditor.cpp +++ b/sources/qetdiagrameditor.cpp @@ -144,6 +144,7 @@ void QETDiagramEditor::setUpElementsPanel() { connect(pa, SIGNAL(requestForDiagramDeletion (Diagram *)), this, SLOT(removeDiagram(Diagram *))); connect(pa, SIGNAL(requestForDiagramMoveUp (Diagram *)), this, SLOT(moveDiagramUp(Diagram *))); connect(pa, SIGNAL(requestForDiagramMoveDown (Diagram *)), this, SLOT(moveDiagramDown(Diagram *))); + connect(pa, SIGNAL(requestForDiagramMoveUpTop (Diagram *)), this, SLOT(moveDiagramUpTop(Diagram *))); connect(pa, SIGNAL(requestForDiagramMoveUpx10 (Diagram *)), this, SLOT(moveDiagramUpx10(Diagram *))); connect(pa, SIGNAL(requestForDiagramMoveDownx10 (Diagram *)), this, SLOT(moveDiagramDownx10(Diagram *))); } @@ -1839,6 +1840,25 @@ void QETDiagramEditor::moveDiagramDown(Diagram *diagram) { } } +/** + Change l'ordre des schemas d'un projet, en decalant le schema vers le haut / + la gauche en position 0 + @param diagram Schema a decaler vers le haut / la gauche en position 0 + */ +void QETDiagramEditor::moveDiagramUpTop(Diagram *diagram) { + if (!diagram) return; + + // recupere le projet contenant le schema + if (QETProject *diagram_project = diagram -> project()) { + if (diagram_project -> isReadOnly()) return; + + // recupere la vue sur ce projet + if (ProjectView *project_view = findProject(diagram_project)) { + project_view -> moveDiagramUpTop(diagram); + } + } +} + /** Change l'ordre des schemas d'un projet, en decalant le schema vers le haut / diff --git a/sources/qetdiagrameditor.h b/sources/qetdiagrameditor.h index 4ec7c3233..3ff17453c 100644 --- a/sources/qetdiagrameditor.h +++ b/sources/qetdiagrameditor.h @@ -145,6 +145,7 @@ class QETDiagramEditor : public QETMainWindow { void removeDiagramFromProject(); void moveDiagramUp(Diagram *); void moveDiagramDown(Diagram *); + void moveDiagramUpTop(Diagram *); void moveDiagramUpx10(Diagram *); void moveDiagramDownx10(Diagram *); void cleanCurrentProject();