Source code for RWESharp.widgets.PenPicker
from PySide6.QtWidgets import QWidget
from PySide6.QtGui import QPen, QColor
from PySide6.QtCore import Signal, Qt
from RWESharp.ui.uiscripts.PenPicker import Ui_Penpicker
list2penstyle = [
Qt.PenStyle.SolidLine,
Qt.PenStyle.NoPen,
Qt.PenStyle.DashLine,
Qt.PenStyle.DotLine,
Qt.PenStyle.DashDotLine,
Qt.PenStyle.DashDotDotLine,
]
[docs]
class PenPicker(QWidget):
penChanged = Signal(QPen)
[docs]
def __init__(self, parent=None):
super().__init__(parent)
self.ui = Ui_Penpicker()
self.ui.setupUi(self)
self.pen = QPen()
self.set_pen(QPen(QColor(0, 0, 0), 2))
self.ui.Color.colorPicked.connect(self.update_pen)
self.ui.Width.valueChanged.connect(self.update_pen)
self.ui.Style.currentIndexChanged.connect(self.update_pen)
[docs]
def update_pen(self):
self.pen.setColor(self.ui.Color.color)
self.pen.setStyle(list2penstyle[self.ui.Style.currentIndex()])
self.pen.setWidthF(self.ui.Width.value())
self.penChanged.emit(self.pen)
[docs]
def set_pen(self, pen: QPen):
if pen == self.pen:
return
self.pen = pen.__copy__() # NOQA it does return something but for some reason it says that it returns none
self.ui.Color.set_color(pen.color())
self.ui.Width.setValue(pen.widthF())
self.ui.Style.setCurrentIndex(list2penstyle.index(pen.style()))
self.penChanged.emit(self.pen)