def canvasMoveEvent(self, e):
     self.rubberBandPt.reset(QGis.Point)
     snapPoint = QgisHelper.snapPoint(e.pos(), self.mSnapper,
                                      define._canvas, True)
     if snapPoint != None:
         self.rubberBandPt.addPoint(snapPoint)
         self.rubberBandPt.show()
     if self.isDrawing:
         if snapPoint == None:
             self.endPoint = self.toMapCoordinates(e.pos())
         else:
             self.endPoint = snapPoint
         self.drawLine()
 def canvasReleaseEvent(self, e):
     if ( e.button() == Qt.RightButton ):
         self.emit(SIGNAL("resultLineCreate"), self.rubberBand.asGeometry())
         self.reset()
         self.isDrawing = False
     else:
         self.rubberBandPt.reset(QGis.Point)
         snapPoint = QgisHelper.snapPoint(e.pos(), self.mSnapper, define._canvas, True)            
         if self.startPoint == None:
             self.rubberBand.reset(QGis.Line)
             if snapPoint == None:
                 self.startPoint = self.toMapCoordinates(e.pos())
             else:
                 self.startPoint = snapPoint
             self.rubberBand.addPoint(self.startPoint)
             self.isDrawing = True
         else:
             if snapPoint == None:
                 self.endPoint = self.toMapCoordinates(e.pos())
             else:
                 self.endPoint = snapPoint
             self.rubberBand.addPoint(self.endPoint)
             self.startPoint = self.endPoint
    def canvasPressEvent(self, e):
        #self.isEmittingPoint = True
        self.rubberBandPt.reset(QGis.Point)
        snapPoint = QgisHelper.snapPoint(e.pos(), self.mSnapper,
                                         define._canvas, True)
        if self.isDrawing == False:
            if snapPoint == None:
                self.startPoint = self.toMapCoordinates(e.pos())
            else:
                self.startPoint = snapPoint
            self.isDrawing = True
        else:
            self.isDrawing = False
            if snapPoint == None:
                self.endPoint = self.toMapCoordinates(e.pos())
            else:
                self.endPoint = snapPoint
            self.drawLine()
            self.reset()
            startPointPlan = None
            endPointPlan = None
            startPointGeodetic = None
            endPointGeodetic = None
            unitDefault = None
            try:
                if self.txtBearingGeodetic == None:
                    startPointPlan = self.startPoint
                    endPointPlan = self.endPoint
                else:
                    if define._units == QGis.Meters:
                        startPointPlan = self.startPoint
                        endPointPlan = self.endPoint

                        startPointGeodetic = QgisHelper.CrsTransformPoint(
                            startPointPlan.x(), startPointPlan.y(),
                            define._xyCrs, define._latLonCrs)
                        endPointGeodetic = QgisHelper.CrsTransformPoint(
                            endPointPlan.x(), endPointPlan.y(), define._xyCrs,
                            define._latLonCrs)

                    else:
                        startPointGeodetic = self.startPoint
                        endPointGeodetic = self.endPoint

                        startPointPlan = QgisHelper.CrsTransformPoint(
                            startPointGeodetic.x(), startPointGeodetic.y(),
                            define._latLonCrs, define._xyCrs)
                        endPointPlan = QgisHelper.CrsTransformPoint(
                            endPointGeodetic.x(), endPointGeodetic.y(),
                            define._latLonCrs, define._xyCrs)
                    unitDefault = QGis.Meters

                pass
            except:
                return

            if isinstance(self.txtBearing, NumberBoxPanel):
                al = MathHelper.getBearing(startPointPlan, endPointPlan,
                                           unitDefault)
                al = Unit.ConvertRadToDeg(al)
                self.txtBearing.Value = round(al, 4)
            else:
                al = MathHelper.getBearing(startPointPlan, endPointPlan,
                                           unitDefault)
                al = Unit.ConvertRadToDeg(al)
                self.txtBearing.setText(str(round(al, 4)))

            if self.txtBearingGeodetic != None:
                al = MathHelper.getBearing(startPointGeodetic,
                                           endPointGeodetic,
                                           QGis.DecimalDegrees)
                al = Unit.ConvertRadToDeg(al)
                self.txtBearingGeodetic.Value = round(al, 4)