diff --git a/sources/diagram.cpp b/sources/diagram.cpp index 4566d21a2..71498c986 100644 --- a/sources/diagram.cpp +++ b/sources/diagram.cpp @@ -1024,3 +1024,20 @@ DiagramContent Diagram::selectedContent() { invalidateMovedElements(); return(dc); } + +/** + @return true s'il est possible de tourner les elements selectionnes. + Concretement, cette methode retourne true s'il y a des elements selectionnes + et qu'au moins l'un d'entre eux peut etre pivote. +*/ +bool Diagram::canRotateSelection() const { + foreach(QGraphicsItem * qgi, selectedItems()) { + if (Element *e = qgraphicsitem_cast(qgi)) { + // l'element est-il pivotable ? + if (e -> orientation().current() != e -> orientation().next()) { + return(true); + } + } + } + return(false); +} diff --git a/sources/diagram.h b/sources/diagram.h index a8d3f07fe..7895cb26e 100644 --- a/sources/diagram.h +++ b/sources/diagram.h @@ -155,6 +155,7 @@ class Diagram : public QGraphicsScene { QSet selectedConductors() const; DiagramContent content() const; DiagramContent selectedContent(); + bool canRotateSelection() const; void moveElements(const QPointF &, QGraphicsItem * = 0); bool usesElement(const ElementsLocation &); diff --git a/sources/qetdiagrameditor.cpp b/sources/qetdiagrameditor.cpp index 7c4a770b7..274291867 100644 --- a/sources/qetdiagrameditor.cpp +++ b/sources/qetdiagrameditor.cpp @@ -1147,7 +1147,7 @@ void QETDiagramEditor::slot_updateComplexActions() { cut -> setEnabled(editable_diagram && selected_elements); copy -> setEnabled(selected_elements); delete_selection -> setEnabled(editable_diagram && selected_elements); - rotate_selection -> setEnabled(editable_diagram && selected_elements); + rotate_selection -> setEnabled(editable_diagram && selected_elements && dv -> diagram() -> canRotateSelection()); selection_prop -> setEnabled(editable_diagram && selected_elements); }