diff --git a/ico/16x16/zoom-fit-best.png b/ico/16x16/zoom-fit-best.png new file mode 100644 index 000000000..07cfc9847 Binary files /dev/null and b/ico/16x16/zoom-fit-best.png differ diff --git a/ico/22x22/zoom-fit-best.png b/ico/22x22/zoom-fit-best.png new file mode 100644 index 000000000..890133da8 Binary files /dev/null and b/ico/22x22/zoom-fit-best.png differ diff --git a/qelectrotech.qrc b/qelectrotech.qrc index 83d150efd..b85b5076c 100644 --- a/qelectrotech.qrc +++ b/qelectrotech.qrc @@ -79,6 +79,7 @@ ico/16x16/west.png ico/16x16/window-new.png ico/16x16/zoom-draw.png + ico/16x16/zoom-fit-best.png ico/16x16/zoom-in.png ico/16x16/zoom-original.png ico/16x16/zoom-out.png @@ -174,6 +175,7 @@ ico/22x22/view-restore.png ico/22x22/window-new.png ico/22x22/zoom-draw.png + ico/22x22/zoom-fit-best.png ico/22x22/zoom-in.png ico/22x22/zoom-original.png ico/22x22/zoom-out.png diff --git a/sources/diagramview.cpp b/sources/diagramview.cpp index 65c81a36c..96c7013d6 100644 --- a/sources/diagramview.cpp +++ b/sources/diagramview.cpp @@ -337,6 +337,14 @@ void DiagramView::zoomFit() { adjustGridToZoom(); } +/** + Adjust zoom to fit all elements in the view, regardless of diagram borders. +*/ +void DiagramView::zoomContent() { + fitInView(scene -> itemsBoundingRect(), Qt::KeepAspectRatio); + adjustGridToZoom(); +} + /** Reinitialise le zoom */ diff --git a/sources/diagramview.h b/sources/diagramview.h index 0e49f42b4..bab532281 100644 --- a/sources/diagramview.h +++ b/sources/diagramview.h @@ -127,6 +127,7 @@ class DiagramView : public QGraphicsView { void zoomIn(); void zoomOut(); void zoomFit(); + void zoomContent(); void zoomReset(); void cut(); void copy(); diff --git a/sources/qetdiagrameditor.cpp b/sources/qetdiagrameditor.cpp index 1a1b8b327..6473b14f8 100644 --- a/sources/qetdiagrameditor.cpp +++ b/sources/qetdiagrameditor.cpp @@ -216,6 +216,7 @@ void QETDiagramEditor::actions() { zoom_in = new QAction(QET::Icons::ZoomIn, tr("Zoom avant"), this); zoom_out = new QAction(QET::Icons::ZoomOut, tr("Zoom arri\350re"), this); + zoom_content = new QAction(QET::Icons::ZoomDraw, tr("Zoom sur le contenu"), this); zoom_fit = new QAction(QET::Icons::ZoomFitBest, tr("Zoom adapt\351"), this); zoom_reset = new QAction(QET::Icons::ZoomOriginal, tr("Pas de zoom"), this); @@ -264,6 +265,7 @@ void QETDiagramEditor::actions() { zoom_in -> setShortcut(QKeySequence::ZoomIn); zoom_out -> setShortcut(QKeySequence::ZoomOut); + zoom_content -> setShortcut(QKeySequence(tr("Ctrl+8"))); zoom_fit -> setShortcut(QKeySequence(tr("Ctrl+9"))); zoom_reset -> setShortcut(QKeySequence(tr("Ctrl+0"))); @@ -303,6 +305,7 @@ void QETDiagramEditor::actions() { zoom_in -> setStatusTip(tr("Agrandit le sch\351ma", "status bar tip")); zoom_out -> setStatusTip(tr("R\351tr\351cit le sch\351ma", "status bar tip")); + zoom_content -> setStatusTip(tr("Adapte le zoom de fa\347on \340 afficher tout le contenu ind\351pendamment du cadre")); zoom_fit -> setStatusTip(tr("Adapte la taille du sch\351ma afin qu'il soit enti\350rement visible", "status bar tip")); zoom_reset -> setStatusTip(tr("Restaure le zoom par d\351faut", "status bar tip")); @@ -353,6 +356,7 @@ void QETDiagramEditor::actions() { connect(prj_clean, SIGNAL(triggered()), this, SLOT(cleanCurrentProject()) ); 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()) ); connect(print, SIGNAL(triggered()), this, SLOT(printDialog()) ); @@ -482,6 +486,7 @@ void QETDiagramEditor::menus() { menu_affichage -> addSeparator(); menu_affichage -> addAction(zoom_in); menu_affichage -> addAction(zoom_out); + menu_affichage -> addAction(zoom_content); menu_affichage -> addAction(zoom_fit); menu_affichage -> addAction(zoom_reset); @@ -527,6 +532,7 @@ void QETDiagramEditor::toolbar() { view_bar -> addSeparator(); view_bar -> addAction(zoom_in); view_bar -> addAction(zoom_out); + view_bar -> addAction(zoom_content); view_bar -> addAction(zoom_fit); view_bar -> addAction(zoom_reset); @@ -968,6 +974,13 @@ void QETDiagramEditor::slot_zoomFit() { if(currentDiagram()) currentDiagram() -> zoomFit(); } +/** + Call the "zoom content" action for the current diagram. +*/ +void QETDiagramEditor::slot_zoomContent() { + if(currentDiagram()) currentDiagram() -> zoomContent(); +} + /** Effectue l'action "zoom par defaut" sur le schema en cours */ @@ -1059,6 +1072,7 @@ void QETDiagramEditor::slot_updateActions() { select_invert -> setEnabled(opened_diagram); zoom_in -> setEnabled(opened_diagram); zoom_out -> setEnabled(opened_diagram); + zoom_content -> setEnabled(opened_diagram); zoom_fit -> setEnabled(opened_diagram); zoom_reset -> setEnabled(opened_diagram); infos_diagram -> setEnabled(opened_diagram); diff --git a/sources/qetdiagrameditor.h b/sources/qetdiagrameditor.h index b686ea5f2..74819b84e 100644 --- a/sources/qetdiagrameditor.h +++ b/sources/qetdiagrameditor.h @@ -99,6 +99,7 @@ class QETDiagramEditor : public QETMainWindow { void slot_zoomIn(); void slot_zoomOut(); void slot_zoomFit(); + void slot_zoomContent(); void slot_zoomReset(); void slot_selectAll(); void slot_selectNothing(); @@ -196,7 +197,8 @@ class QETDiagramEditor : public QETMainWindow { QAction *prj_clean; ///< Nettoie un projet QAction *zoom_in; ///< Zoome avant QAction *zoom_out; ///< Zoome arriere - QAction *zoom_fit; ///< Ajuste le zoom de facon a voir l'integralite des elements + QAction *zoom_fit; ///< Adjust zoom to fit the whole diagram, including potential elements outside its borders, in the view + QAction *zoom_content; ///< Adjust zoom to fit all elements in the view, regardless of diagram borders QAction *zoom_reset; ///< Remet le zoom 1:1 QAction *tile_window; ///< Affiche les fenetre MDI en mosaique QAction *cascade_window; ///< Affiche les fenetres MDI en cascade diff --git a/sources/qeticons.cpp b/sources/qeticons.cpp index 1b89ff396..fec131503 100644 --- a/sources/qeticons.cpp +++ b/sources/qeticons.cpp @@ -146,6 +146,7 @@ namespace QET { QIcon West; QIcon WindowNew; QIcon XmlTextFile; + QIcon ZoomDraw; QIcon ZoomFitBest; QIcon ZoomIn; QIcon ZoomOriginal; @@ -372,8 +373,10 @@ void QET::Icons::initIcons() { XmlTextFile .addFile(":/ico/16x16/text-xml.png"); XmlTextFile .addFile(":/ico/22x22/text-xml.png"); XmlTextFile .addFile(":/ico/32x32/text-xml.png"); - ZoomFitBest .addFile(":/ico/16x16/zoom-draw.png"); - ZoomFitBest .addFile(":/ico/22x22/zoom-draw.png"); + ZoomDraw .addFile(":/ico/16x16/zoom-draw.png"); + ZoomDraw .addFile(":/ico/22x22/zoom-draw.png"); + ZoomFitBest .addFile(":/ico/16x16/zoom-fit-best.png"); + ZoomFitBest .addFile(":/ico/22x22/zoom-fit-best.png"); ZoomIn .addFile(":/ico/16x16/zoom-in.png"); ZoomIn .addFile(":/ico/22x22/zoom-in.png"); ZoomOriginal .addFile(":/ico/16x16/zoom-original.png"); diff --git a/sources/qeticons.h b/sources/qeticons.h index acb88d219..495ce1440 100644 --- a/sources/qeticons.h +++ b/sources/qeticons.h @@ -155,6 +155,7 @@ namespace QET { extern QIcon West; extern QIcon WindowNew; extern QIcon XmlTextFile; + extern QIcon ZoomDraw; extern QIcon ZoomFitBest; extern QIcon ZoomIn; extern QIcon ZoomOriginal;