#ifndef CGAL_QT_REGULAR_TRIANGULATION_REMOVE_VERTEX_H #define CGAL_QT_REGULAR_TRIANGULATION_REMOVE_VERTEX_H #include #include #include #include #include namespace CGAL { namespace Qt { template class RegularTriangulationRemoveVertex : public GraphicsViewInput { public: typedef typename DT::Vertex_handle Vertex_handle; RegularTriangulationRemoveVertex(DT * dt_, QObject* parent); protected: void mousePressEvent(QGraphicsSceneMouseEvent *event); bool eventFilter(QObject *obj, QEvent *event); DT * dt; }; template RegularTriangulationRemoveVertex::RegularTriangulationRemoveVertex(T * dt_, QObject* parent) : GraphicsViewInput(parent), dt(dt_) {} template void RegularTriangulationRemoveVertex::mousePressEvent(QGraphicsSceneMouseEvent *event) { if((event->modifiers() & ::Qt::ShiftModifier) && (! (event->modifiers() & ::Qt::ControlModifier))){ if(dt->number_of_vertices() == 0){ dt->clear(); }else { typedef typename Kernel_traits::Kernel K; Converter convert; typename T::Vertex_handle selected_vertex = dt->nearest_power_vertex(convert(event->scenePos())); dt->remove(selected_vertex); } Q_EMIT( modelChanged()); } } template bool RegularTriangulationRemoveVertex::eventFilter(QObject *obj, QEvent *event) { if (event->type() == QEvent::GraphicsSceneMousePress) { QGraphicsSceneMouseEvent *mouseEvent = static_cast(event); mousePressEvent(mouseEvent); return false; } else{ // standard event processing return QObject::eventFilter(obj, event); } } } // namespace Qt } // namespace CGAL #endif // CGAL_QT_REGULAR_TRIANGULATION_REMOVE_VERTEX_H