Correction : certaines actions du menu Edition etaient activees dans des cas ou elles n'avaient pas de sens.

git-svn-id: svn+ssh://svn.tuxfamily.org/svnroot/qet/qet/branches/0.3@968 bfdf4180-ca20-0410-9c96-a3a8aa849046
This commit is contained in:
xavier
2010-04-24 22:37:45 +00:00
parent 88a4647d11
commit 7d61f34699
3 changed files with 44 additions and 8 deletions

View File

@@ -457,12 +457,45 @@ void DiagramView::editDiagramProperties() {
}
/**
@return true s'il y a des elements selectionnes sur le schema, false sinon
@return true s'il y a des items selectionnes sur le schema, false sinon
*/
bool DiagramView::hasSelectedItems() {
return(scene -> selectedItems().size() > 0);
}
/**
@return true s'il y a des items selectionnes sur le schema et que ceux-ci
peuvent etre copies dans le presse-papier, false sinon
*/
bool DiagramView::hasCopiableItems() {
foreach(QGraphicsItem *qgi, scene -> selectedItems()) {
if (
qgraphicsitem_cast<Element *>(qgi) ||
qgraphicsitem_cast<IndependentTextItem *>(qgi)
) {
return(true);
}
}
return(false);
}
/**
@return true s'il y a des items selectionnes sur le schema et que ceux-ci
peuvent etre supprimes, false sinon
*/
bool DiagramView::hasDeletableItems() {
foreach(QGraphicsItem *qgi, scene -> selectedItems()) {
if (
qgraphicsitem_cast<Element *>(qgi) ||
qgraphicsitem_cast<Conductor *>(qgi) ||
qgraphicsitem_cast<IndependentTextItem *>(qgi)
) {
return(true);
}
}
return(false);
}
/**
Ajoute une colonne au schema.
*/

View File

@@ -61,6 +61,8 @@ class DiagramView : public QGraphicsView {
Diagram *diagram() { return(scene); }
QETDiagramEditor *diagramEditor() const;
bool hasSelectedItems();
bool hasCopiableItems();
bool hasDeletableItems();
void addText();
IndependentTextItem *addDiagramTextAtPos(const QPointF &);

View File

@@ -1152,12 +1152,13 @@ void QETDiagramEditor::slot_updateComplexActions() {
conductor_reset -> setEnabled(editable_diagram && selected_conductors_count);
// actions ayant aussi besoin d'items (elements, conducteurs, textes, ...) selectionnes
bool selected_items = dv ? (dv -> hasSelectedItems()) : false;
cut -> setEnabled(editable_diagram && selected_items);
copy -> setEnabled(selected_items);
delete_selection -> setEnabled(editable_diagram && selected_items);
rotate_selection -> setEnabled(editable_diagram && selected_items && dv -> diagram() -> canRotateSelection());
selection_prop -> setEnabled(editable_diagram && selected_items);
bool copiable_items = dv ? (dv -> hasCopiableItems()) : false;
bool deletable_items = dv ? (dv -> hasDeletableItems()) : false;
cut -> setEnabled(editable_diagram && copiable_items);
copy -> setEnabled(copiable_items);
delete_selection -> setEnabled(editable_diagram && deletable_items);
rotate_selection -> setEnabled(editable_diagram && dv -> diagram() -> canRotateSelection());
selection_prop -> setEnabled(deletable_items);
// actions ayant besoin de textes selectionnes
bool selected_texts = dv ? (dv -> diagram() -> selectedTexts().count()) : 0;