def onTextHexChanged( self, value ): if self.updating: return hexText = value color = QColor( value ) color.setAlphaF( self.currentColor.alphaF() ) self.setColor( color ) self.updateColorPlane()
def __init__(self, i, mu1, mu2, sigma1, sigma2, phi, color): OWPlotItem.__init__(self) self.outer_box = QGraphicsPolygonItem(self) self.inner_box = QGraphicsPolygonItem(self) self.i = i self.mu1 = mu1 self.mu2 = mu2 self.sigma1 = sigma1 self.sigma2 = sigma2 self.phi = phi self.twosigmapolygon = QPolygonF([ QPointF(i, mu1 - sigma1), QPointF(i, mu1 + sigma1), QPointF(i + 1, mu2 + sigma2), QPointF(i + 1, mu2 - sigma2), QPointF(i, mu1 - sigma1) ]) self.sigmapolygon = QPolygonF([ QPointF(i, mu1 - .5 * sigma1), QPointF(i, mu1 + .5 * sigma1), QPointF(i + 1, mu2 + .5 * sigma2), QPointF(i + 1, mu2 - .5 * sigma2), QPointF(i, mu1 - .5 * sigma1) ]) if isinstance(color, tuple): color = QColor(*color) color.setAlphaF(.3) self.outer_box.setBrush(color) self.outer_box.setPen(QColor(0, 0, 0, 0)) self.inner_box.setBrush(color) self.inner_box.setPen(color)
def makeBrush( **option ): brush = QtGui.QBrush() brush.setStyle( option.get( 'style', Qt.SolidPattern ) ) color = QColor( option.get( 'color', '#ffffff' ) ) color.setAlphaF( option.get( 'alpha', 1 ) ) brush.setColor( color ) return brush
def paintEvent(self, event): if not self.displayedWhenStopped and not self.isAnimated(): return width = min(self.width(), self.height()) p = QPainter(self) p.setRenderHint(QPainter.Antialiasing) outerRadius = (width-1) * 0.5 innerRadius = (width-1) * 0.5 * 0.38 capsuleHeight = outerRadius - innerRadius capsuleWidth = capsuleHeight * 0.23 if width > 32 else capsuleHeight * 0.35 capsuleRadius = capsuleWidth / 2 for i in range(12): color = QColor(self.color) color.setAlphaF(float(1.0 - float(i / 12.0))) p.setPen(Qt.NoPen) p.setBrush(color) p.save() p.translate(self.rect().center()) p.rotate(self.angle - float(i * 30.0)) p.drawRoundedRect(-capsuleWidth * 0.5,\ -(innerRadius + capsuleHeight),\ capsuleWidth,\ capsuleHeight,\ capsuleRadius,\ capsuleRadius) p.restore()
def _get_color(self, value, asQColor=False, alpha=0.5): ''' Get interpolated color from value ''' if not len(self.vcolors): return (0., 0., 0., self.alpha) elif len(self.vcolors) == 1: return self.vcolors[0][1] elif value < 0.0: return self.vcolors[0][1] elif value > 1.0: return self.vcolors[-1][1] sup_color = self.vcolors[0] inf_color = self.vcolors[-1] for i in xrange(len(self.vcolors) - 1): if value < self.vcolors[i + 1][0]: inf_color = self.vcolors[i] sup_color = self.vcolors[i + 1] break r = (value - inf_color[0]) / (sup_color[0] - inf_color[0]) if not asQColor: return (sup_color[1][0] * r + inf_color[1][0] * (1 - r), sup_color[1][1] * r + inf_color[1][1] * (1 - r), sup_color[1][2] * r + inf_color[1][2] * (1 - r)) from PyQt4.QtGui import QColor q = QColor() q.setRedF(sup_color[1][0] * r + inf_color[1][0] * (1 - r)) q.setGreen(sup_color[1][1] * r + inf_color[1][1] * (1 - r)) q.setBlueF(sup_color[1][2] * r + inf_color[1][2] * (1 - r)) q.setAlphaF(alpha) return q
def _get_color (self, value, asQColor=False, alpha=0.5): ''' Get interpolated color from value ''' if not len(self.vcolors): return (0.,0.,0.,self.alpha) elif len(self.vcolors) == 1: return self.vcolors[0][1] elif value < 0.0: return self.vcolors[0][1] elif value > 1.0: return self.vcolors[-1][1] sup_color = self.vcolors[0] inf_color = self.vcolors[-1] for i in xrange (len(self.vcolors)-1): if value < self.vcolors[i+1][0]: inf_color = self.vcolors[i] sup_color = self.vcolors[i+1] break r = (value-inf_color[0])/(sup_color[0]-inf_color[0]) if not asQColor: return (sup_color[1][0]*r + inf_color[1][0]*(1-r), sup_color[1][1]*r + inf_color[1][1]*(1-r), sup_color[1][2]*r + inf_color[1][2]*(1-r)) from PyQt4.QtGui import QColor q = QColor() q.setRedF(sup_color[1][0]*r + inf_color[1][0]*(1-r)) q.setGreen(sup_color[1][1]*r + inf_color[1][1]*(1-r)) q.setBlueF(sup_color[1][2]*r + inf_color[1][2]*(1-r)) q.setAlphaF(alpha) return q
def makeBrush(**option): brush = QtGui.QBrush() brush.setStyle(option.get('style', Qt.SolidPattern)) color = QColor(option.get('color', '#ffffff')) color.setAlphaF(option.get('alpha', 1)) brush.setColor(color) return brush
def paintEvent( self, event ): painter = QtGui.QPainter( self ) painter.setPen( Qt.NoPen ) w = self.width() h = self.height() painter.setBrush( self.originalColor ) painter.drawRect( 0, 0, w, h/2 ) cSolid = QColor( self.previewColor ) cSolid.setAlphaF( 1 ) #left 1/2 for solid color painter.setBrush( cSolid ) painter.drawRect( 0, h/2, w/2, h/2 + 1 ) #draw chekerGrid x0 = w/2 y0 = h/2 w2 = w/2 h2 = h/2 painter.setBrush( Qt.white ) painter.drawRect( x0, y0, w2, h2 ) painter.setBrush( QColor.fromRgbF( 0.5, 0.5, 0.5 ) ) for y in range( 4 ): for x in range( w2/10 ): if (x % 2) == (y % 2): painter.drawRect( x0 + x * 10, y0 + y * 10, 10, 10 ) #right 2/3 for color with alpha painter.setBrush( self.previewColor ) painter.drawRect( x0, y0, w2+1, h2 + 1 )
def makePen(**option): pen = QtGui.QPen() pen.setStyle(option.get('style', Qt.SolidLine)) color = QColor(option.get('color', '#ffffff')) color.setAlphaF(option.get('alpha', 1)) pen.setColor(color) pen.setWidth(option.get('width', .0)) return pen
def makePen( **option ): pen = QtGui.QPen() pen.setStyle( option.get( 'style', Qt.SolidLine ) ) color = QColor( option.get( 'color', '#ffffff' ) ) color.setAlphaF( option.get( 'alpha', 1 ) ) pen.setColor( color ) pen.setWidth( option.get( 'width', .0 ) ) return pen
def get_color(value, alpha=.2): """Return color depending on value type""" color = QColor() for typ in COLORS: if isinstance(value, typ): color = QColor(COLORS[typ]) color.setAlphaF(alpha) return color
def activate(self): """ When the action is selected """ QgsMapTool.activate(self) self.__rubber = QgsRubberBand(self.canvas(), QGis.Point) color = QColor("red") color.setAlphaF(0.78) self.__rubber.setColor(color) self.__rubber.setIcon(4) self.__rubber.setIconSize(20)
def __init__(self, points, rgb, alpha): self.points = points colour = QColor(rgb) self.red = colour.red() self.green = colour.green() self.blue = colour.blue() colour.setAlphaF(alpha) self.alpha = alpha self.rgba = colour.rgb() self.projected = []
def createRubberBand(self, geomType): settings = QSettings() rb = QgsRubberBand(self.canvas, geomType) rb.setWidth(settings.value('/qgis/digitizing/line_width', 1, type=int)) color = QColor(settings.value('/qgis/digitizing/line_color_red', 255, type=int), settings.value('/qgis/digitizing/line_color_green', 0, type=int), settings.value('/qgis/digitizing/line_color_blue', 0, type=int)) alpha = settings.value('/qgis/digitizing/line_color_alpha', 200, type=int) / 255.0 color.setAlphaF(alpha) rb.setColor(color) return rb
def activate(self): """ When the action is selected """ QgsMapTool.activate(self) self.__rubber = QgsRubberBand(self.canvas(), QGis.Polygon) color = QColor("red") color.setAlphaF(0.6) self.__rubber.setBorderColor(color) color = QColor("orange") color.setAlphaF(0.3) self.__rubber.setFillColor(color)
def data(self, index, role): # if role == Qt.BackgroundColorRole and ( index.column() == self.ColumnID.Fix or index.column() == self.ColumnID.FixIcon): row = index.row() value = self._elements[row] if value.isFixed: color = QColor(Qt.red) color.setAlphaF(0.5) return QVariant(color) if role == Qt.DisplayRole and index.column() == self.ColumnID.Text: row = index.row() value = self._elements[row] return value.density if role == Qt.DisplayRole and index.column() == self.ColumnID.Fix: row = index.row() value = self._elements[row] return value.fixvalue if role == Qt.DecorationRole and index.column() == self.ColumnID.Color: row = index.row() value = self._elements[row] pixmap = QPixmap(_NPIXELS, _NPIXELS) pixmap.fill(value.color) icon = QIcon(pixmap) return icon if role == Qt.DecorationRole and index.column( ) == self.ColumnID.FixIcon: row = index.row() value = self._elements[row] pixmap = QPixmap(_NPIXELS, _NPIXELS) if value.isFixed: iconpath = os.path.join( os.path.split(__file__)[0], 'icons/lock-edit-icon-32.png') else: iconpath = os.path.join( os.path.split(__file__)[0], 'icons/lock_open-32.png') pixmap.load(iconpath) icon = QIcon(pixmap) return icon return super(BoxListModel, self).data(index, role)
def data(self, index, role): # if role == Qt.BackgroundColorRole and (index.column() == self.ColumnID.Fix or index.column() == self.ColumnID.FixIcon): row = index.row() value = self._elements[row] if value.isFixed: color=QColor(Qt.red) color.setAlphaF(0.5) return QVariant(color) if role == Qt.DisplayRole and index.column() == self.ColumnID.Text: row = index.row() value = self._elements[row] return value.density if role == Qt.DisplayRole and index.column() == self.ColumnID.Fix: row = index.row() value = self._elements[row] return value.fixvalue if role == Qt.DecorationRole and index.column() == self.ColumnID.Color: row = index.row() value = self._elements[row] pixmap = QPixmap(_NPIXELS, _NPIXELS) pixmap.fill(value.color) icon = QIcon(pixmap) return icon if role == Qt.DecorationRole and index.column() == self.ColumnID.FixIcon: row = index.row() value = self._elements[row] pixmap = QPixmap(_NPIXELS,_NPIXELS) if value.isFixed: iconpath=os.path.join(os.path.split(__file__)[0], 'icons/lock-edit-icon-32.png') else: iconpath=os.path.join(os.path.split(__file__)[0], 'icons/lock_open-32.png') pixmap.load(iconpath) icon = QIcon(pixmap) return icon return super(BoxListModel,self).data(index, role)
def activate(self): """ When the action is selected """ QgsMapTool.activate(self) self.__rubber = QgsRubberBand(self.__canvas, QGis.Point) color = QColor("red") color.setAlphaF(0.78) self.__rubber.setColor(color) self.__rubber.setIcon(4) self.__rubber.setIconSize(20) self.__updateList() self.__canvas.layersChanged.connect(self.__updateList) QgsProject.instance().snapSettingsChanged.connect(self.__updateList)
def draw_group(self, i, nmu1, nmu2, nsigma1, nsigma2, phi, color): xs2s = [i, i, i + 1, i + 1, i] ys2s = [nmu1 - nsigma1, nmu1 + nsigma1, nmu2 + nsigma2, nmu2 - nsigma2, nmu1 - nsigma1] xs1s = xs2s ys1s = [nmu1 - .5 * nsigma1, nmu1 + .5 * nsigma1, nmu2 + .5 * nsigma2, nmu2 - .5 * nsigma2, nmu1 - .5 * nsigma1] if isinstance(color, tuple): color = QColor(*color) color.setAlphaF(.3) outercurve = PolygonCurve(QPen(QColor(0, 0, 0, 0)), QBrush(color), xData=xs2s, yData=ys2s) outercurve.attach(self) innercurve = PolygonCurve(QPen(color), QBrush(color), xData=xs1s, yData=ys1s) innercurve.attach(self)
def activate(self): """ When the action is selected """ QgsMapToolAdvancedDigitizing.activate(self) self.__updateList() self.__rubber = QgsRubberBand(self.canvas(), QGis.Point) color = QColor("red") color.setAlphaF(0.78) self.__rubber.setColor(color) self.__rubber.setIcon(4) self.__rubber.setIconSize(20) self.canvas().layersChanged.connect(self.__updateList) self.canvas().scaleChanged.connect(self.__updateList) self.setMode(self.CaptureLine)
def activate(self): """ When the action is selected """ QgsMapToolAdvancedDigitizing.activate(self) self.__updateList() self.__rubber = QgsRubberBand(self.canvas(), QGis.Point) color = QColor("red") color.setAlphaF(0.78) self.__rubber.setColor(color) self.__rubber.setIcon(4) self.__rubber.setWidth(2) self.__rubber.setIconSize(20) self.canvas().layersChanged.connect(self.__updateList) self.canvas().scaleChanged.connect(self.__updateList) self.setMode(self.CaptureLine)
def _createRubberBand(self, geometryType, moveBand=False): settings = QSettings() rb = QgsRubberBand(self.canvas(), geometryType) rb.setWidth(int(settings.value('/qgis/digitizing/line_width', 1))) color = QColor(int(settings.value('/qgis/digitizing/line_color_red', 255)), int(settings.value('/qgis/digitizing/line_color_green', 0)), int(settings.value('/qgis/digitizing/line_color_blue', 0))) myAlpha = int(settings.value('/qgis/digitizing/line_color_alpha', 200)) / 255.0 if (moveBand): myAlpha = myAlpha * float(settings.value('/qgis/digitizing/line_color_alpha_scale', 0.75)) rb.setLineStyle(Qt.DotLine) if (geometryType == QGis.Polygon): color.setAlphaF(myAlpha) color.setAlphaF(myAlpha) rb.setColor(color) rb.show() return rb
def activate(self): """ When the action is selected """ QgsMapTool.activate(self) self.__dockWdg = ProfileDockWidget(self.__iface) self.__iface.addDockWidget(Qt.BottomDockWidgetArea, self.__dockWdg) self.__dockWdg.closeSignal.connect(self.__closed) self.__rubberLine = QgsRubberBand(self.canvas(), QGis.Line) color = QColor("red") color.setAlphaF(0.78) self.__rubberLine.setColor(color) self.__rubberDots = QgsRubberBand(self.canvas(), QGis.Line) color = QColor("red") color.setAlphaF(0.78) self.__rubberDots.setColor(color) self.__rubberDots.setLineStyle(Qt.DotLine)
def activate(self): """ When the action is selected """ QgsMapTool.activate(self) self.__dockWdg = ProfileDockWidget(self.__iface) self.__iface.addDockWidget(Qt.BottomDockWidgetArea, self.__dockWdg) self.__dockWdg.closeSignal.connect(self.closed) self.__rubberSit = QgsRubberBand(self.__canvas, QGis.Point) self.__rubberDif = QgsRubberBand(self.__canvas, QGis.Point) color = QColor("red") color.setAlphaF(0.78) self.__rubberSit.setColor(color) self.__rubberSit.setIcon(4) self.__rubberSit.setIconSize(20) self.__rubberDif.setColor(color) self.__rubberDif.setIcon(2) self.__rubberDif.setIconSize(20)
def activate(self): """ When the action is selected """ QgsMapTool.activate(self) self.__dockWdg = ProfileDockWidget(self.__iface, self.__dockGeom) if self.__isfloating: self.__dockWdg.show() else: self.__iface.addDockWidget(Qt.BottomDockWidgetArea, self.__dockWdg) self.__dockWdg.closeSignal.connect(self.__closed) self.__rubberLine = QgsRubberBand(self.canvas(), QGis.Line) color = QColor("red") color.setAlphaF(0.78) self.__rubberLine.setColor(color) self.__rubberDots = QgsRubberBand(self.canvas(), QGis.Line) color = QColor("red") color.setAlphaF(0.78) self.__rubberDots.setColor(color) self.__rubberDots.setLineStyle(Qt.DotLine)
def activate(self): """ When the action is selected """ QgsMapTool.activate(self) self.__dockWdg = ProfileDockWidget(self.__iface, self.__dockGeom) if self.__isfloating: self.__dockWdg.show() else: self.__iface.addDockWidget(Qt.BottomDockWidgetArea, self.__dockWdg) self.__dockWdg.closeSignal.connect(self.__closed) self.__rubberSit = QgsRubberBand(self.canvas(), QGis.Point) self.__rubberDif = QgsRubberBand(self.canvas(), QGis.Point) color = QColor("red") color.setAlphaF(0.78) self.__rubberSit.setColor(color) self.__rubberSit.setIcon(4) self.__rubberSit.setIconSize(20) self.__rubberDif.setColor(color) self.__rubberDif.setIcon(2) self.__rubberDif.setIconSize(20)
def __onDstPreview(self): """ When the Preview button in Duplicate Distance Dialog is pushed """ if self.__rubberBand is not None: self.canvas().scene().removeItem(self.__rubberBand) self.__rubberBand = None if self.__dstDlg.distanceEdit().text() is not None: distance = float(self.__dstDlg.distanceEdit().text()) if self.__dstDlg.directionCheck().checkState(): distance = -distance if self.__layer.geometryType() == QGis.Polygon: self.__polygonPreview(distance) else: self.__linePreview(distance) color = QColor("red") color.setAlphaF(0.78) self.__rubberBand.setWidth(2) self.__rubberBand.setColor(color) self.__rubberBand.setLineStyle(Qt.DotLine) self.__rubberBand.show()
def paint(self, painter, option, widget): drawingRect = self.model.rect.adjusted(2, 2, -2, -2) painter.save() painter.setRenderHint(QPainter.Antialiasing, True) if self.isSelected(): pen = QPen(Qt.DashLine) pen.setWidth(2) pen.setColor(Qt.blue) else: pen = QPen(Qt.SolidLine) pen.setWidth(1) pen.setColor(Qt.gray) painter.setPen(pen) color = QColor(self.model.color) color.setAlphaF(self.model.accu) painter.setBrush(QBrush(color)) painter.drawRoundedRect(drawingRect, 5, 5) painter.setPen(Qt.SolidLine) painter.drawText(drawingRect, str(self.model.classid), QTextOption(Qt.AlignCenter)) painter.restore()
def get_bgcolor(self, index): """Background color depending on value""" if index.column() == 0: color = QColor(Qt.lightGray) color.setAlphaF(.05) elif index.column() < 3: color = QColor(Qt.lightGray) color.setAlphaF(.2) else: color = QColor(Qt.lightGray) color.setAlphaF(.3) return color
def cadCanvasReleaseEvent(self, event): """ When the mouse is clicked :param event: mouse event """ if not self.__isEditing and not self.__findVertex and not self.__onMove: found_features = self.__layer.selectedFeatures() if len(found_features) > 0: if len(found_features) > 1: self.__iface.messageBar().pushMessage( QCoreApplication.translate("VDLTools", "One feature at a time"), level=QgsMessageBar.INFO) return self.__selectedFeature = found_features[0] if self.__layer.geometryType() != QGis.Point: self.__iface.messageBar().pushMessage( QCoreApplication.translate( "VDLTools", "Select vertex for moving (ESC to undo)"), level=QgsMessageBar.INFO, duration=3) self.__findVertex = True self.setMode(self.CaptureLine) self.__rubberBand = QgsRubberBand(self.canvas(), QGis.Point) else: self.setMode(self.CaptureNone) self.__onMove = True elif self.__findVertex: self.__findVertex = False self.setMode(self.CaptureNone) closest = self.__selectedFeature.geometry().closestVertex( event.mapPoint()) self.__selectedVertex = closest[1] self.__onMove = True elif self.__onMove: self.__onMove = False mapPoint = event.mapPoint() match = Finder.snap(event.mapPoint(), self.canvas()) if match.hasVertex() or match.hasEdge(): mapPoint = match.point() if match.hasEdge(): intersection = Finder.snapCurvedIntersections( mapPoint, self.canvas(), self) if intersection is not None: mapPoint = intersection self.__isEditing = True if self.__rubberBand is not None: self.__rubberBand.reset() if self.__layer.geometryType() == QGis.Polygon: self.__polygonPreview(mapPoint) elif self.__layer.geometryType() == QGis.Line: self.__linePreview(mapPoint) else: self.__pointPreview(mapPoint) color = QColor("red") color.setAlphaF(0.78) self.__rubberBand.setColor(color) if self.__layer.geometryType() != QGis.Point: self.__rubberBand.setWidth(2) self.__rubberBand.setLineStyle(Qt.DotLine) else: self.__rubberBand.setIcon(4) self.__rubberBand.setIconSize(20) self.__confDlg = MoveConfirmDialog() self.__confDlg.rejected.connect(self.__cancel) self.__confDlg.moveButton().clicked.connect(self.__onConfirmMove) self.__confDlg.copyButton().clicked.connect(self.__onConfirmCopy) self.__confDlg.cancelButton().clicked.connect( self.__onConfirmCancel) self.__confDlg.show()
def cadCanvasMoveEvent(self, event): """ When the mouse is moved :param event: mouse event """ if type(event) == QMoveEvent: map_point = self.toMapCoordinates(event.pos()) else: map_point = event.mapPoint() if not self.__isEditing and not self.__findVertex and not self.__onMove: laySettings = QgsSnappingUtils.LayerConfig(self.__layer, QgsPointLocator.All, 10, QgsTolerance.Pixels) f_l = Finder.findClosestFeatureAt(map_point, self.canvas(), [laySettings]) if f_l is not None and self.__lastFeatureId != f_l[0].id(): self.__lastFeatureId = f_l[0].id() self.__layer.setSelectedFeatures([f_l[0].id()]) if f_l is None: self.__layer.removeSelection() self.__lastFeatureId = None elif self.__findVertex: if self.__rubberBand is not None: self.__rubberBand.reset() closest = self.__selectedFeature.geometry().closestVertex( map_point) color = QColor("red") color.setAlphaF(0.78) self.__rubberBand.setColor(color) self.__rubberBand.setIcon(4) self.__rubberBand.setIconSize(20) self.__rubberBand.setToGeometry( QgsGeometry().fromPoint(closest[0]), None) elif self.__onMove: if self.__rubberBand is not None: self.__rubberBand.reset() if self.__layer.geometryType() == QGis.Polygon: self.__polygonPreview(map_point) elif self.__layer.geometryType() == QGis.Line: self.__linePreview(map_point) else: self.__pointPreview(map_point) color = QColor("red") color.setAlphaF(0.78) self.__rubberBand.setColor(color) self.__rubberBand.setWidth(2) if self.__layer.geometryType() != QGis.Point: self.__rubberBand.setLineStyle(Qt.DotLine) else: self.__rubberBand.setIcon(4) self.__rubberBand.setIconSize(8) if self.__rubberSnap is not None: self.__rubberSnap.reset() else: self.__rubberSnap = QgsRubberBand(self.canvas(), QGis.Point) self.__rubberSnap.setColor(color) self.__rubberSnap.setWidth(2) self.__rubberSnap.setIconSize(20) match = Finder.snap(map_point, self.canvas()) if match.hasVertex() or match.hasEdge(): point = match.point() if match.hasVertex(): if match.layer(): self.__rubberSnap.setIcon(4) else: self.__rubberSnap.setIcon(1) if match.hasEdge(): intersection = Finder.snapCurvedIntersections( point, self.canvas(), self) if intersection is not None: self.__rubberSnap.setIcon(1) point = intersection else: self.__rubberSnap.setIcon(3) self.__rubberSnap.setToGeometry(QgsGeometry().fromPoint(point), None)
def paintEvent(self, event): painter = QPainter(self) color = QColor(Qt.darkGray) color.setAlphaF(.5) painter.fillRect(event.rect(), color)
def load(self): settings = QSettings() settings.beginGroup("GraphicParameters") # First, parameters for normal points self._point_size = None try: _point_size = float(settings.value("PointSize")) except (ValueError, TypeError): _point_size = 5.0 self.point_size = _point_size self._point_thickness = None try: _point_thickness = int(settings.value("PointThickness")) except (ValueError, TypeError): _point_thickness = 0 self.point_thickness = _point_thickness self._point_color = None _point_color = QColor(settings.value("PointColor")) if not _point_color.isValid(): _point_color = QColor(Qt.red) self.point_color = _point_color _selected_point_color = QColor(settings.value("SelectedPointColor")) if not _selected_point_color.isValid(): _selected_point_color = QColor(255, 128, 128, 255) self._selected_point_color = _selected_point_color _new_point_color = QColor(settings.value("NewPointColor")) if not _new_point_color.isValid(): _new_point_color = QColor(Qt.blue) self._new_point_color = None self.new_point_color = _new_point_color # Parameter for cells self._cell_size = None try: _cell_size = float(settings.value("CellSize")) except (ValueError, TypeError): _cell_size = 5.0 self.cell_size = _cell_size self._cell_thickness = None try: _cell_thickness = int(settings.value("CellThickness")) except (ValueError, TypeError): _cell_thickness = 1 self.cell_thickness = _cell_thickness self._cell_color = None _cell_color = QColor(settings.value("CellColor")) if not _cell_color.isValid(): _cell_color = QColor(Qt.darkCyan) _cell_color.setAlphaF(0.5) self.cell_color = _cell_color self._selected_cell_color = None _selected_cell_color = QColor(settings.value("SelectedCellColor")) if not _selected_cell_color.isValid(): _selected_cell_color = QColor(Qt.yellow) _selected_cell_color.setAlphaF(0.5) self.selected_cell_color = _selected_cell_color self._division_wall_color = None _division_wall_color = QColor(settings.value("DivisionWallColor")) if not _division_wall_color.isValid(): _division_wall_color = QColor(255, 85, 0) _division_wall_color.setAlphaF(0.8) self.division_wall_color = _division_wall_color # Then, parameters for old points try: self._old_point_size = float(settings.value("OldPointSize")) except (ValueError, TypeError): self._old_point_size = 5.0 try: self._old_point_thickness = int(settings.value("OldPointThickness")) except (ValueError, TypeError): self._old_point_thickness = 0 self._old_point_color = None self._old_point_color = QColor(settings.value("OldPointColor")) if not self._old_point_color.isValid(): self._old_point_color = QColor(Qt.yellow) self._old_point_matching_color = QColor(settings.value("OldPointMatchingColor")) if not self._old_point_matching_color.isValid(): self._old_point_matching_color = QColor(Qt.darkYellow) self._show_id = toBool(settings.value("ShowId", 'false')) # Parameters for arrow try: self._arrow_line_size = float(settings.value("ArrowLineSize")) except (ValueError, TypeError): self._arrow_line_size = 2 try: self._arrow_head_size = float(settings.value("ArrowHeadSize")) except (ValueError, TypeError): self._arrow_head_size = .1 self._arrow_color = QColor(settings.value("ArrowColor")) if not self._arrow_color.isValid(): self._arrow_color = QColor(Qt.lightGray) self._draw_arrow = toBool(settings.value("DrawArrow", 'true')) self._show_template = toBool(settings.value("ShowTemplate", 'false')) self._template_color = QColor(settings.value("TemplateColor")) if not self._template_color.isValid(): self._template_color = QColor(255, 0, 0, 100) self._search_color = QColor(settings.value("SearchColor")) if not self._search_color.isValid(): self._search_color = QColor(255, 0, 255, 100) settings.endGroup() # The search parameters settings.beginGroup("SearchParameters") try: self._template_size = int(settings.value("TemplateSize")) except (ValueError, TypeError): self._template_size = 10 s = self._template_size self.template_rect = QRectF(-s, -s, 2*s, 2*s) try: self._search_size = int(settings.value("SearchSize")) except (ValueError, TypeError): self._search_size = 50 s = self._search_size self.search_rect = QRectF(-s, -s, 2*s, 2*s) self._estimate = toBool(settings.value("Estimate", 'false')) try: self._filter_size_ratio = float(settings.value("FilterSizeRatio")) except (ValueError, TypeError): self._filter_size_ratio = .5 settings.endGroup() settings.beginGroup("GUI") self._show_vectors = toBool(settings.value("ShowVectors", 'true')) self._link_views = toBool(settings.value("LinkViews", 'true')) try: cache_size = int(settings.value("CacheSize")) except (ValueError, TypeError): cache_size = 200 self.cache_size = cache_size self._last_dir = path(settings.value("LastsDir", ".")) self._use_OpenGL = toBool(settings.value("UseOpenGL", 'false')) settings.beginGroup("RecentProjects") try: numproj = int(settings.value("NumberOfProjects")) except (ValueError, TypeError): numproj = 0 self._recent_projects = [] if numproj > 0: for i in range(numproj): name = "Project%d" % i value = path(settings.value(name)) self._recent_projects.append(value) try: self._max_number_of_projects = int(settings.value("MaxNumberOfProjects")) except (ValueError, TypeError): self._max_number_of_projects = 5 settings.endGroup() settings.endGroup() # The plotting parameters settings.beginGroup("PlottingParameters") settings.beginGroup("Ellipsis") try: self._ellipsis_scaling = float(settings.value("Scaling", 1.0)) except (ValueError, TypeError): self._ellipsis_scaling = 1.0 self._ellipsis_color = QColor(settings.value("Color")) if not self._ellipsis_color.isValid(): self._ellipsis_color = QColor(0, 0, 0) try: self._ellipsis_thickness = int(settings.value("Thickness", 0)) except (ValueError, TypeError): self._ellipsis_thickness = 0 try: self._ellipsis_min_anisotropy = float(settings.value("MinAnisotropy", 1e-3)) except (ValueError, TypeError): self._ellipsis_min_anisotropy = 1e-3 self._ellipsis_positive_color = QColor(settings.value("PositiveColor")) if not self._ellipsis_positive_color.isValid(): self._ellipsis_positive_color = QColor(0, 0, 255) self._ellipsis_negative_color = QColor(settings.value("NegativeColor")) if not self._ellipsis_negative_color.isValid(): self._ellipsis_negative_color = QColor(255, 0, 0) self._ellipsis_plot = toBool(settings.value("Plot", 'false')) self._ellipsis_scale_axis = toBool(settings.value("ScaleAxis", 'false')) settings.endGroup() settings.endGroup() self._point_editable = True self._point_selectable = True self._cell_editable = False
def cadCanvasReleaseEvent(self, event): """ When the mouse is clicked :param event: mouse event """ if not self.__isEditing and not self.__findVertex and not self.__onMove: found_features = self.__layer.selectedFeatures() if len(found_features) > 0: if len(found_features) > 1: self.__iface.messageBar().pushMessage( QCoreApplication.translate("VDLTools", "One feature at a time"), level=QgsMessageBar.INFO) return self.__selectedFeature = found_features[0] if self.__layer.geometryType() != QGis.Point: self.__iface.messageBar().pushMessage( QCoreApplication.translate("VDLTools", "Select vertex for moving (ESC to undo)"), level=QgsMessageBar.INFO, duration=3) self.__findVertex = True self.setMode(self.CaptureLine) self.__rubberBand = QgsRubberBand(self.canvas(), QGis.Point) else: self.setMode(self.CaptureNone) self.__onMove = True elif self.__findVertex: self.__findVertex = False self.setMode(self.CaptureNone) closest = self.__selectedFeature.geometry().closestVertex(event.mapPoint()) self.__selectedVertex = closest[1] self.__onMove = True elif self.__onMove: self.__onMove = False mapPoint = event.mapPoint() match = Finder.snap(event.mapPoint(), self.canvas()) if match.hasVertex() or match.hasEdge(): mapPoint = match.point() if match.hasEdge(): intersection = Finder.snapCurvedIntersections(mapPoint, self.canvas(), self) if intersection is not None: mapPoint = intersection self.__isEditing = True if self.__rubberBand is not None: self.__rubberBand.reset() if self.__layer.geometryType() == QGis.Polygon: self.__polygonPreview(mapPoint) elif self.__layer.geometryType() == QGis.Line: self.__linePreview(mapPoint) else: self.__pointPreview(mapPoint) color = QColor("red") color.setAlphaF(0.78) self.__rubberBand.setColor(color) if self.__layer.geometryType() != QGis.Point: self.__rubberBand.setWidth(2) self.__rubberBand.setLineStyle(Qt.DotLine) else: self.__rubberBand.setIcon(4) self.__rubberBand.setIconSize(20) self.__confDlg = MoveConfirmDialog() self.__confDlg.rejected.connect(self.__cancel) self.__confDlg.moveButton().clicked.connect(self.__onConfirmMove) self.__confDlg.copyButton().clicked.connect(self.__onConfirmCopy) self.__confDlg.cancelButton().clicked.connect(self.__onConfirmCancel) self.__confDlg.show()
def cadCanvasMoveEvent(self, event): """ When the mouse is moved :param event: mouse event """ if type(event) == QMoveEvent: map_point = self.toMapCoordinates(event.pos()) else: map_point = event.mapPoint() if not self.__isEditing and not self.__findVertex and not self.__onMove: laySettings = QgsSnappingUtils.LayerConfig(self.__layer, QgsPointLocator.All, 10, QgsTolerance.Pixels) f_l = Finder.findClosestFeatureAt(map_point, self.canvas(), [laySettings]) if f_l is not None and self.__lastFeatureId != f_l[0].id(): self.__lastFeatureId = f_l[0].id() self.__layer.setSelectedFeatures([f_l[0].id()]) if f_l is None: self.__layer.removeSelection() self.__lastFeatureId = None elif self.__findVertex: if self.__rubberBand is not None: self.__rubberBand.reset() closest = self.__selectedFeature.geometry().closestVertex(map_point) color = QColor("red") color.setAlphaF(0.78) self.__rubberBand.setColor(color) self.__rubberBand.setIcon(4) self.__rubberBand.setIconSize(20) self.__rubberBand.setToGeometry(QgsGeometry().fromPoint(closest[0]), None) elif self.__onMove: if self.__rubberBand is not None: self.__rubberBand.reset() if self.__layer.geometryType() == QGis.Polygon: self.__polygonPreview(map_point) elif self.__layer.geometryType() == QGis.Line: self.__linePreview(map_point) else: self.__pointPreview(map_point) color = QColor("red") color.setAlphaF(0.78) self.__rubberBand.setColor(color) self.__rubberBand.setWidth(2) if self.__layer.geometryType() != QGis.Point: self.__rubberBand.setLineStyle(Qt.DotLine) else: self.__rubberBand.setIcon(4) self.__rubberBand.setIconSize(8) if self.__rubberSnap is not None: self.__rubberSnap.reset() else: self.__rubberSnap = QgsRubberBand(self.canvas(), QGis.Point) self.__rubberSnap.setColor(color) self.__rubberSnap.setWidth(2) self.__rubberSnap.setIconSize(20) match = Finder.snap(map_point, self.canvas()) if match.hasVertex() or match.hasEdge(): point = match.point() if match.hasVertex(): if match.layer(): self.__rubberSnap.setIcon(4) else: self.__rubberSnap.setIcon(1) if match.hasEdge(): intersection = Finder.snapCurvedIntersections(point, self.canvas(), self) if intersection is not None: self.__rubberSnap.setIcon(1) point = intersection else: self.__rubberSnap.setIcon(3) self.__rubberSnap.setToGeometry(QgsGeometry().fromPoint(point), None)
def canvasReleaseEvent(self, event): """ When the mouse is clicked :param event: mouse event """ if not self.__isEditing and not self.__findVertex and not self.__onMove: found_features = self.__layer.selectedFeatures() if len(found_features) > 0: if len(found_features) < 1: self.__iface.messageBar().pushMessage( QCoreApplication.translate("VDLTools", "One feature at a time"), level=QgsMessageBar.INFO) return self.__selectedFeature = found_features[0] if self.__layer.geometryType() != QGis.Point: self.__findVertex = 1 self.__rubberBand = QgsRubberBand(self.__canvas, QGis.Point) else: self.__onMove = 1 # self.__snapperList, self.__layerList = Finder.updateSnapperList(self.__iface) elif self.__findVertex: self.__findVertex = 0 closest = self.__selectedFeature.geometry().closestVertex( event.mapPoint()) self.__selectedVertex = closest[1] self.__onMove = 1 # self.__snapperList, self.__layerList = Finder.updateSnapperList(self.__iface) elif self.__onMove: self.__onMove = 0 mapPoint = event.mapPoint() match = Finder.snap(event.mapPoint(), self.__canvas, True) if match.hasVertex() or match.hasEdge(): mapPoint = match.point() # snappedIntersection = Finder.snapToIntersection(event.mapPoint(), self, self.__layerList) # if snappedIntersection is None: # snappedPoint = Finder.snapToLayers(event.mapPoint(), self.__snapperList) # if snappedPoint is not None: # mapPoint = snappedPoint # else: # mapPoint = snappedIntersection self.__isEditing = 1 if self.__rubberBand: self.__rubberBand.reset() if self.__layer.geometryType() == QGis.Polygon: self.__polygonPreview(mapPoint) elif self.__layer.geometryType() == QGis.Line: self.__linePreview(mapPoint) else: self.__pointPreview(mapPoint) color = QColor("red") color.setAlphaF(0.78) self.__rubberBand.setColor(color) if self.__layer.geometryType() != QGis.Point: self.__rubberBand.setWidth(2) self.__rubberBand.setLineStyle(Qt.DotLine) else: self.__rubberBand.setIcon(4) self.__rubberBand.setIconSize(20) self.__confDlg = MoveConfirmDialog() self.__confDlg.moveButton().clicked.connect(self.__onConfirmMove) self.__confDlg.copyButton().clicked.connect(self.__onConfirmCopy) self.__confDlg.cancelButton().clicked.connect( self.__onConfirmClose) self.__confDlg.show()
def canvasMoveEvent(self, event): """ When the mouse is moved :param event: mouse event """ if not self.__isEditing and not self.__findVertex and not self.__onMove: f = Finder.findClosestFeatureAt(event.mapPoint(), self.__layerConfig, self) if f is not None and self.__lastFeatureId != f.id(): self.__lastFeatureId = f.id() self.__layer.setSelectedFeatures([f.id()]) if f is None: self.__layer.removeSelection() self.__lastFeatureId = None elif self.__findVertex: self.__rubberBand.reset() closest = self.__selectedFeature.geometry().closestVertex( event.mapPoint()) color = QColor("red") color.setAlphaF(0.78) self.__rubberBand.setColor(color) self.__rubberBand.setIcon(4) self.__rubberBand.setIconSize(20) self.__rubberBand.setToGeometry( QgsGeometry().fromPoint(closest[0]), None) elif self.__onMove: if self.__rubberBand: self.__rubberBand.reset() if self.__layer.geometryType() == QGis.Polygon: self.__polygonPreview(event.mapPoint()) elif self.__layer.geometryType() == QGis.Line: self.__linePreview(event.mapPoint()) else: self.__pointPreview(event.mapPoint()) color = QColor("red") color.setAlphaF(0.78) self.__rubberBand.setColor(color) self.__rubberBand.setWidth(2) if self.__layer.geometryType() != QGis.Point: self.__rubberBand.setLineStyle(Qt.DotLine) else: self.__rubberBand.setIcon(4) self.__rubberBand.setIconSize(20) if self.__rubberSnap: self.__rubberSnap.reset() else: self.__rubberSnap = QgsRubberBand(self.__canvas, QGis.Point) self.__rubberSnap.setColor(color) self.__rubberSnap.setWidth(2) self.__rubberSnap.setIconSize(20) match = Finder.snap(event.mapPoint(), self.__canvas, True) if match.hasVertex(): if match.layer(): self.__rubberSnap.setIcon(4) self.__rubberSnap.setToGeometry( QgsGeometry().fromPoint(match.point()), None) else: self.__rubberSnap.setIcon(1) self.__rubberSnap.setToGeometry( QgsGeometry().fromPoint(match.point()), None) if match.hasEdge(): self.__rubberSnap.setIcon(3) self.__rubberSnap.setToGeometry( QgsGeometry().fromPoint(match.point()), None)
def load(self): settings = QSettings() settings.beginGroup("GraphicParameters") # First, parameters for normal points self._point_size = None try: _point_size = float(settings.value("PointSize")) except (ValueError, TypeError): _point_size = 5.0 self.point_size = _point_size self._point_thickness = None try: _point_thickness = int(settings.value("PointThickness")) except (ValueError, TypeError): _point_thickness = 0 self.point_thickness = _point_thickness self._point_color = None _point_color = QColor(settings.value("PointColor")) if not _point_color.isValid(): _point_color = QColor(Qt.red) self.point_color = _point_color _selected_point_color = QColor(settings.value("SelectedPointColor")) if not _selected_point_color.isValid(): _selected_point_color = QColor(255, 128, 128, 255) self._selected_point_color = _selected_point_color _new_point_color = QColor(settings.value("NewPointColor")) if not _new_point_color.isValid(): _new_point_color = QColor(Qt.blue) self._new_point_color = None self.new_point_color = _new_point_color # Parameter for cells self._cell_size = None try: _cell_size = float(settings.value("CellSize")) except (ValueError, TypeError): _cell_size = 5.0 self.cell_size = _cell_size self._cell_thickness = None try: _cell_thickness = int(settings.value("CellThickness")) except (ValueError, TypeError): _cell_thickness = 1 self.cell_thickness = _cell_thickness self._cell_color = None _cell_color = QColor(settings.value("CellColor")) if not _cell_color.isValid(): _cell_color = QColor(Qt.darkCyan) _cell_color.setAlphaF(0.5) self.cell_color = _cell_color self._selected_cell_color = None _selected_cell_color = QColor(settings.value("SelectedCellColor")) if not _selected_cell_color.isValid(): _selected_cell_color = QColor(Qt.yellow) _selected_cell_color.setAlphaF(0.5) self.selected_cell_color = _selected_cell_color self._division_wall_color = None _division_wall_color = QColor(settings.value("DivisionWallColor")) if not _division_wall_color.isValid(): _division_wall_color = QColor(255, 85, 0) _division_wall_color.setAlphaF(0.8) self.division_wall_color = _division_wall_color # Then, parameters for old points try: self._old_point_size = float(settings.value("OldPointSize")) except (ValueError, TypeError): self._old_point_size = 5.0 try: self._old_point_thickness = int( settings.value("OldPointThickness")) except (ValueError, TypeError): self._old_point_thickness = 0 self._old_point_color = None self._old_point_color = QColor(settings.value("OldPointColor")) if not self._old_point_color.isValid(): self._old_point_color = QColor(Qt.yellow) self._old_point_matching_color = QColor( settings.value("OldPointMatchingColor")) if not self._old_point_matching_color.isValid(): self._old_point_matching_color = QColor(Qt.darkYellow) self._show_id = toBool(settings.value("ShowId", 'false')) # Parameters for arrow try: self._arrow_line_size = float(settings.value("ArrowLineSize")) except (ValueError, TypeError): self._arrow_line_size = 2 try: self._arrow_head_size = float(settings.value("ArrowHeadSize")) except (ValueError, TypeError): self._arrow_head_size = .1 self._arrow_color = QColor(settings.value("ArrowColor")) if not self._arrow_color.isValid(): self._arrow_color = QColor(Qt.lightGray) self._draw_arrow = toBool(settings.value("DrawArrow", 'true')) self._show_template = toBool(settings.value("ShowTemplate", 'false')) self._template_color = QColor(settings.value("TemplateColor")) if not self._template_color.isValid(): self._template_color = QColor(255, 0, 0, 100) self._search_color = QColor(settings.value("SearchColor")) if not self._search_color.isValid(): self._search_color = QColor(255, 0, 255, 100) settings.endGroup() # The search parameters settings.beginGroup("SearchParameters") try: self._template_size = int(settings.value("TemplateSize")) except (ValueError, TypeError): self._template_size = 10 s = self._template_size self.template_rect = QRectF(-s, -s, 2 * s, 2 * s) try: self._search_size = int(settings.value("SearchSize")) except (ValueError, TypeError): self._search_size = 50 s = self._search_size self.search_rect = QRectF(-s, -s, 2 * s, 2 * s) self._estimate = toBool(settings.value("Estimate", 'false')) try: self._filter_size_ratio = float(settings.value("FilterSizeRatio")) except (ValueError, TypeError): self._filter_size_ratio = .5 settings.endGroup() settings.beginGroup("GUI") self._show_vectors = toBool(settings.value("ShowVectors", 'true')) self._link_views = toBool(settings.value("LinkViews", 'true')) try: cache_size = int(settings.value("CacheSize")) except (ValueError, TypeError): cache_size = 200 self.cache_size = cache_size self._last_dir = path(settings.value("LastsDir", ".")) self._use_OpenGL = toBool(settings.value("UseOpenGL", 'false')) settings.beginGroup("RecentProjects") try: numproj = int(settings.value("NumberOfProjects")) except (ValueError, TypeError): numproj = 0 self._recent_projects = [] if numproj > 0: for i in range(numproj): name = "Project%d" % i value = path(settings.value(name)) self._recent_projects.append(value) try: self._max_number_of_projects = int( settings.value("MaxNumberOfProjects")) except (ValueError, TypeError): self._max_number_of_projects = 5 settings.endGroup() settings.endGroup() # The plotting parameters settings.beginGroup("PlottingParameters") settings.beginGroup("Ellipsis") try: self._ellipsis_scaling = float(settings.value("Scaling", 1.0)) except (ValueError, TypeError): self._ellipsis_scaling = 1.0 self._ellipsis_color = QColor(settings.value("Color")) if not self._ellipsis_color.isValid(): self._ellipsis_color = QColor(0, 0, 0) try: self._ellipsis_thickness = int(settings.value("Thickness", 0)) except (ValueError, TypeError): self._ellipsis_thickness = 0 try: self._ellipsis_min_anisotropy = float( settings.value("MinAnisotropy", 1e-3)) except (ValueError, TypeError): self._ellipsis_min_anisotropy = 1e-3 self._ellipsis_positive_color = QColor(settings.value("PositiveColor")) if not self._ellipsis_positive_color.isValid(): self._ellipsis_positive_color = QColor(0, 0, 255) self._ellipsis_negative_color = QColor(settings.value("NegativeColor")) if not self._ellipsis_negative_color.isValid(): self._ellipsis_negative_color = QColor(255, 0, 0) self._ellipsis_plot = toBool(settings.value("Plot", 'false')) self._ellipsis_scale_axis = toBool(settings.value( "ScaleAxis", 'false')) settings.endGroup() settings.endGroup() self._point_editable = True self._point_selectable = True self._cell_editable = False