diff --git a/borderinset.cpp b/borderinset.cpp index 0f64aa058..0bbd63b4e 100644 --- a/borderinset.cpp +++ b/borderinset.cpp @@ -94,7 +94,7 @@ void BorderInset::draw(QPainter *qp, qreal x, qreal y) { qp -> drawText(inset_date, Qt::AlignVCenter | Qt::AlignLeft, tr(" Date : ") + bi_date.toString("dd/MM/yyyy")); qp -> drawRect(inset_title); - qp -> drawText(inset_title, Qt::AlignVCenter | Qt::AlignCenter, tr("Titre du document: ") + bi_title); + qp -> drawText(inset_title, Qt::AlignVCenter | Qt::AlignCenter, tr("Titre du document : ") + bi_title); qp -> drawRect(inset_file); qp -> drawText(inset_file, Qt::AlignVCenter | Qt::AlignLeft, tr(" Fichier : ") + bi_filename); diff --git a/conducer.cpp b/conducer.cpp index 531aafde9..5531f9258 100644 --- a/conducer.cpp +++ b/conducer.cpp @@ -168,7 +168,13 @@ void Conducer::priv_modifieConducer(const QPointF &p1, QET::Orientation, const Q // en deduit les coefficients de "redimensionnement" qreal coeff_x = new_dist_2_terminals_x / orig_dist_2_terms_x; qreal coeff_y = new_dist_2_terminals_y / orig_dist_2_terms_y; - + /* + if (!orig_dist_2_terms_x || !orig_dist_2_terms_y) { + qDebug() << "ca va planter"; + PR(coeff_x) + PR(coeff_y) + } + */ // genere les nouveaux points int limite = moves_x.size() - 1; int coeff = type_trajet_x ? 1 : -1; diff --git a/diagram.cpp b/diagram.cpp index 495ef5eef..b00d04a0b 100644 --- a/diagram.cpp +++ b/diagram.cpp @@ -47,7 +47,7 @@ void Diagram::drawBackground(QPainter *p, const QRectF &r) { p -> setBrush(Qt::white); p -> drawRect(r); - if (draw_grid && r.width() < 2500 && r.height() < 2500) { + if (draw_grid) { // dessine les points de la grille p -> setPen(Qt::black); p -> setBrush(Qt::NoBrush); diff --git a/diagramview.cpp b/diagramview.cpp index 1565ca9f4..ecfb66a51 100644 --- a/diagramview.cpp +++ b/diagramview.cpp @@ -222,6 +222,7 @@ void DiagramView::setSelectionMode() { */ void DiagramView::zoomPlus() { scale(4.0/3.0, 4.0/3.0); + adjustGridToZoom(); } /** @@ -229,6 +230,7 @@ void DiagramView::zoomPlus() { */ void DiagramView::zoomMoins() { scale(0.75, 0.75); + adjustGridToZoom(); } /** @@ -243,6 +245,7 @@ void DiagramView::zoomFit() { } adjustSceneRect(); fitInView(sceneRect(), Qt::KeepAspectRatio); + adjustGridToZoom(); } /** @@ -250,6 +253,7 @@ void DiagramView::zoomFit() { */ void DiagramView::zoomReset() { resetMatrix(); + adjustGridToZoom(); } /** @@ -597,3 +601,23 @@ void DiagramView::adjustSceneRect() { // ajuste la sceneRect setSceneRect(elements_bounding_rect.united(border_bounding_rect)); } + +void DiagramView::adjustGridToZoom() { + QRectF viewed_scene = viewedSceneRect(); + scene -> setDisplayGrid(viewed_scene.width() < 2000 || viewed_scene.height() < 2000); +} + +QRectF DiagramView::viewedSceneRect() const { + // recupere la taille du widget viewport + QSize viewport_size = viewport() -> size(); + + // recupere la transformation viewport -> scene + QTransform view_to_scene = viewportTransform().inverted(); + + // mappe le coin superieur gauche et le coin inferieur droit de la viewport sur la scene + QPointF scene_left_top = view_to_scene.map(QPointF(0.0, 0.0)); + QPointF scene_right_bottom = view_to_scene.map(QPointF(viewport_size.width(), viewport_size.height())); + + // en deduit le rectangle visualise par la scene + return(QRectF(scene_left_top, scene_right_bottom)); +} diff --git a/diagramview.h b/diagramview.h index c732831f4..463c20712 100644 --- a/diagramview.h +++ b/diagramview.h @@ -50,6 +50,7 @@ class DiagramView : public QGraphicsView { void dragLeaveEvent(QDragLeaveEvent *); void dragMoveEvent(QDragMoveEvent *); void dropEvent(QDropEvent *); + QRectF viewedSceneRect() const; signals: void selectionChanged(); @@ -75,5 +76,6 @@ class DiagramView : public QGraphicsView { private slots: void flushGarbage(); void slot_selectionChanged(); + void adjustGridToZoom(); }; #endif