pull/503/head
Holger Mueller 2022-05-23 16:11:34 +02:00
rodzic 05bb07b8fa
commit 7f7d56781d
3 zmienionych plików z 24 dodań i 33 usunięć

Wyświetl plik

@ -24,6 +24,7 @@ from typing import List, Set, Tuple, ClassVar, Any
from PyQt5 import QtWidgets, QtGui, QtCore
from PyQt5.QtCore import pyqtSignal
import NanoVNASaver.Defaults as Defaults
from NanoVNASaver.RFTools import Datapoint
from NanoVNASaver.Marker import Marker
@ -64,23 +65,15 @@ class ChartFlags:
draw_lines: bool = False
is_popout: bool = False
@dataclass
class ChartMarkerConfig:
draw_label: bool = False
fill: bool = False
at_tip: bool = False
size: int = 3
class ChartMarker(QtWidgets.QWidget):
cfg: ClassVar[ChartMarkerConfig] = ChartMarkerConfig()
def __init__(self, qp: QtGui.QPaintDevice):
super().__init__()
self.qp = qp
def draw(self, x: int, y: int, color: QtGui.QColor, text: str = ""):
offset = self.cfg.size // 2
if self.cfg.at_tip:
offset = Defaults.cfg.chart_marker.size // 2
if Defaults.cfg.chart_marker.at_tip:
y -= offset
pen = QtGui.QPen(color)
self.qp.setPen(pen)
@ -90,12 +83,12 @@ class ChartMarker(QtWidgets.QWidget):
qpp.lineTo(x + offset, y - offset)
qpp.lineTo(x, y + offset)
if self.cfg.fill:
if Defaults.cfg.chart_marker.fill:
self.qp.fillPath(qpp, color)
else:
self.qp.drawPath(qpp)
if text and self.cfg.draw_label:
if text and Defaults.cfg.chart_marker.draw_label:
text_width = self.qp.fontMetrics().horizontalAdvance(text)
self.qp.drawText(x - text_width // 2, y - 3 - offset, text)
@ -104,7 +97,7 @@ class Chart(QtWidgets.QWidget):
bands: ClassVar[Any] = None
popoutRequested: ClassVar[Any] = pyqtSignal(object)
color: ClassVar[ChartColors] = ChartColors()
marker_cfg: ClassVar[ChartMarkerConfig] = ChartMarkerConfig()
marker_cfg: ClassVar[Defaults.ChartMarker] = Defaults.cfg.chart_marker
def __init__(self, name):
super().__init__()
@ -160,7 +153,7 @@ class Chart(QtWidgets.QWidget):
self.update()
def setMarkerSize(self, size):
ChartMarker.cfg.size = size
Defaults.cfg.chart_marker.size = size
self.update()
def setSweepTitle(self, title):

Wyświetl plik

@ -24,6 +24,7 @@ from time import strftime, localtime
from PyQt5 import QtWidgets, QtCore, QtGui
import NanoVNASaver.Defaults as Defaults
from .Windows import (
AboutWindow, AnalysisWindow, CalibrationWindow,
DeviceSettingsWindow, DisplaySettingsWindow, SweepSettingsWindow,
@ -69,10 +70,11 @@ class NanoVNASaver(QtWidgets.QWidget):
else:
self.icon = QtGui.QIcon("icon_48x48.png")
self.setWindowIcon(self.icon)
self.settings = QtCore.QSettings(QtCore.QSettings.IniFormat,
self.settings = Defaults.AppSettings(QtCore.QSettings.IniFormat,
QtCore.QSettings.UserScope,
"NanoVNASaver", "NanoVNASaver")
logger.info("Settings from: %s", self.settings.fileName())
Defaults.cfg = Defaults.restore(self.settings)
self.threadpool = QtCore.QThreadPool()
self.sweep = Sweep()
self.worker = SweepWorker(self)

Wyświetl plik

@ -2,7 +2,7 @@
#
# A python program to view and export Touchstone data from a NanoVNA
# Copyright (C) 2019, 2020 Rune B. Broberg
# Copyright (C) 2020,2021 NanoVNA-Saver Authors
# Copyright (C) 2020ff NanoVNA-Saver Authors
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@ -21,8 +21,9 @@ from typing import List
from PyQt5 import QtWidgets, QtCore, QtGui
import NanoVNASaver.Defaults as Defaults
from NanoVNASaver.Charts.Chart import (
Chart, ChartColors, ChartMarker, ChartMarkerConfig)
Chart, ChartColors)
from NanoVNASaver.Windows.Bands import BandsWindow
from NanoVNASaver.Windows.MarkerSettings import MarkerSettingsWindow
from NanoVNASaver.Marker import Marker
@ -37,7 +38,6 @@ class DisplaySettingsWindow(QtWidgets.QWidget):
self.app = app
self.setWindowTitle("Display settings")
self.setWindowIcon(self.app.icon)
self.marker_cfg = ChartMarkerConfig()
self.marker_window = MarkerSettingsWindow(self.app)
self.callback_params = {}
@ -107,10 +107,9 @@ class DisplaySettingsWindow(QtWidgets.QWidget):
self.markerSizeInput = QtWidgets.QSpinBox()
self.markerSizeInput.setMinimumHeight(20)
markersize = self.app.settings.value("MarkerSize", 6, int)
markersize = Defaults.cfg.chart_marker.size
self.markerSizeInput.setValue(markersize)
self.markerSizeInput.setMinimum(4)
self.markerSizeInput.setMinimum(4)
self.markerSizeInput.setMaximum(20)
self.markerSizeInput.setSingleStep(2)
self.markerSizeInput.setSuffix(" px")
@ -369,10 +368,9 @@ class DisplaySettingsWindow(QtWidgets.QWidget):
self.show_lines_option.setChecked(
self.app.settings.value("ShowLines", False, bool))
self.show_marker_number_option.setChecked(
self.app.settings.value("ShowMarkerNumbers", ChartMarkerConfig.draw_label, bool))
Defaults.cfg.chart_marker.draw_label)
self.filled_marker_option.setChecked(
self.app.settings.value("FilledMarkers", ChartMarkerConfig.fill, bool))
Defaults.cfg.chart_marker.fill)
if self.app.settings.value("UseCustomColors",
defaultValue=False, type=bool):
self.dark_mode_option.setDisabled(True)
@ -467,21 +465,18 @@ class DisplaySettingsWindow(QtWidgets.QWidget):
c.setDrawLines(state)
def changeShowMarkerNumber(self):
state = self.show_marker_number_option.isChecked()
self.app.settings.setValue("ShowMarkerNumbers", state)
ChartMarker.cfg.draw_label = state
Defaults.cfg.chart_marker.draw_label = \
self.show_marker_number_option.isChecked()
self.updateCharts()
def changeFilledMarkers(self):
state = self.filled_marker_option.isChecked()
self.app.settings.setValue("FilledMarkers", state)
ChartMarker.cfg.fill = state
Defaults.cfg.chart_marker.fill = \
self.filled_marker_option.isChecked()
self.updateCharts()
def changeMarkerAtTip(self):
state = self.marker_at_tip.isChecked()
self.app.settings.setValue("MarkerAtTip", state)
ChartMarker.cfg.at_tip = state
Defaults.cfg.chart_marker.at_tip = \
self.marker_at_tip.isChecked()
self.updateCharts()
def changePointSize(self, size: int):
@ -496,7 +491,7 @@ class DisplaySettingsWindow(QtWidgets.QWidget):
def changeMarkerSize(self, size: int):
self.app.settings.setValue("MarkerSize", size)
ChartMarker.cfg.size = size
Defaults.cfg.chart_marker.size = size
self.markerSizeInput.setValue(size)
self.updateCharts()
@ -628,3 +623,4 @@ class DisplaySettingsWindow(QtWidgets.QWidget):
def updateCharts(self):
for c in self.app.subscribing_charts:
c.update()
Defaults.store(self.app.settings, Defaults.cfg)