diff --git a/sources/diagram.cpp b/sources/diagram.cpp index 1ebd2ce9e..7067cb657 100644 --- a/sources/diagram.cpp +++ b/sources/diagram.cpp @@ -42,6 +42,8 @@ int Diagram::xGrid = 10; int Diagram::yGrid = 10; int Diagram::xKeyGrid = 10; int Diagram::yKeyGrid = 10; +int Diagram::xKeyGridFine = 1; +int Diagram::yKeyGridFine = 1; const qreal Diagram::margin = 5.0; // static variable to keep track of present background color of the diagram. @@ -285,7 +287,8 @@ void Diagram::keyPressEvent(QKeyEvent *event) QSettings settings; int xKeyGrid = settings.value("DiagramEditor_xKeyGrid_sb", Diagram::xKeyGrid).toInt(); int yKeyGrid = settings.value("DiagramEditor_yKeyGrid_sb", Diagram::yKeyGrid).toInt(); - + int xKeyGridFine = settings.value("DiagramEditor_xKeyGridFine_sb", Diagram::xKeyGridFine).toInt(); + int yKeyGridFine = settings.value("DiagramEditor_yKeyGridFine_sb", Diagram::yKeyGridFine).toInt(); event->setAccepted(false); if (m_event_interface) { @@ -342,7 +345,46 @@ void Diagram::keyPressEvent(QKeyEvent *event) return; } } - else if(event->modifiers() == Qt::ControlModifier) + else if(event->modifiers() == Qt::AltModifier) + + { + switch(event->key()) + { + case Qt::Key_Left: + for (Element *item : dc.m_elements) + { + left_position = item->sceneBoundingRect().x(); + if(left_position <= 5) + return; + } + movement = QPointF(-xKeyGridFine, 0.0); + break; + case Qt::Key_Right: + movement = QPointF(+xKeyGridFine, 0.0); + break; + case Qt::Key_Up: + for(Element *item : dc.m_elements) + { + top_position = item->sceneBoundingRect().y(); + if(top_position <= 5) + return; + } + movement = QPointF(0.0, -yKeyGridFine); + break; + case Qt::Key_Down: + movement = QPointF(0.0, +yKeyGridFine); + break; + } + + if (!movement.isNull() && !focusItem()) + { + m_elements_mover.beginMovement(this); + m_elements_mover.continueMovement(movement); + event->accept(); + return; + } + } + else if(event->modifiers() == Qt::ControlModifier) { //Adjust the alignment of a texts group if(selectedItems().size() == 1 && selectedItems().first()->type() == QGraphicsItemGroup::Type) diff --git a/sources/diagram.h b/sources/diagram.h index ab113fc99..28464f8cd 100644 --- a/sources/diagram.h +++ b/sources/diagram.h @@ -80,6 +80,10 @@ class Diagram : public QGraphicsScene static int xKeyGrid; /// Key grid y step size static int yKeyGrid; + /// Key grid fine x step size + static int xKeyGridFine; + /// Key grid fine y step size + static int yKeyGridFine; /// margin around the diagram static const qreal margin; /// background color of diagram diff --git a/sources/ui/configpage/generalconfigurationpage.cpp b/sources/ui/configpage/generalconfigurationpage.cpp index 1209a7227..1dcfdb524 100644 --- a/sources/ui/configpage/generalconfigurationpage.cpp +++ b/sources/ui/configpage/generalconfigurationpage.cpp @@ -39,7 +39,9 @@ GeneralConfigurationPage::GeneralConfigurationPage(QWidget *parent) : ui->DiagramEditor_yGrid_sb->setValue(settings.value("DiagramEditor_yGrid_sb", 10).toInt()); ui->DiagramEditor_xKeyGrid_sb->setValue(settings.value("DiagramEditor_xKeyGrid_sb", 10).toInt()); ui->DiagramEditor_yKeyGrid_sb->setValue(settings.value("DiagramEditor_yKeyGrid_sb", 10).toInt()); - ui->m_use_system_color_cb->setChecked(settings.value("usesystemcolors", "true").toBool()); + ui->DiagramEditor_xKeyGridFine_sb->setValue(settings.value("DiagramEditor_xKeyGridFine_sb", 1).toInt()); + ui->DiagramEditor_yKeyGridFine_sb->setValue(settings.value("DiagramEditor_yKeyGridFine_sb", 1).toInt()); + ui->m_use_system_color_cb->setChecked(settings.value("usesystemcolors", "true").toBool()); bool tabbed = settings.value("diagrameditor/viewmode", "tabbed") == "tabbed"; if(tabbed) ui->m_use_tab_mode_rb->setChecked(true); @@ -145,7 +147,9 @@ void GeneralConfigurationPage::applyConf() settings.setValue("DiagramEditor_yGrid_sb", ui->DiagramEditor_yGrid_sb->value()); settings.setValue("DiagramEditor_xKeyGrid_sb", ui->DiagramEditor_xKeyGrid_sb->value()); settings.setValue("DiagramEditor_yKeyGrid_sb", ui->DiagramEditor_yKeyGrid_sb->value()); - + settings.setValue("DiagramEditor_xKeyGridFine_sb", ui->DiagramEditor_xKeyGridFine_sb->value()); + settings.setValue("DiagramEditor_yKeyGridFine_sb", ui->DiagramEditor_yKeyGridFine_sb->value()); + QString path = settings.value("elements-collections/common-collection-path").toString(); if (ui->m_common_elmt_path_cb->currentIndex() == 1) { diff --git a/sources/ui/configpage/generalconfigurationpage.ui b/sources/ui/configpage/generalconfigurationpage.ui index a4021cf7c..d65bb04c7 100644 --- a/sources/ui/configpage/generalconfigurationpage.ui +++ b/sources/ui/configpage/generalconfigurationpage.ui @@ -464,15 +464,15 @@ Vous pouvez spécifier ici la valeur par défaut de ce champ pour les éléments - + - Grille + Grille + Clavier - 20 - 10 + 90 + 50 191 30 @@ -484,8 +484,8 @@ Vous pouvez spécifier ici la valeur par défaut de ce champ pour les éléments - 20 - 50 + 90 + 90 191 30 @@ -497,8 +497,8 @@ Vous pouvez spécifier ici la valeur par défaut de ce champ pour les éléments - 350 - 10 + 540 + 50 55 30 @@ -519,8 +519,8 @@ Vous pouvez spécifier ici la valeur par défaut de ce champ pour les éléments - 350 - 50 + 540 + 90 55 30 @@ -538,21 +538,21 @@ Vous pouvez spécifier ici la valeur par défaut de ce champ pour les éléments - 20 - 180 - 321 + 90 + 280 + 431 30 - DiagramEditor Key Left/Right xGrid + DiagramEditor (touche : gauche / droite) xGrid - 350 - 180 + 540 + 280 55 30 @@ -573,21 +573,21 @@ Vous pouvez spécifier ici la valeur par défaut de ce champ pour les éléments - 20 - 220 - 321 + 90 + 320 + 431 30 - DiagramEditor Key Up/Down yGrid + DiagramEditor (touche : haut / bas) yGrid - 350 - 220 + 540 + 320 55 30 @@ -605,6 +605,128 @@ Vous pouvez spécifier ici la valeur par défaut de ce champ pour les éléments 10 + + + + 20 + 20 + 121 + 30 + + + + Grille : 1 - 30 + + + + + + 20 + 240 + 281 + 30 + + + + Déplacement au clavier : 1 - 30 + + + + + + 20 + 360 + 421 + 30 + + + + Déplacement au clavier avec la touche ALT : 1 - 9 + + + + + + 90 + 400 + 431 + 30 + + + + DiagramEditor (touche : gauche / droite ) xGrid + + + + + + 90 + 440 + 431 + 30 + + + + DiagramEditor (touche : haut / bas) yGrid + + + + + + 540 + 400 + 55 + 30 + + + + 1 + + + 9 + + + 1 + + + 1 + + + + + + 540 + 440 + 55 + 30 + + + + 1 + + + 9 + + + 1 + + + 1 + + + + + + 20 + 130 + 481 + 30 + + + + La Grille doite etre active pour pouvoir voir les modifications. + +