Option for filled marker indicators

Option to have the data point at the tip of the marker
pull/89/head
Rune Broberg 2019-11-06 15:45:55 +01:00
rodzic 2d462e892e
commit 69acf7ab8a
2 zmienionych plików z 81 dodań i 18 usunięć

Wyświetl plik

@ -53,6 +53,8 @@ class Chart(QtWidgets.QWidget):
pointSize = 2
markerSize = 3
drawMarkerNumbers = False
markerAtTip = False
filledMarkers = False
isPopout = False
popoutRequested = pyqtSignal(object)
@ -164,12 +166,20 @@ class Chart(QtWidgets.QWidget):
def getPosition(self, d: Datapoint) -> (int, int):
return self.getXPosition(d), self.getYPosition(d)
def setDrawLines(self, drawLines):
self.drawLines = drawLines
def setDrawLines(self, draw_lines):
self.drawLines = draw_lines
self.update()
def setDrawMarkerNumbers(self, drawMarkerNumbers):
self.drawMarkerNumbers = drawMarkerNumbers
def setDrawMarkerNumbers(self, draw_marker_numbers):
self.drawMarkerNumbers = draw_marker_numbers
self.update()
def setMarkerAtTip(self, marker_at_tip):
self.markerAtTip = marker_at_tip
self.update()
def setFilledMarkers(self, filled_markers):
self.filledMarkers = filled_markers
self.update()
@staticmethod
@ -221,6 +231,8 @@ class Chart(QtWidgets.QWidget):
new_chart.drawLines = self.drawLines
new_chart.markerSize = self.markerSize
new_chart.drawMarkerNumbers = self.drawMarkerNumbers
new_chart.filledMarkers = self.filledMarkers
new_chart.markerAtTip = self.markerAtTip
new_chart.resize(self.width(), self.height())
new_chart.setPointSize(self.pointSize)
new_chart.setLineThickness(self.lineThickness)
@ -248,14 +260,20 @@ class Chart(QtWidgets.QWidget):
self.update()
def drawMarker(self, x, y, qp: QtGui.QPainter, color: QtGui.QColor, number=0):
if self.markerAtTip:
y -= self.markerSize
pen = QtGui.QPen(color)
qp.setPen(pen)
qp.drawLine(int(x), int(y) + self.markerSize,
int(x) - self.markerSize, int(y) - self.markerSize)
qp.drawLine(int(x), int(y) + self.markerSize,
int(x) + self.markerSize, int(y) - self.markerSize)
qp.drawLine(int(x) - self.markerSize, int(y) - self.markerSize,
int(x) + self.markerSize, int(y) - self.markerSize)
qpp = QtGui.QPainterPath()
qpp.moveTo(x, y + self.markerSize)
qpp.lineTo(x - self.markerSize, y - self.markerSize)
qpp.lineTo(x + self.markerSize, y - self.markerSize)
qpp.lineTo(x, y + self.markerSize)
if self.filledMarkers:
qp.fillPath(qpp, color)
else:
qp.drawPath(qpp)
if self.drawMarkerNumbers:
number_x = x - 3

Wyświetl plik

@ -992,11 +992,11 @@ class DisplaySettingsWindow(QtWidgets.QWidget):
display_options_box = QtWidgets.QGroupBox("Options")
display_options_layout = QtWidgets.QFormLayout(display_options_box)
returnloss_group = QtWidgets.QButtonGroup()
self.returnloss_group = QtWidgets.QButtonGroup()
self.returnloss_is_negative = QtWidgets.QRadioButton("Negative")
self.returnloss_is_positive = QtWidgets.QRadioButton("Positive")
returnloss_group.addButton(self.returnloss_is_positive)
returnloss_group.addButton(self.returnloss_is_negative)
self.returnloss_group.addButton(self.returnloss_is_positive)
self.returnloss_group.addButton(self.returnloss_is_negative)
display_options_layout.addRow("Return loss is:", self.returnloss_is_negative)
display_options_layout.addRow("", self.returnloss_is_positive)
@ -1103,6 +1103,28 @@ class DisplaySettingsWindow(QtWidgets.QWidget):
self.show_marker_number_option.stateChanged.connect(self.changeShowMarkerNumber)
display_options_layout.addRow(self.show_marker_number_option, show_marker_number_label)
self.filled_marker_option = QtWidgets.QCheckBox("Filled markers")
filled_marker_label = QtWidgets.QLabel("Shows the marker as a filled triangle")
self.filled_marker_option.stateChanged.connect(self.changeFilledMarkers)
display_options_layout.addRow(self.filled_marker_option, filled_marker_label)
self.marker_tip_group = QtWidgets.QButtonGroup()
self.marker_at_center = QtWidgets.QRadioButton("At the center of the marker")
self.marker_at_tip = QtWidgets.QRadioButton("At the tip of the marker")
self.marker_tip_group.addButton(self.marker_at_center)
self.marker_tip_group.addButton(self.marker_at_tip)
display_options_layout.addRow("Data point is:", self.marker_at_center)
display_options_layout.addRow("", self.marker_at_tip)
if self.app.settings.value("MarkerAtTip", False, bool):
self.marker_at_tip.setChecked(True)
else:
self.marker_at_center.setChecked(True)
self.marker_at_tip.toggled.connect(self.changeMarkerAtTip)
self.changeMarkerAtTip()
color_options_box = QtWidgets.QGroupBox("Chart colors")
color_options_layout = QtWidgets.QFormLayout(color_options_box)
@ -1112,19 +1134,25 @@ class DisplaySettingsWindow(QtWidgets.QWidget):
self.btn_background_picker = QtWidgets.QPushButton("")
self.btn_background_picker.setFixedWidth(20)
self.btn_background_picker.clicked.connect(lambda: self.setColor("background", QtWidgets.QColorDialog.getColor(self.backgroundColor, options=QtWidgets.QColorDialog.ShowAlphaChannel)))
self.btn_background_picker.clicked.connect(lambda: self.setColor("background",
QtWidgets.QColorDialog.getColor(self.backgroundColor,
options=QtWidgets.QColorDialog.ShowAlphaChannel)))
color_options_layout.addRow("Chart background", self.btn_background_picker)
self.btn_foreground_picker = QtWidgets.QPushButton("")
self.btn_foreground_picker.setFixedWidth(20)
self.btn_foreground_picker.clicked.connect(lambda: self.setColor("foreground", QtWidgets.QColorDialog.getColor(self.foregroundColor, options=QtWidgets.QColorDialog.ShowAlphaChannel)))
self.btn_foreground_picker.clicked.connect(lambda: self.setColor("foreground",
QtWidgets.QColorDialog.getColor(self.foregroundColor,
options=QtWidgets.QColorDialog.ShowAlphaChannel)))
color_options_layout.addRow("Chart foreground", self.btn_foreground_picker)
self.btn_text_picker = QtWidgets.QPushButton("")
self.btn_text_picker.setFixedWidth(20)
self.btn_text_picker.clicked.connect(lambda: self.setColor("text", QtWidgets.QColorDialog.getColor(self.textColor, options=QtWidgets.QColorDialog.ShowAlphaChannel)))
self.btn_text_picker.clicked.connect(lambda: self.setColor("text",
QtWidgets.QColorDialog.getColor(self.textColor,
options=QtWidgets.QColorDialog.ShowAlphaChannel)))
color_options_layout.addRow("Chart text", self.btn_text_picker)
@ -1154,7 +1182,9 @@ class DisplaySettingsWindow(QtWidgets.QWidget):
self.btn_bands_picker = QtWidgets.QPushButton("")
self.btn_bands_picker.setFixedWidth(20)
self.btn_bands_picker.clicked.connect(lambda: self.setColor("bands", QtWidgets.QColorDialog.getColor(self.bandsColor, options=QtWidgets.QColorDialog.ShowAlphaChannel)))
self.btn_bands_picker.clicked.connect(lambda: self.setColor("bands",
QtWidgets.QColorDialog.getColor(self.bandsColor,
options=QtWidgets.QColorDialog.ShowAlphaChannel)))
bands_layout.addRow("Chart bands", self.btn_bands_picker)
@ -1179,7 +1209,9 @@ class DisplaySettingsWindow(QtWidgets.QWidget):
self.btn_vswr_picker = QtWidgets.QPushButton("")
self.btn_vswr_picker.setFixedWidth(20)
self.btn_vswr_picker.clicked.connect(lambda: self.setColor("vswr", QtWidgets.QColorDialog.getColor(self.vswrColor, options=QtWidgets.QColorDialog.ShowAlphaChannel)))
self.btn_vswr_picker.clicked.connect(lambda: self.setColor("vswr",
QtWidgets.QColorDialog.getColor(self.vswrColor,
options=QtWidgets.QColorDialog.ShowAlphaChannel)))
vswr_marker_layout.addRow("VSWR Markers", self.btn_vswr_picker)
@ -1324,6 +1356,7 @@ class DisplaySettingsWindow(QtWidgets.QWidget):
self.dark_mode_option.setChecked(self.app.settings.value("DarkMode", False, bool))
self.show_lines_option.setChecked(self.app.settings.value("ShowLines", False, bool))
self.show_marker_number_option.setChecked(self.app.settings.value("ShowMarkerNumbers", False, bool))
self.filled_marker_option.setChecked(self.app.settings.value("FilledMarkers", False, bool))
if self.app.settings.value("UseCustomColors", defaultValue=False, type=bool):
self.dark_mode_option.setDisabled(True)
@ -1411,6 +1444,18 @@ class DisplaySettingsWindow(QtWidgets.QWidget):
for c in self.app.subscribing_charts:
c.setDrawMarkerNumbers(state)
def changeFilledMarkers(self):
state = self.filled_marker_option.isChecked()
self.app.settings.setValue("FilledMarkers", state)
for c in self.app.subscribing_charts:
c.setFilledMarkers(state)
def changeMarkerAtTip(self):
state = self.marker_at_tip.isChecked()
self.app.settings.setValue("MarkerAtTip", state)
for c in self.app.subscribing_charts:
c.setMarkerAtTip(state)
def changePointSize(self, size: int):
self.app.settings.setValue("PointSize", size)
for c in self.app.subscribing_charts: