| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| |
|
| | #include "lc_snapmanager.h" |
| |
|
| | #include "qg_snaptoolbar.h" |
| | #include "rs_debug.h" |
| | #include "rs_graphicview.h" |
| | #include "rs_snapper.h" |
| |
|
| |
|
| | LC_SnapManager::LC_SnapManager(QG_SnapToolBar* snapToolbar):m_snapToolbar{snapToolbar} { |
| | } |
| |
|
| | void LC_SnapManager::setSnaps(RS_SnapMode const& s) { |
| | if (m_snapToolbar) { |
| | m_snapToolbar->setSnaps(s); |
| | } |
| | else { |
| | RS_DEBUG->print("QG_ActionHandler::slotSetSnaps(): snapToolBar is nullptr"); |
| | } |
| | if (m_view != nullptr) { |
| | m_view->setDefaultSnapMode(s); |
| | } |
| |
|
| | if (m_inTempSnapFreeMode) { |
| | if (RS_SnapMode::toInt(s) != 0) { |
| | m_inTempSnapFreeMode = false; |
| | } |
| | } |
| |
|
| |
|
| | RS_DEBUG->print("QG_ActionHandler::slotSetSnaps(): ok"); |
| | } |
| |
|
| | bool LC_SnapManager::tryToProcessSnapActions(RS2::ActionType type) { |
| | switch (type) { |
| | case RS2::ActionSnapCenter: |
| | toggleSnapCenter(); |
| | return true; |
| | case RS2::ActionSnapDist: |
| | toggleSnapDist(); |
| | return true; |
| | case RS2::ActionSnapEndpoint: |
| | toggleSnapEndpoint(); |
| | return true; |
| | case RS2::ActionSnapGrid: |
| | toggleSnapGrid(); |
| | return true; |
| | case RS2::ActionSnapIntersection: |
| | toggleSnapIntersection(); |
| | return true; |
| | case RS2::ActionSnapMiddle: |
| | toggleSnapMiddle(); |
| | return true; |
| | case RS2::ActionSnapOnEntity: |
| | toggleSnapOnEntity(); |
| | return true; |
| | case RS2::ActionRestrictNothing: |
| | restrictNothing(); |
| | return true; |
| | case RS2::ActionRestrictOrthogonal: |
| | restrictOrthogonal(); |
| | return true; |
| | case RS2::ActionRestrictHorizontal: |
| | restrictHorizontal(); |
| | return true; |
| | case RS2::ActionRestrictVertical: |
| | restrictVertical(); |
| | return true; |
| | default: |
| | return false; |
| | } |
| | } |
| |
|
| | void LC_SnapManager::toggleSnapFree() { |
| | auto s = getSnaps(); |
| | s.snapFree = !s.snapFree; |
| | setSnaps(s); |
| | } |
| |
|
| | bool LC_SnapManager::toggleTemporarySnapFree() { |
| | if (m_inTempSnapFreeMode) { |
| | m_inTempSnapFreeMode = false; |
| | setSnaps(m_savedSnapMode); |
| | } |
| | else { |
| | m_savedSnapMode = getSnaps(); |
| | m_inTempSnapFreeMode = true; |
| | setSnaps(RS_SnapMode()); |
| | } |
| | return m_inTempSnapFreeMode; |
| | } |
| |
|
| | void LC_SnapManager::toggleSnapGrid() { |
| | auto s = getSnaps(); |
| | s.snapGrid = !s.snapGrid; |
| | setSnaps(s); |
| | } |
| |
|
| | void LC_SnapManager::toggleSnapEndpoint() { |
| | auto s = getSnaps(); |
| | s.snapEndpoint = !s.snapEndpoint; |
| | setSnaps(s); |
| | } |
| |
|
| | void LC_SnapManager::toggleSnapOnEntity() { |
| | auto s = getSnaps(); |
| | s.snapOnEntity = !s.snapOnEntity; |
| | setSnaps(s); |
| | } |
| |
|
| | void LC_SnapManager::toggleSnapCenter() { |
| | auto s = getSnaps(); |
| | s.snapCenter = !s.snapCenter; |
| | setSnaps(s); |
| | } |
| |
|
| | void LC_SnapManager::toggleSnapMiddle() { |
| | RS_SnapMode s = getSnaps(); |
| | s.snapMiddle = !s.snapMiddle; |
| | setSnaps(s); |
| | } |
| |
|
| | void LC_SnapManager::toggleSnapDist() { |
| | RS_SnapMode s = getSnaps(); |
| | s.snapDistance = !s.snapDistance; |
| | setSnaps(s); |
| | } |
| |
|
| | void LC_SnapManager::toggleSnapIntersection() { |
| | RS_SnapMode s = getSnaps(); |
| | s.snapIntersection = !s.snapIntersection; |
| | setSnaps(s); |
| | } |
| |
|
| | RS_SnapMode LC_SnapManager::getSnaps() const { |
| | if (m_snapToolbar != nullptr) { |
| | return m_snapToolbar->getSnaps(); |
| | } |
| | |
| | return RS_SnapMode(); |
| | } |
| |
|
| | void LC_SnapManager::disableSnaps() { |
| | setSnaps(RS_SnapMode()); |
| | } |
| |
|
| | void LC_SnapManager::setSnapRestriction(RS2::SnapRestriction restriction) { |
| | RS_SnapMode s = getSnaps(); |
| | s.restriction = restriction; |
| | setSnaps(s); |
| | } |
| |
|
| | void LC_SnapManager::restrictNothing() { |
| | setSnapRestriction(RS2::RestrictNothing); |
| | } |
| |
|
| | void LC_SnapManager::restrictOrthogonal() { |
| | setSnapRestriction(RS2::RestrictOrthogonal); |
| | } |
| |
|
| | void LC_SnapManager::restrictHorizontal() { |
| | setSnapRestriction(RS2::RestrictHorizontal); |
| | } |
| |
|
| | void LC_SnapManager::restrictVertical() { |
| | setSnapRestriction(RS2::RestrictVertical); |
| | } |
| |
|
| | |
| | RS2::SnapRestriction LC_SnapManager::getSnapRestriction() const { |
| | return getSnaps().restriction; |
| | } |
| |
|
| | void LC_SnapManager::setGraphicView(RS_GraphicView* gview) { |
| | m_view = gview; |
| | } |
| |
|
| | void LC_SnapManager::setRelativeZeroLock(bool on) const { |
| | if (m_snapToolbar) { |
| | m_snapToolbar->setLockedRelativeZero(on); |
| | } |
| | } |
| |
|