kopia lustrzana https://github.com/NanoVNA-Saver/nanovna-saver
Show marker numbers option (Fixes #53)
rodzic
d5042a8191
commit
a491b9560f
|
@ -52,6 +52,7 @@ class Chart(QtWidgets.QWidget):
|
|||
lineThickness = 1
|
||||
pointSize = 2
|
||||
markerSize = 3
|
||||
drawMarkerNumbers = False
|
||||
|
||||
isPopout = False
|
||||
popoutRequested = pyqtSignal(object)
|
||||
|
@ -167,6 +168,10 @@ class Chart(QtWidgets.QWidget):
|
|||
self.drawLines = drawLines
|
||||
self.update()
|
||||
|
||||
def setDrawMarkerNumbers(self, drawMarkerNumbers):
|
||||
self.drawMarkerNumbers = drawMarkerNumbers
|
||||
self.update()
|
||||
|
||||
@staticmethod
|
||||
def shortenFrequency(frequency: int) -> str:
|
||||
if frequency < 50000:
|
||||
|
@ -240,6 +245,21 @@ class Chart(QtWidgets.QWidget):
|
|||
self.swrColor = color
|
||||
self.update()
|
||||
|
||||
def drawMarker(self, x, y, qp: QtGui.QPainter, color: QtGui.QColor, number=0):
|
||||
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)
|
||||
|
||||
if self.drawMarkerNumbers:
|
||||
number_x = x - 3
|
||||
number_y = y - self.markerSize - 3
|
||||
qp.drawText(number_x, number_y, str(number))
|
||||
|
||||
|
||||
class FrequencyChart(Chart):
|
||||
fstart = 0
|
||||
|
@ -552,17 +572,10 @@ class FrequencyChart(Chart):
|
|||
highlighter.setWidth(1)
|
||||
for m in self.markers:
|
||||
if m.location != -1 and m.location < len(data):
|
||||
highlighter.setColor(m.color)
|
||||
qp.setPen(highlighter)
|
||||
x = self.getXPosition(data[m.location])
|
||||
y = y_function(data[m.location])
|
||||
if self.isPlotable(x, y):
|
||||
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)
|
||||
self.drawMarker(x, y, qp, m.color, self.markers.index(m)+1)
|
||||
|
||||
def isPlotable(self, x, y):
|
||||
return self.leftMargin <= x <= self.leftMargin + self.chartWidth and \
|
||||
|
@ -986,16 +999,9 @@ class PolarChart(SquareChart):
|
|||
# Now draw the markers
|
||||
for m in self.markers:
|
||||
if m.location != -1 and m.location < len(self.data):
|
||||
highlighter.setColor(m.color)
|
||||
qp.setPen(highlighter)
|
||||
x = self.getXPosition(self.data[m.location])
|
||||
y = self.height() / 2 + self.data[m.location].im * -1 * self.chartHeight / 2
|
||||
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)
|
||||
self.drawMarker(x, y, qp, m.color, self.markers.index(m)+1)
|
||||
|
||||
def getXPosition(self, d: Datapoint) -> int:
|
||||
return self.width()/2 + d.re * self.chartWidth/2
|
||||
|
@ -1135,16 +1141,9 @@ class SmithChart(SquareChart):
|
|||
# Now draw the markers
|
||||
for m in self.markers:
|
||||
if m.location != -1:
|
||||
highlighter.setColor(m.color)
|
||||
qp.setPen(highlighter)
|
||||
x = self.getXPosition(self.data[m.location])
|
||||
y = self.height() / 2 + self.data[m.location].im * -1 * self.chartHeight / 2
|
||||
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)
|
||||
self.drawMarker(x, y, qp, m.color, self.markers.index(m)+1)
|
||||
|
||||
def getXPosition(self, d: Datapoint) -> int:
|
||||
return self.width()/2 + d.re * self.chartWidth/2
|
||||
|
@ -2403,25 +2402,12 @@ class RealImaginaryChart(FrequencyChart):
|
|||
# Now draw the markers
|
||||
for m in self.markers:
|
||||
if m.location != -1:
|
||||
highlighter.setColor(m.color)
|
||||
qp.setPen(highlighter)
|
||||
x = self.getXPosition(self.data[m.location])
|
||||
y_re = self.getReYPosition(self.data[m.location])
|
||||
y_im = self.getImYPosition(self.data[m.location])
|
||||
|
||||
qp.drawLine(int(x), int(y_re) + self.markerSize,
|
||||
int(x) - self.markerSize, int(y_re) - self.markerSize)
|
||||
qp.drawLine(int(x), int(y_re) + self.markerSize,
|
||||
int(x) + self.markerSize, int(y_re) - self.markerSize)
|
||||
qp.drawLine(int(x) - self.markerSize, int(y_re) - self.markerSize,
|
||||
int(x) + self.markerSize, int(y_re) - self.markerSize)
|
||||
|
||||
qp.drawLine(int(x), int(y_im) + self.markerSize,
|
||||
int(x) - self.markerSize, int(y_im) - self.markerSize)
|
||||
qp.drawLine(int(x), int(y_im) + self.markerSize,
|
||||
int(x) + self.markerSize, int(y_im) - self.markerSize)
|
||||
qp.drawLine(int(x) - self.markerSize, int(y_im) - self.markerSize,
|
||||
int(x) + self.markerSize, int(y_im) - self.markerSize)
|
||||
self.drawMarker(x, y_re, qp, m.color)
|
||||
self.drawMarker(x, y_im, qp, m.color)
|
||||
|
||||
def getImYPosition(self, d: Datapoint) -> int:
|
||||
_, im = RFTools.normalize50(d)
|
||||
|
|
|
@ -1067,6 +1067,11 @@ class DisplaySettingsWindow(QtWidgets.QWidget):
|
|||
self.markerSizeInput.editingFinished.connect(self.validateMarkerSize)
|
||||
display_options_layout.addRow("Marker size", self.markerSizeInput)
|
||||
|
||||
self.show_marker_number_option = QtWidgets.QCheckBox("Show marker numbers")
|
||||
show_marker_number_label = QtWidgets.QLabel("Displays the marker number next to the marker")
|
||||
self.show_marker_number_option.stateChanged.connect(self.changeShowMarkerNumber)
|
||||
display_options_layout.addRow(self.show_marker_number_option, show_marker_number_label)
|
||||
|
||||
color_options_box = QtWidgets.QGroupBox("Chart colors")
|
||||
color_options_layout = QtWidgets.QFormLayout(color_options_box)
|
||||
|
||||
|
@ -1287,6 +1292,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))
|
||||
|
||||
if self.app.settings.value("UseCustomColors", defaultValue=False, type=bool):
|
||||
self.dark_mode_option.setDisabled(True)
|
||||
|
@ -1368,6 +1374,12 @@ class DisplaySettingsWindow(QtWidgets.QWidget):
|
|||
for c in self.app.subscribing_charts:
|
||||
c.setDrawLines(state)
|
||||
|
||||
def changeShowMarkerNumber(self):
|
||||
state = self.show_marker_number_option.isChecked()
|
||||
self.app.settings.setValue("ShowMarkerNumbers", state)
|
||||
for c in self.app.subscribing_charts:
|
||||
c.setDrawMarkerNumbers(state)
|
||||
|
||||
def changePointSize(self, size: int):
|
||||
self.app.settings.setValue("PointSize", size)
|
||||
for c in self.app.subscribing_charts:
|
||||
|
@ -2270,10 +2282,9 @@ class MarkerSettingsWindow(QtWidgets.QWidget):
|
|||
|
||||
settings_group_box = QtWidgets.QGroupBox("Settings")
|
||||
settings_group_box_layout = QtWidgets.QFormLayout(settings_group_box)
|
||||
# TODO: Implement colored marker name selection
|
||||
self.checkboxColouredMarker = QtWidgets.QCheckBox("Colored marker name")
|
||||
self.checkboxDataShownInCharts = QtWidgets.QCheckBox("Show data in charts (EXPERIMENTAL)")
|
||||
settings_group_box_layout.addRow(self.checkboxColouredMarker)
|
||||
settings_group_box_layout.addRow(self.checkboxDataShownInCharts)
|
||||
|
||||
fields_group_box = QtWidgets.QGroupBox("Displayed data")
|
||||
fields_group_box_layout = QtWidgets.QFormLayout(fields_group_box)
|
||||
|
|
Ładowanie…
Reference in New Issue