36 #include "../../../../color/RGBAColor.h"
46 #include <QMouseEvent>
47 #include <QWheelEvent>
50 #include <QGraphicsView>
52 #include <QGraphicsItem>
56 #include <QFileDialog>
57 #include <QMessageBox>
61 #define _psPointInMM 0.352777778 //<! 1 PostScript point in millimeters
62 #define _inchInPSPoints 72 //<! 1 Inch in PostScript point
63 #define _inchInMillimeters 25.4 //<! 1 Inch in millimeters
66 QGraphicsView(new QGraphicsScene, widget),
68 m_visualizationArea(0),
69 m_lineIntersectHrz(0),
74 setDragMode(RubberBandDrag);
82 if(m_visualizationArea)
84 delete m_visualizationArea;
85 m_visualizationArea = 0;
88 if(m_lineIntersectHrz)
90 delete m_lineIntersectHrz;
91 m_lineIntersectHrz = 0;
94 if(m_lineIntersectVrt)
96 delete m_lineIntersectVrt;
97 m_lineIntersectVrt = 0;
103 QGraphicsView::mousePressEvent(event);
105 QPointF scenePos = mapToScene(event->pos());
117 QGraphicsView::mouseMoveEvent(event);
124 QPointF scenePos = mapToScene(event->pos());
126 emit changeSceneCoordMouse(scenePos);
128 m_lineIntersectHrz->setP1(QPointF(sc->sceneRect().topLeft().x(), scenePos.y()));
129 m_lineIntersectHrz->setP2(scenePos);
131 m_lineIntersectVrt->setP1(QPointF(scenePos.x(), sc->sceneRect().topLeft().y()));
132 m_lineIntersectVrt->setP2(scenePos);
137 QGraphicsView::wheelEvent(event);
139 scaleView(pow((
double)2, -event->delta() / 240.0));
145 double dpiX = this->logicalDpiX();
146 double dpiY = this->logicalDpiY();
147 double scaleX = (dpiX / 25.4) * scaleFactor;
148 double scaleY = (-dpiY / 25.4) * scaleFactor;
150 qreal factor = QTransform().scale(scaleX, scaleY).mapRect(QRectF(0, 0, 1, 1)).width();
152 if (factor < 0.5 || factor > 10)
155 scale(scaleFactor, scaleFactor);
168 if(keyEvent->key() == Qt::Key_P)
173 else if(keyEvent->key() == Qt::Key_E)
177 else if(keyEvent->key() == Qt::Key_I)
181 else if(keyEvent->key() == Qt::Key_G)
185 else if(keyEvent->key() == Qt::Key_D)
189 else if(keyEvent->key() == Qt::Key_Delete)
194 QGraphicsView::keyPressEvent(keyEvent);
199 connect(scene(), SIGNAL(selectionChanged()),
this, SLOT(onSelectionChanged()));
200 connect(scene(), SIGNAL(addItemFinalized()),
this, SLOT(onAddItemFinalized()));
202 Scene* lScene =
dynamic_cast<Scene*
>(scene());
207 lScene->
init(widthMM(), heightMM());
217 setTransformationAnchor(QGraphicsView::NoAnchor);
218 centerOn(QPointF(llx, ury));
224 connect(m_outsideArea->getToolbarOutside(), SIGNAL(changeContext(
bool)),
this, SLOT(onToolbarChangeContext(
bool)));
226 connect(m_outsideArea, SIGNAL(changeMenuContext(
bool)),
this, SLOT(onMainMenuChangeContext(
bool)));
229 m_visualizationArea->build();
234 scene()->setBackgroundBrush(QBrush(QColor(105,105,030)));
235 setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
236 setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
241 QGraphicsView::resizeEvent(event);
246 if(metric == PdmHeightMM)
251 return QGraphicsView::metric(metric);
256 QGraphicsView::paintEvent(event);
261 QGraphicsView::hideEvent(event);
265 m_outsideArea->closeAllDocks();
266 m_outsideArea->closeMainMenu();
272 QGraphicsView::closeEvent(event);
276 m_outsideArea->closeAllDocks();
277 m_outsideArea->closeMainMenu();
283 QGraphicsView::showEvent(event);
287 m_outsideArea->openAllDocks();
288 m_outsideArea->openMainMenu();
294 outsideAreaChangeContext(change);
299 QList<QGraphicsItem*> graphicsItems = scene()->selectedItems();
300 QList<QGraphicsItem*> allItems = scene()->items();
302 if(m_outsideArea->getPropertiesOutside())
303 m_outsideArea->getPropertiesOutside()->itemsSelected(graphicsItems, allItems);
308 QList<QGraphicsItem*> graphicsItems = scene()->selectedItems();
310 if(m_outsideArea->getObjectInspectorOutside())
311 m_outsideArea->getObjectInspectorOutside()->itemsInspector(graphicsItems);
316 m_outsideArea = outsideArea;
322 QList<QGraphicsItem*> graphicsItems = this->scene()->selectedItems();
342 group->setHandlesChildEvents(
true);
349 QList<QGraphicsItem*> graphicsItems = this->scene()->selectedItems();
351 foreach( QGraphicsItem *item, graphicsItems)
355 QGraphicsItemGroup* group =
dynamic_cast<QGraphicsItemGroup*
>(item);
371 setDragMode(RubberBandDrag);
373 setInteractive(
true);
374 setCursor(Qt::ArrowCursor);
379 outsideAreaChangeContext(change);
393 QList<QGraphicsItem*> graphicsItems;
404 m_visualizationArea->build();
405 resetDefaultConfig();
411 resetDefaultConfig();
417 resetDefaultConfig();
422 graphicsItems = sc->selectedItems();
425 resetDefaultConfig();
435 graphicsItems = sc->selectedItems();
438 resetDefaultConfig();
448 graphicsItems = sc->selectedItems();
451 resetDefaultConfig();
463 setDragMode(ScrollHandDrag);
465 setInteractive(
false);
471 resetDefaultConfig();
477 resetDefaultConfig();
492 resetDefaultConfig();
void hideEvent(QHideEvent *event)
virtual void mouseMoveEvent(QMouseEvent *event)
virtual void printPreview(bool isPdf=false)
virtual void savePaperAsImage()
virtual void buildTemplate(VisualizationArea *vzArea)
virtual void resizeEvent(QResizeEvent *event)
virtual te::gm::Envelope * getWorldBox() const
virtual void onAddItemFinalized()
virtual void resetDefaultConfig()
An utility struct for representing 2D coordinates.
virtual void deleteItems()
const double & getUpperRightY() const
It returns a constant refernce to the x coordinate of the upper right corner.
virtual void showEvent(QShowEvent *event)
virtual void createItem(const te::gm::Coord2D &coord)
LayoutMode
Enum LayoutMode. This is the enumeration of the components types.
View(QWidget *widget=(QWidget *) 0)
virtual void onMainMenuChangeContext(bool change)
virtual int metric(PaintDeviceMetric metric) const
virtual void setCurrentToolInSelectedMapItems(LayoutMode mode)
QGraphicsItemGroup * createItemGroup(const QList< QGraphicsItem * > &items)
An Envelope defines a 2D rectangular region.
virtual void createItemGroup()
virtual void outsideAreaChangeContext(bool change)
virtual void redrawItems()
virtual void onToolbarChangeContext(bool change)
virtual void keyPressEvent(QKeyEvent *keyEvent)
void wheelEvent(QWheelEvent *event)
virtual void init(double widthMM, double heightMM)
void setLineIntersectionHzr(QLineF *line)
virtual void mousePressEvent(QMouseEvent *event)
TELAYOUTEXPORT std::vector< MapItem * > getMapItemList(QList< QGraphicsItem * > graphicsItems)
void setOutsideArea(OutsideArea *outsideArea)
void setLineIntersectionVrt(QLineF *line)
virtual bool exportPropsAsJSON()
void scaleView(qreal scaleFactor)
const double & getLowerLeftX() const
It returns a constant reference to the x coordinate of the lower left corner.
void closeEvent(QCloseEvent *event)
virtual void paintEvent(QPaintEvent *event)
virtual void savePaperAsPDF()
virtual void redraw(const double &scaleFactor=1.)
static Context * getInstance()
This function is called to create an instance of the class.
virtual QTransform getMatrixViewScene()
void destroyItemGroup(QGraphicsItemGroup *group)
virtual void onSelectionChanged()
virtual void destroyItemGroup()
QLineF * m_lineIntersectHrz
QLineF * m_lineIntersectVrt