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