More copy functions for charts. TDRWindow now uses signals for charts.

pull/44/head
Rune B. Broberg 2019-10-13 23:10:01 +02:00
rodzic e893c8a104
commit cc80c23c2e
2 zmienionych plików z 52 dodań i 3 usunięć

Wyświetl plik

@ -236,7 +236,6 @@ class FrequencyChart(Chart):
fixedSpan = False
fixedValues = False
linear = True
logarithmicX = False
chartWidth = Chart.minChartWidth
@ -565,6 +564,28 @@ class FrequencyChart(Chart):
else:
return x, y
def copy(self):
new_chart: FrequencyChart = super().copy()
new_chart.fstart = self.fstart
new_chart.fstop = self.fstop
new_chart.maxFrequency = self.maxFrequency
new_chart.minFrequency = self.minFrequency
new_chart.minDisplayValue = self.minDisplayValue
new_chart.maxDisplayValue = self.maxDisplayValue
new_chart.setFixedSpan(self.fixedSpan)
new_chart.action_automatic.setChecked(not self.fixedSpan)
new_chart.action_fixed_span.setChecked(self.fixedSpan)
new_chart.setFixedValues(self.fixedValues)
new_chart.y_action_automatic.setChecked(not self.fixedValues)
new_chart.y_action_fixed_span.setChecked(self.fixedValues)
new_chart.setLogarithmicX(self.logarithmicX)
new_chart.action_set_logarithmic_x.setChecked(self.logarithmicX)
new_chart.action_set_linear_x.setChecked(not self.logarithmicX)
return new_chart
class SquareChart(Chart):
def __init__(self, name):
@ -611,6 +632,11 @@ class PhaseChart(FrequencyChart):
self.action_unwrap.triggered.connect(lambda: self.setUnwrap(self.action_unwrap.isChecked()))
self.y_menu.addAction(self.action_unwrap)
def copy(self):
new_chart: PhaseChart = super().copy()
new_chart.setUnwrap(self.unwrap)
new_chart.action_unwrap.setChecked(self.unwrap)
def setUnwrap(self, unwrap: bool):
self.unwrap = unwrap
self.update()
@ -810,7 +836,7 @@ class VSWRChart(FrequencyChart):
vswrstr = str(round(vswr))
else:
vswrstr = str(round(vswr, digits))
qp.drawText(3, y+3, vswrstr)
qp.drawText(3, y+3, vswrstr)
qp.setPen(QtGui.QPen(self.foregroundColor))
qp.drawLine(self.leftMargin-5, y, self.leftMargin+self.chartWidth, y)
qp.drawLine(self.leftMargin - 5, self.topMargin, self.leftMargin + self.chartWidth, self.topMargin)
@ -1297,6 +1323,12 @@ class LogMagChart(FrequencyChart):
else:
return NanoVNASaver.gain(p)
def copy(self):
new_chart: LogMagChart = super().copy()
new_chart.isInverted = self.isInverted
new_chart.span = self.span
return new_chart
class QualityFactorChart(FrequencyChart):
def __init__(self, name=""):
@ -1431,6 +1463,12 @@ class TDRChart(Chart):
self.setPalette(pal)
self.setAutoFillBackground(True)
def copy(self):
new_chart = super().copy()
new_chart.tdrWindow = self.tdrWindow
self.tdrWindow.updated.connect(new_chart.update)
return new_chart
def paintEvent(self, a0: QtGui.QPaintEvent) -> None:
qp = QtGui.QPainter(self)
qp.setPen(QtGui.QPen(self.textColor))
@ -1539,6 +1577,14 @@ class RealImaginaryChart(FrequencyChart):
self.setPalette(pal)
self.setAutoFillBackground(True)
def copy(self):
new_chart: RealImaginaryChart = super().copy()
new_chart.maxDisplayReal = self.maxDisplayReal
new_chart.maxDisplayImag = self.maxDisplayImag
new_chart.minDisplayReal = self.minDisplayReal
new_chart.minDisplayImag = self.minDisplayImag
def drawChart(self, qp: QtGui.QPainter):
qp.setPen(QtGui.QPen(self.textColor))
qp.drawText(self.leftMargin + 5, 15, self.name + " (\N{OHM SIGN})")

Wyświetl plik

@ -341,6 +341,7 @@ class NanoVNASaver(QtWidgets.QWidget):
self.tdr_window = TDRWindow(self)
self.tdr_chart.tdrWindow = self.tdr_window
self.tdr_window.updated.connect(self.tdr_chart.update)
tdr_control_box = QtWidgets.QGroupBox()
tdr_control_box.setTitle("TDR")
@ -1683,6 +1684,8 @@ class AboutWindow(QtWidgets.QWidget):
class TDRWindow(QtWidgets.QWidget):
updated = QtCore.pyqtSignal()
def __init__(self, app: NanoVNASaver):
super().__init__()
self.app = app
@ -1794,7 +1797,7 @@ class TDRWindow(QtWidgets.QWidget):
self.tdr_result_label.setText(str(cable_len) + " m (" + str(feet) + "ft " + str(inches) + "in)")
self.app.tdr_result_label.setText(str(cable_len) + " m")
self.app.tdr_chart.update()
self.updated.emit()
class SweepSettingsWindow(QtWidgets.QWidget):