[qet] [2419] element editor: improve the drag of the scene with wheel click |
[ Thread Index |
Date Index
| More lists.tuxfamily.org/qet Archives
]
Revision: 2419
Author: blacksun
Date: 2013-08-08 21:58:15 +0200 (Thu, 08 Aug 2013)
Log Message:
-----------
element editor: improve the drag of the scene with wheel click
Modified Paths:
--------------
trunk/sources/editor/editorcommands.cpp
trunk/sources/editor/elementscene.cpp
trunk/sources/editor/elementscene.h
trunk/sources/editor/elementview.cpp
trunk/sources/editor/elementview.h
Modified: trunk/sources/editor/editorcommands.cpp
===================================================================
--- trunk/sources/editor/editorcommands.cpp 2013-08-07 12:01:05 UTC (rev 2418)
+++ trunk/sources/editor/editorcommands.cpp 2013-08-08 19:58:15 UTC (rev 2419)
@@ -157,7 +157,7 @@
editor_view_ -> offset_paste_count_ = old_offset_paste_count_;
editor_view_ -> start_top_left_corner_ = old_start_top_left_corner_;
}
- editor_view_ -> adjustSceneRect();
+ editor_view_ -> zoomFit();
}
/// refait le coller
@@ -176,7 +176,7 @@
}
}
editor_scene_ -> slot_select(content_);
- editor_view_ -> adjustSceneRect();
+ editor_view_ -> zoomFit();
}
/**
Modified: trunk/sources/editor/elementscene.cpp
===================================================================
--- trunk/sources/editor/elementscene.cpp 2013-08-07 12:01:05 UTC (rev 2418)
+++ trunk/sources/editor/elementscene.cpp 2013-08-08 19:58:15 UTC (rev 2419)
@@ -497,24 +497,6 @@
}
/**
- @return le rectangle representant les limites de l'element.
- Ce rectangle a pour dimensions la taille de l'element et pour coin
- superieur gauche les coordonnees opposees du hotspot.
-*/
-QRectF ElementScene::borderRect() const {
- return(QRectF(-elementSceneGeometricRect().topLeft(), QSizeF(width(), height())));
-}
-
-/**
- @return un rectangle englobant toutes les parties ainsi que le
- "bounding rect" de l'element
-*/
-QRectF ElementScene::sceneContent() const {
- qreal adjustment = 5.0;
- return(elementContentBoundingRect(items()).unite(borderRect()).adjusted(-adjustment, -adjustment, adjustment, adjustment));
-}
-
-/**
@return the minimum, margin-less rectangle the element can fit into, in scene
coordinates. It is different from itemsBoundingRect() because it is not supposed
to imply any margin.
@@ -532,15 +514,6 @@
}
/**
- @return true si toutes les parties graphiques composant l'element sont
- integralement contenues dans le rectangle representant les limites de
- l'element.
-*/
-bool ElementScene::borderContainsEveryParts() const {
- return(borderRect().contains(elementContentBoundingRect(items())));
-}
-
-/**
@return true si l'element comporte au moins une borne, false s'il n'en a
aucune.
*/
Modified: trunk/sources/editor/elementscene.h
===================================================================
--- trunk/sources/editor/elementscene.h 2013-08-07 12:01:05 UTC (rev 2418)
+++ trunk/sources/editor/elementscene.h 2013-08-08 19:58:15 UTC (rev 2419)
@@ -129,10 +129,7 @@
virtual QList<QGraphicsItem *> zItems(ItemOptions options = ItemOptions(SortByZValue | IncludeTerminals | SelectedOrNot)) const;
virtual ElementContent selectedContent() const;
virtual void getPasteArea(const QRectF &);
- QRectF borderRect() const;
- QRectF sceneContent() const;
QRectF elementSceneGeometricRect () const;
- bool borderContainsEveryParts() const;
bool containsTerminals() const;
QUndoStack &undoStack();
QGIManager &qgiManager();
Modified: trunk/sources/editor/elementview.cpp
===================================================================
--- trunk/sources/editor/elementview.cpp 2013-08-07 12:01:05 UTC (rev 2418)
+++ trunk/sources/editor/elementview.cpp 2013-08-08 19:58:15 UTC (rev 2419)
@@ -114,7 +114,7 @@
le zoom est reinitialise
*/
void ElementView::zoomFit() {
- adjustSceneRect();
+ resetSceneRect();
fitInView(sceneRect(), Qt::KeepAspectRatio);
}
@@ -122,26 +122,33 @@
Reinitialise le zoom
*/
void ElementView::zoomReset() {
- adjustSceneRect();
+ resetSceneRect();
resetMatrix();
scale(4.0, 4.0);
}
/**
- Ajuste le sceneRect (zone du schema visualisee par l'ElementView) afin que
- celui inclut a la fois les parties dans et en dehors du cadre et le cadre
- lui-meme.
+ Ajuste le sceneRect (zone du schéma visualisée par l'ElementView) afin que
+ celui-ci inclut à la fois les primitives de l'élément ainsi que le viewport
+ de la scène avec une marge de 1/4 d'elle-même.
*/
void ElementView::adjustSceneRect() {
- QRectF old_scene_rect = scene_ -> sceneRect();
- QRectF new_scene_rect = scene_ -> sceneContent();
- setSceneRect(new_scene_rect);
-
- // met a jour la scene
- scene_ -> update(old_scene_rect.united(new_scene_rect));
+ QRectF esgr = scene_ -> elementSceneGeometricRect();
+ QRectF vpbr = mapToScene(this -> viewport() -> rect()).boundingRect();
+ QRectF new_scene_rect = vpbr.adjusted(-vpbr.height()/4, -vpbr.width()/4, vpbr.height()/4, vpbr.width()/4);
+ setSceneRect(new_scene_rect.united(esgr));
}
/**
+ * @brief ElementView::resetSceneRect
+ * reset le sceneRect (zone du schéma visualisée par l'ElementView) afin que
+ * celui-ci inclut uniquement les primitives de l'élément dessiné.
+ */
+void ElementView::resetSceneRect() {
+ setSceneRect(scene_ -> elementSceneGeometricRect());
+}
+
+/**
Gere le fait de couper la selection = l'exporter en XML dans le
presse-papier puis la supprimer.
*/
@@ -353,6 +360,7 @@
QPointF move = reference_view_ - mapToScene(e -> pos());
this -> centerOn(center_view_ + move);
center_view_ = mapToScene(this -> viewport() -> rect()).boundingRect().center();
+ adjustSceneRect();
return;
}
QGraphicsView::mouseMoveEvent(e);
Modified: trunk/sources/editor/elementview.h
===================================================================
--- trunk/sources/editor/elementview.h 2013-08-07 12:01:05 UTC (rev 2418)
+++ trunk/sources/editor/elementview.h 2013-08-08 19:58:15 UTC (rev 2419)
@@ -59,6 +59,7 @@
void zoomFit();
void zoomReset();
void adjustSceneRect();
+ void resetSceneRect ();
void cut();
void copy();
void paste();