Skip to content

Commit

Permalink
#351 - Fix snapping logic
Browse files Browse the repository at this point in the history
  • Loading branch information
NathanW2 committed Nov 20, 2017
1 parent 06c3173 commit 7768713
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 11 deletions.
7 changes: 7 additions & 0 deletions src/roam/maptools/maptools.py
Original file line number Diff line number Diff line change
Expand Up @@ -266,6 +266,13 @@ def keyPressEvent(self, event):
self.reset()
if event.key() == Qt.Key_S:
self.toggle_snapping()
RoamEvents.snappingChanged.emit(self.snapping)

def setSnapping(self, snapping):
self.snapping = snapping

def toggle_snapping(self):
self.snapping = not self.snapping

def selection_updated(self, *args):
if self.editmode:
Expand Down
23 changes: 12 additions & 11 deletions src/roam/mapwidget.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,9 +39,6 @@
PanTool = QgsMapToolPan


snapping = True


class SnappingUtils(QgsMapCanvasSnappingUtils):
def prepareIndexStarting(self, count):
print count
Expand Down Expand Up @@ -322,6 +319,7 @@ class MapWidget(Ui_CanvasWidget, QMainWindow):
def __init__(self, parent=None):
super(MapWidget, self).__init__(parent)
self.setupUi(self)
self.snapping = True

icon = roam_style.iconsize()
self.projecttoolbar.setIconSize(QSize(icon, icon))
Expand All @@ -347,9 +345,9 @@ def __init__(self, parent=None):
self.canvas.enableAntiAliasing(True)
self.canvas.setWheelAction(QgsMapCanvas.WheelZoomToMouseCursor)

self.snapping = SnappingUtils(self.canvas, self)
self.canvas.setSnappingUtils(self.snapping)
QgsProject.instance().readProject.connect(self.snapping.readConfigFromProject)
self.snappingutils = SnappingUtils(self.canvas, self)
self.canvas.setSnappingUtils(self.snappingutils)
QgsProject.instance().readProject.connect(self.snappingutils.readConfigFromProject)

if hasattr(self.canvas, 'setParallelRenderingEnabled'):
threadcount = QThread.idealThreadCount()
Expand Down Expand Up @@ -504,10 +502,13 @@ def toggle_snapping(self):
"""
Toggle snapping on or off.
"""
global snapping
snap = not snapping
snapping = snap
RoamEvents.snappingChanged.emit(snapping)
self.snapping = not self.snapping
try:
self.canvas.mapTool().toggle_snapping()
except AttributeError:
pass

RoamEvents.snappingChanged.emit(self.snapping)

def selectscale(self):
"""
Expand Down Expand Up @@ -845,7 +846,7 @@ def setMapTool(self, tool, *args):
return

if hasattr(tool, "setSnapping"):
tool.setSnapping(snapping)
tool.setSnapping(self.snapping)
self.canvas.setMapTool(tool)

def connectButtons(self):
Expand Down

0 comments on commit 7768713

Please sign in to comment.