mirror of
https://github.com/qelectrotech/qelectrotech-source-mirror.git
synced 2025-12-19 23:20:52 +01:00
Fix Home and End Buttons Handling and DiagramEditor Scroll
git-svn-id: svn+ssh://svn.tuxfamily.org/svnroot/qet/qet/trunk@4613 bfdf4180-ca20-0410-9c96-a3a8aa849046
This commit is contained in:
@@ -244,27 +244,27 @@ void Diagram::keyPressEvent(QKeyEvent *e)
|
|||||||
QPointF movement;
|
QPointF movement;
|
||||||
qreal top_position = 0;
|
qreal top_position = 0;
|
||||||
qreal left_position = 0;
|
qreal left_position = 0;
|
||||||
QList<Element*> selected_elmts = this->selectedContent().elements.toList();
|
QList<QGraphicsItem*> selected_elmts = this->selectedContent().items();
|
||||||
if (!this->selectedContent().elements.isEmpty()) {
|
if (!this->selectedContent().items(255).isEmpty()) {
|
||||||
switch(e -> key()) {
|
switch(e -> key()) {
|
||||||
case Qt::Key_Left:
|
case Qt::Key_Left:
|
||||||
foreach (QGraphicsItem *item, selected_elmts) {
|
foreach (QGraphicsItem *item, selected_elmts) {
|
||||||
left_position = item->mapRectFromScene(item->boundingRect()).x();
|
left_position = item->mapRectFromScene(item->boundingRect()).x();
|
||||||
if (left_position >= this->sceneRect().left() - item->boundingRect().width())
|
if (left_position >= this->sceneRect().left() - item->boundingRect().width())
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
movement = QPointF(-xGrid, 0.0);
|
movement = QPointF(-xGrid, 0.0);
|
||||||
break;
|
break;
|
||||||
case Qt::Key_Right: movement = QPointF(+xGrid, 0.0); break;
|
case Qt::Key_Right: movement = QPointF(+xGrid, 0.0); break;
|
||||||
case Qt::Key_Up:
|
case Qt::Key_Up:
|
||||||
foreach (QGraphicsItem *item, selected_elmts) {
|
foreach (QGraphicsItem *item, selected_elmts) {
|
||||||
top_position = item->mapRectFromScene(item->boundingRect()).y();
|
top_position = item->mapRectFromScene(item->boundingRect()).y();
|
||||||
if (top_position >= this->sceneRect().top() - item->boundingRect().height())
|
if (top_position >= this->sceneRect().top() - item->boundingRect().height())
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
movement = QPointF(0.0, -yGrid);
|
movement = QPointF(0.0, -yGrid);
|
||||||
break;
|
break;
|
||||||
case Qt::Key_Down: movement = QPointF(0.0, +yGrid); break;
|
case Qt::Key_Down: movement = QPointF(0.0, +yGrid); break;
|
||||||
}
|
}
|
||||||
if (!movement.isNull() && !focusItem()) {
|
if (!movement.isNull() && !focusItem()) {
|
||||||
beginMoveElements();
|
beginMoveElements();
|
||||||
|
|||||||
@@ -604,11 +604,31 @@ switch(e -> key())
|
|||||||
current_project->changeTabDown();
|
current_project->changeTabDown();
|
||||||
return;
|
return;
|
||||||
case Qt::Key_Home:
|
case Qt::Key_Home:
|
||||||
current_project->changeFirstTab();
|
if (!hasTextItems()) {
|
||||||
return;
|
if (
|
||||||
|
qgraphicsitem_cast<IndependentTextItem *>(scene->focusItem()) ||
|
||||||
|
qgraphicsitem_cast<ElementTextItem *>(scene->focusItem()) ||
|
||||||
|
qgraphicsitem_cast<ConductorTextItem *>(scene->focusItem()) ||
|
||||||
|
qgraphicsitem_cast<DiagramTextItem *>(scene->focusItem())
|
||||||
|
)
|
||||||
|
break;
|
||||||
|
current_project->changeFirstTab();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else break;
|
||||||
case Qt::Key_End:
|
case Qt::Key_End:
|
||||||
current_project->changeLastTab();
|
if (!hasTextItems()) {
|
||||||
return;
|
if (
|
||||||
|
qgraphicsitem_cast<IndependentTextItem *>(scene->focusItem()) ||
|
||||||
|
qgraphicsitem_cast<ElementTextItem *>(scene->focusItem()) ||
|
||||||
|
qgraphicsitem_cast<ConductorTextItem *>(scene->focusItem()) ||
|
||||||
|
qgraphicsitem_cast<DiagramTextItem *>(scene->focusItem())
|
||||||
|
)
|
||||||
|
break;
|
||||||
|
current_project->changeLastTab();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else break;
|
||||||
case Qt::Key_ZoomOut:
|
case Qt::Key_ZoomOut:
|
||||||
zoom(0.85);
|
zoom(0.85);
|
||||||
return;
|
return;
|
||||||
@@ -622,19 +642,19 @@ switch(e -> key())
|
|||||||
if (e->modifiers() & Qt::ControlModifier)
|
if (e->modifiers() & Qt::ControlModifier)
|
||||||
zoom(1.15);
|
zoom(1.15);
|
||||||
case Qt::Key_Up:
|
case Qt::Key_Up:
|
||||||
if(!scene->selectedContent().elements.isEmpty()){
|
if(!(scene->selectedContent().items(255).isEmpty())){
|
||||||
scrollOnMovement(e);
|
scrollOnMovement(e);
|
||||||
}
|
}
|
||||||
case Qt::Key_Down:
|
case Qt::Key_Down:
|
||||||
if(!scene->selectedContent().elements.isEmpty()){
|
if(!(scene->selectedContent().items(255).isEmpty())){
|
||||||
scrollOnMovement(e);
|
scrollOnMovement(e);
|
||||||
}
|
}
|
||||||
case Qt::Key_Left:
|
case Qt::Key_Left:
|
||||||
if(!scene->selectedContent().elements.isEmpty()){
|
if(!(scene->selectedContent().items(255).isEmpty())){
|
||||||
scrollOnMovement(e);
|
scrollOnMovement(e);
|
||||||
}
|
}
|
||||||
case Qt::Key_Right:
|
case Qt::Key_Right:
|
||||||
if(!scene->selectedContent().elements.isEmpty()){
|
if(!(scene->selectedContent().items(255).isEmpty())){
|
||||||
scrollOnMovement(e);
|
scrollOnMovement(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -659,7 +679,7 @@ void DiagramView::keyReleaseEvent(QKeyEvent *e) {
|
|||||||
or below the editor SceneRect is expanded
|
or below the editor SceneRect is expanded
|
||||||
*/
|
*/
|
||||||
void DiagramView::scrollOnMovement(QKeyEvent *e){
|
void DiagramView::scrollOnMovement(QKeyEvent *e){
|
||||||
QList<QGraphicsItem *> selected_elmts = scene ->selectedItems();
|
QList<QGraphicsItem *> selected_elmts = scene->selectedContent().items(255);
|
||||||
QRectF viewed_scene = viewedSceneRect();
|
QRectF viewed_scene = viewedSceneRect();
|
||||||
foreach (QGraphicsItem *qgi, selected_elmts){
|
foreach (QGraphicsItem *qgi, selected_elmts){
|
||||||
qreal x = qgi->pos().x();
|
qreal x = qgi->pos().x();
|
||||||
@@ -682,15 +702,21 @@ void DiagramView::scrollOnMovement(QKeyEvent *e){
|
|||||||
QScrollBar *v = verticalScrollBar();
|
QScrollBar *v = verticalScrollBar();
|
||||||
int h_increment=0;
|
int h_increment=0;
|
||||||
int v_increment=0;
|
int v_increment=0;
|
||||||
if (e->key()==Qt::Key_Up && elmt_above_bottom_margin)
|
if (e->key()==Qt::Key_Up && elmt_above_bottom_margin) {
|
||||||
v_increment = 2*qgi->boundingRect().top();
|
v_increment = 2*qgi->boundingRect().top();
|
||||||
else if(e->key()==Qt::Key_Down && elmt_below_top_margin){
|
if (v_increment == 0) v_increment = -2*qgi->boundingRect().height();
|
||||||
v_increment = 2*qgi->boundingRect().bottom();
|
|
||||||
}
|
}
|
||||||
else if (e->key()==Qt::Key_Left && elmt_left_of_right_margin)
|
else if(e->key()==Qt::Key_Down && elmt_below_top_margin) {
|
||||||
|
v_increment = 2*qgi->boundingRect().bottom();
|
||||||
|
if (v_increment == 0) v_increment = -2*qgi->boundingRect().height();
|
||||||
|
}
|
||||||
|
else if (e->key()==Qt::Key_Left && elmt_left_of_right_margin) {
|
||||||
h_increment = 2*qgi->boundingRect().left();
|
h_increment = 2*qgi->boundingRect().left();
|
||||||
else if (e->key()==Qt::Key_Right && elmt_right_of_left_margin){
|
if (h_increment == 0) h_increment = -2*qgi->boundingRect().width();
|
||||||
|
}
|
||||||
|
else if (e->key()==Qt::Key_Right && elmt_right_of_left_margin) {
|
||||||
h_increment = 2*qgi->boundingRect().right();
|
h_increment = 2*qgi->boundingRect().right();
|
||||||
|
if (h_increment == 0) h_increment = -2*qgi->boundingRect().width();
|
||||||
}
|
}
|
||||||
if (((elmt_right >= scene->sceneRect().right() - qgi->boundingRect().right()) ||
|
if (((elmt_right >= scene->sceneRect().right() - qgi->boundingRect().right()) ||
|
||||||
(elmt_bottom >= scene->sceneRect().bottom() - qgi->boundingRect().bottom())) &&
|
(elmt_bottom >= scene->sceneRect().bottom() - qgi->boundingRect().bottom())) &&
|
||||||
@@ -754,6 +780,23 @@ bool DiagramView::hasCopiableItems() {
|
|||||||
return(false);
|
return(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
@return true if there is any Text Item selected
|
||||||
|
*/
|
||||||
|
bool DiagramView::hasTextItems() {
|
||||||
|
foreach(QGraphicsItem *qgi, scene -> selectedItems()) {
|
||||||
|
if (
|
||||||
|
qgraphicsitem_cast<IndependentTextItem *>(qgi) ||
|
||||||
|
qgraphicsitem_cast<ElementTextItem *>(qgi) ||
|
||||||
|
qgraphicsitem_cast<ConductorTextItem *>(qgi) ||
|
||||||
|
qgraphicsitem_cast<DiagramTextItem *>(qgi)
|
||||||
|
) {
|
||||||
|
return(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return(false);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@return true s'il y a des items selectionnes sur le schema et que ceux-ci
|
@return true s'il y a des items selectionnes sur le schema et que ceux-ci
|
||||||
peuvent etre supprimes, false sinon
|
peuvent etre supprimes, false sinon
|
||||||
|
|||||||
@@ -72,6 +72,7 @@ class DiagramView : public QGraphicsView
|
|||||||
QETDiagramEditor *diagramEditor() const;
|
QETDiagramEditor *diagramEditor() const;
|
||||||
bool hasSelectedItems();
|
bool hasSelectedItems();
|
||||||
bool hasCopiableItems();
|
bool hasCopiableItems();
|
||||||
|
bool hasTextItems();
|
||||||
bool hasDeletableItems();
|
bool hasDeletableItems();
|
||||||
void editSelection();
|
void editSelection();
|
||||||
void setEventInterface (DVEventInterface *event_interface);
|
void setEventInterface (DVEventInterface *event_interface);
|
||||||
|
|||||||
Reference in New Issue
Block a user