I want to execute the merge(self,aLayer) method after clicking with the tool I've created, i.e. after the mouse click I want the control to come to the main.py module how can I do that using Python programming?
I have two files one is mouseevent.py and the other one main.py.
class MouseClick(QgsMapTool):
canvasDoubleClicked = QtCore.pyqtSignal(object, object)
def __init__(self, canvas,layer,Vertex_list,mergeDlg):
QgsMapTool.__init__(self, canvas)
self.canvas = canvas
self.layer=layer
self.Vertex_list=Vertex_list
self.mergeDlg=mergeDlg
self.rb = QgsRubberBand(self.canvas, QGis.Line)
self.rb.setColor(QColor(255, 0, 0))
self.rb.setWidth(2)
self.rb.reset()
def canvasPressEvent(self, event):
if event.button() == 1:
print "helo"
x = event.pos().x()
y = event.pos().y()
Lpoint = self.canvas.getCoordinateTransform().toMapCoordinates(x, y)
print 'Then Left points are',Lpoint
def canvasMoveEvent(self, event):
pass
def canvasReleaseEvent(self, event):
#Get the click
if event.button() == 2:
print "hello right"
x = event.pos().x()
y = event.pos().y()
Rpoint = self.canvas.getCoordinateTransform().toMapCoordinates(x, y)
print 'Then Right points are',Rpoint
self.Vertex_list.append(Rpoint)
print 'The list after right click is',self.Vertex_list
def canvasSelectionChanged(self,layer):
pass
def activate(self):
pass
def deactivate(self):
pass
def isZoomTool(self):
return False
def isTransient(self):
return False
def isEditTool(self):
return True
Main.py:
def merge(self,aLayer):
canvas=qgis.utils.iface.mapCanvas()
aLayer=canvas.currentLayer()
aLayer.removeSelection()
selection=aLayer.selectedFeatures()
print 'length is',len(selection)
def run(self):
"""Run method that performs all the real work"""
mergeDlg = MergeDialog()
Vertex_list = []
global Vertex_list
MergeByFreeHand.readConfigfile(self)
AreaList=[]
Value=99
canvas=qgis.utils.iface.mapCanvas()
aLayer=canvas.currentLayer()
aLayer.removeSelection()
qgis.utils.iface.setActiveLayer(aLayer)
count=0
global count
tool = MouseClick(canvas,aLayer,Vertex_list,mergeDlg,count)
qgis.utils.iface.mapCanvas().setMapTool(tool)