Show marker numbers option (Fixes #53)

pull/71/head^2
Rune Broberg 2019-10-29 14:21:22 +01:00
rodzic d5042a8191
commit a491b9560f
2 zmienionych plików z 38 dodań i 41 usunięć

Wyświetl plik

@ -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)

Wyświetl plik

@ -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)