Refactored colors in charts

pull/421/head
Holger Müller 2021-07-06 09:25:20 +02:00
rodzic 4ca66532a4
commit 82d825d299
2 zmienionych plików z 52 dodań i 83 usunięć

Wyświetl plik

@ -69,9 +69,9 @@ class ChartMarkerConfig:
fill: bool = False
at_tip: bool = False
size: int = 3
color: QtGui.QColor = QtGui.QColor(QtCore.Qt.lightGray)
label_text: str = ""
class ChartMarker(QtWidgets.QWidget):
def __init__(self, qp: QtGui.QPaintDevice,
defaults: ChartMarkerConfig=ChartMarkerConfig()):
@ -79,11 +79,9 @@ class ChartMarker(QtWidgets.QWidget):
self.qp = qp
self.cfg = defaults
def draw(self, x: int, y: int, color: QtGui.QColor = None, text: str = ""):
def draw(self, x: int, y: int, color: QtGui.QColor, text: str = ""):
if self.cfg.at_tip:
y -= self.cfg.size
if not color:
color = self.cfg.color
pen = QtGui.QPen(color)
self.qp.setPen(pen)
qpp = QtGui.QPainterPath()
@ -106,13 +104,13 @@ class ChartMarker(QtWidgets.QWidget):
class Chart(QtWidgets.QWidget):
bands: ClassVar[Any] = None
popoutRequested: ClassVar[Any] = pyqtSignal(object)
color: ClassVar[ChartColors] = ChartColors()
def __init__(self, name):
super().__init__()
self.name = name
self.sweepTitle = ""
self.color = ChartColors()
self.dim = ChartDimensions()
self.dragbox = ChartDragBox()
self.flag = ChartFlags()
@ -136,37 +134,6 @@ class Chart(QtWidgets.QWidget):
self.setContextMenuPolicy(QtCore.Qt.ActionsContextMenu)
def setSweepColor(self, color: QtGui.QColor):
self.color.sweep = color
self.update()
def setSecondarySweepColor(self, color: QtGui.QColor):
self.color.sweep_secondary = color
self.update()
def setReferenceColor(self, color: QtGui.QColor):
self.color.reference = color
self.update()
def setSecondaryReferenceColor(self, color: QtGui.QColor):
self.color.reference_secondary = color
self.update()
def setBackgroundColor(self, color: QtGui.QColor):
self.color.background = color
pal = self.palette()
pal.setColor(QtGui.QPalette.Background, color)
self.setPalette(pal)
self.update()
def setForegroundColor(self, color: QtGui.QColor):
self.color.foreground = color
self.update()
def setTextColor(self, color: QtGui.QColor):
self.color.text = color
self.update()
def setReference(self, data):
self.reference = data
self.update()
@ -289,7 +256,6 @@ class Chart(QtWidgets.QWidget):
new_chart = self.__class__(self.name)
new_chart.data = self.data
new_chart.reference = self.reference
new_chart.color = replace(self.color)
new_chart.dim = replace(self.dim)
new_chart.flag = replace(self.flag)
new_chart.marker_cfg = replace(self.marker_cfg)
@ -320,10 +286,6 @@ class Chart(QtWidgets.QWidget):
self.swrMarkers.clear()
self.update()
def setSWRColor(self, color: QtGui.QColor):
self.color.swr = color
self.update()
def drawMarker(self, x, y, qp: QtGui.QPainter, color: QtGui.QColor, number=0):
cmarker = ChartMarker(qp, self.marker_cfg)
cmarker.draw(x, y, color, str(number))
@ -337,3 +299,9 @@ class Chart(QtWidgets.QWidget):
width = qf.boundingRect(self.sweepTitle).width()
position = QtCore.QPointF(self.width()/2 - width/2, 15)
qp.drawText(position, self.sweepTitle)
def update(self):
pal = self.palette()
pal.setColor(QtGui.QPalette.Background, self.color.background)
self.setPalette(pal)
super().update()

Wyświetl plik

@ -21,9 +21,11 @@ from typing import List
from PyQt5 import QtWidgets, QtCore, QtGui
from NanoVNASaver.Charts.Chart import Chart, ChartColors
from NanoVNASaver.Windows.Bands import BandsWindow
from NanoVNASaver.Windows.MarkerSettings import MarkerSettingsWindow
from NanoVNASaver.Marker import Marker
logger = logging.getLogger(__name__)
@ -34,6 +36,7 @@ class DisplaySettingsWindow(QtWidgets.QWidget):
self.app = app
self.setWindowTitle("Display settings")
self.setWindowIcon(self.app.icon)
self.color = ChartColors()
self.marker_window = MarkerSettingsWindow(self.app)
@ -78,26 +81,24 @@ class DisplaySettingsWindow(QtWidgets.QWidget):
self.btnColorPicker = QtWidgets.QPushButton("")
self.btnColorPicker.setFixedWidth(20)
self.btnColorPicker.setMinimumHeight(20)
self.sweepColor = self.app.settings.value(
self.color.sweep = self.app.settings.value(
"SweepColor", defaultValue=QtGui.QColor(160, 140, 20, 128),
type=QtGui.QColor)
self.setSweepColor(self.sweepColor)
self.btnColorPicker.clicked.connect(lambda: self.setSweepColor(
QtWidgets.QColorDialog.getColor(
self.sweepColor, options=QtWidgets.QColorDialog.ShowAlphaChannel)))
self.color.sweep, options=QtWidgets.QColorDialog.ShowAlphaChannel)))
display_options_layout.addRow("Sweep color", self.btnColorPicker)
self.btnSecondaryColorPicker = QtWidgets.QPushButton("")
self.btnSecondaryColorPicker.setFixedWidth(20)
self.btnSecondaryColorPicker.setMinimumHeight(20)
self.secondarySweepColor = self.app.settings.value("SecondarySweepColor",
self.color.sweep_secondary = self.app.settings.value("SecondarySweepColor",
defaultValue=QtGui.QColor(
20, 160, 140, 128),
type=QtGui.QColor)
self.setSecondarySweepColor(self.secondarySweepColor)
self.btnSecondaryColorPicker.clicked.connect(lambda: self.setSecondarySweepColor(
QtWidgets.QColorDialog.getColor(self.secondarySweepColor,
QtWidgets.QColorDialog.getColor(self.color.sweep_secondary,
options=QtWidgets.QColorDialog.ShowAlphaChannel)))
display_options_layout.addRow("Second sweep color", self.btnSecondaryColorPicker)
@ -105,34 +106,34 @@ class DisplaySettingsWindow(QtWidgets.QWidget):
self.btnReferenceColorPicker = QtWidgets.QPushButton("")
self.btnReferenceColorPicker.setFixedWidth(20)
self.btnReferenceColorPicker.setMinimumHeight(20)
self.referenceColor = self.app.settings.value(
self.color.reference = self.app.settings.value(
"ReferenceColor", defaultValue=QtGui.QColor(0, 0, 255, 48),
type=QtGui.QColor)
self.setReferenceColor(self.referenceColor)
self.btnReferenceColorPicker.clicked.connect(lambda: self.setReferenceColor(
QtWidgets.QColorDialog.getColor(
self.referenceColor, options=QtWidgets.QColorDialog.ShowAlphaChannel)))
self.color.reference, options=QtWidgets.QColorDialog.ShowAlphaChannel)))
display_options_layout.addRow("Reference color", self.btnReferenceColorPicker)
self.btnSecondaryReferenceColorPicker = QtWidgets.QPushButton("")
self.btnSecondaryReferenceColorPicker.setFixedWidth(20)
self.btnSecondaryReferenceColorPicker.setMinimumHeight(20)
self.secondaryReferenceColor = self.app.settings.value(
self.color.reference_secondary = self.app.settings.value(
"SecondaryReferenceColor",
defaultValue=QtGui.QColor(0, 0, 255, 48),
type=QtGui.QColor)
self.setSecondaryReferenceColor(self.secondaryReferenceColor)
self.btnSecondaryReferenceColorPicker.clicked.connect(
lambda: self.setSecondaryReferenceColor(
QtWidgets.QColorDialog.getColor(
self.secondaryReferenceColor,
self.color.reference_secondary,
options=QtWidgets.QColorDialog.ShowAlphaChannel)))
display_options_layout.addRow(
"Second reference color",
self.btnSecondaryReferenceColorPicker)
Chart.color = self.color
self.pointSizeInput = QtWidgets.QSpinBox()
self.pointSizeInput.setMinimumHeight(20)
pointsize = self.app.settings.value("PointSize", 2, int)
@ -604,19 +605,17 @@ class DisplaySettingsWindow(QtWidgets.QWidget):
def changeDarkMode(self):
state = self.dark_mode_option.isChecked()
self.app.settings.setValue("DarkMode", state)
Chart.color.foreground = QtGui.QColor(QtCore.Qt.lightGray)
if state:
for c in self.app.subscribing_charts:
c.setBackgroundColor(QtGui.QColor(QtCore.Qt.black))
c.setForegroundColor(QtGui.QColor(QtCore.Qt.lightGray))
c.setTextColor(QtGui.QColor(QtCore.Qt.white))
c.setSWRColor(self.vswrColor)
Chart.color.background = QtGui.QColor(QtCore.Qt.black)
Chart.color.text = QtGui.QColor(QtCore.Qt.white)
Chart.color.swr = self.vswrColor
else:
for c in self.app.subscribing_charts:
c.setBackgroundColor(QtGui.QColor(QtCore.Qt.white))
c.setForegroundColor(QtGui.QColor(QtCore.Qt.lightGray))
c.setTextColor(QtGui.QColor(QtCore.Qt.black))
c.setSWRColor(self.vswrColor)
Chart.color.background = QtGui.QColor(QtCore.Qt.white)
Chart.color.text = QtGui.QColor(QtCore.Qt.black)
Chart.color.swr = self.vswrColor
self.updateCharts()
def changeCustomColors(self):
self.app.settings.setValue("UseCustomColors", self.use_custom_colors.isChecked())
if self.use_custom_colors.isChecked():
@ -625,11 +624,11 @@ class DisplaySettingsWindow(QtWidgets.QWidget):
self.btn_background_picker.setDisabled(False)
self.btn_foreground_picker.setDisabled(False)
self.btn_text_picker.setDisabled(False)
for c in self.app.subscribing_charts:
c.setBackgroundColor(self.backgroundColor)
c.setForegroundColor(self.foregroundColor)
c.setTextColor(self.textColor)
c.setSWRColor(self.vswrColor)
Chart.color.background = self.backgroundColor
Chart.color.foreground =self.foregroundColor
Chart.color.text = self.textColor
Chart.color.swr = self.vswrColor
self.updateCharts()
else:
self.dark_mode_option.setDisabled(False)
self.btn_background_picker.setDisabled(True)
@ -673,49 +672,47 @@ class DisplaySettingsWindow(QtWidgets.QWidget):
def setSweepColor(self, color: QtGui.QColor):
if color.isValid():
self.sweepColor = color
self.color.sweep = color
p = self.btnColorPicker.palette()
p.setColor(QtGui.QPalette.ButtonText, color)
self.btnColorPicker.setPalette(p)
self.app.settings.setValue("SweepColor", color)
self.app.settings.sync()
for c in self.app.subscribing_charts:
c.setSweepColor(color)
Chart.color.sweep = color
self.updateCharts()
def setSecondarySweepColor(self, color: QtGui.QColor):
if color.isValid():
self.secondarySweepColor = color
self.color.sweep_secondary = color
p = self.btnSecondaryColorPicker.palette()
p.setColor(QtGui.QPalette.ButtonText, color)
self.btnSecondaryColorPicker.setPalette(p)
self.app.settings.setValue("SecondarySweepColor", color)
self.app.settings.sync()
for c in self.app.subscribing_charts:
c.setSecondarySweepColor(color)
Chart.color.sweep_secondary = color
self.updateCharts()
def setReferenceColor(self, color):
if color.isValid():
self.referenceColor = color
self.color.reference = color
p = self.btnReferenceColorPicker.palette()
p.setColor(QtGui.QPalette.ButtonText, color)
self.btnReferenceColorPicker.setPalette(p)
self.app.settings.setValue("ReferenceColor", color)
self.app.settings.sync()
for c in self.app.subscribing_charts:
c.setReferenceColor(color)
Chart.color.reference = color
self.updateCharts()
def setSecondaryReferenceColor(self, color):
if color.isValid():
self.secondaryReferenceColor = color
self.color.reference_secondary = color
p = self.btnSecondaryReferenceColorPicker.palette()
p.setColor(QtGui.QPalette.ButtonText, color)
self.btnSecondaryReferenceColorPicker.setPalette(p)
self.app.settings.setValue("SecondaryReferenceColor", color)
self.app.settings.sync()
for c in self.app.subscribing_charts:
c.setSecondaryReferenceColor(color)
Chart.color.reference_secondary = color
self.updateCharts()
def setShowBands(self, show_bands):
self.app.bands.enabled = show_bands
@ -802,3 +799,7 @@ class DisplaySettingsWindow(QtWidgets.QWidget):
self.app.settings.setValue("VSWRMarkers", self.vswrMarkers)
for c in self.app.s11charts:
c.removeSWRMarker(value)
def updateCharts(self):
for c in self.app.subscribing_charts:
c.update()