| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
|
|
| #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); |
| } |
| } |
|
|