From 92a8a0e39d44b92f304f5452a5a11ad9d78d9156 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Holger=20M=C3=BCller?= Date: Mon, 27 Feb 2023 21:01:35 +0100 Subject: [PATCH] removed duplicate code for scrollareas --- NanoVNASaver/Windows/About.py | 13 ++------ NanoVNASaver/Windows/AnalysisWindow.py | 12 ++----- NanoVNASaver/Windows/CalibrationSettings.py | 11 ++----- NanoVNASaver/Windows/Defaults.py | 36 +++++++++++++++++++++ NanoVNASaver/Windows/DeviceSettings.py | 12 ++----- NanoVNASaver/Windows/DisplaySettings.py | 12 ++----- NanoVNASaver/Windows/Files.py | 13 ++------ NanoVNASaver/Windows/SweepSettings.py | 12 ++----- NanoVNASaver/Windows/TDR.py | 13 ++------ 9 files changed, 55 insertions(+), 79 deletions(-) create mode 100644 NanoVNASaver/Windows/Defaults.py diff --git a/NanoVNASaver/Windows/About.py b/NanoVNASaver/Windows/About.py index ede6cef..1b1d8bc 100644 --- a/NanoVNASaver/Windows/About.py +++ b/NanoVNASaver/Windows/About.py @@ -25,6 +25,7 @@ from PyQt5 import QtWidgets, QtCore from NanoVNASaver.About import VERSION_URL, INFO_URL from NanoVNASaver.Version import Version +from NanoVNASaver.Windows.Defaults import make_scrollable logger = logging.getLogger(__name__) @@ -36,17 +37,9 @@ class AboutWindow(QtWidgets.QWidget): self.setWindowTitle("About NanoVNASaver") self.setWindowIcon(self.app.icon) - top_layout = QtWidgets.QHBoxLayout() - scrollarea = QtWidgets.QScrollArea() - scrollarea.setWidgetResizable(True) - outer = QtWidgets.QVBoxLayout() - outer.addWidget(scrollarea) - widget = QtWidgets.QWidget() - widget.setLayout(top_layout) - scrollarea.setWidget(widget) - self.setLayout(outer) - self.resize(scrollarea.size()) + top_layout = QtWidgets.QHBoxLayout() + make_scrollable(self, top_layout) QtWidgets.QShortcut(QtCore.Qt.Key_Escape, self, self.hide) diff --git a/NanoVNASaver/Windows/AnalysisWindow.py b/NanoVNASaver/Windows/AnalysisWindow.py index fe6959e..906dc47 100644 --- a/NanoVNASaver/Windows/AnalysisWindow.py +++ b/NanoVNASaver/Windows/AnalysisWindow.py @@ -31,6 +31,7 @@ from NanoVNASaver.Analysis.PeakSearchAnalysis import PeakSearchAnalysis from NanoVNASaver.Analysis.ResonanceAnalysis import ResonanceAnalysis from NanoVNASaver.Analysis.SimplePeakSearchAnalysis import SimplePeakSearchAnalysis from NanoVNASaver.Analysis.VSWRAnalysis import VSWRAnalysis +from NanoVNASaver.Windows.Defaults import make_scrollable logger = logging.getLogger(__name__) @@ -49,16 +50,7 @@ class AnalysisWindow(QtWidgets.QWidget): QtWidgets.QShortcut(QtCore.Qt.Key_Escape, self, self.hide) layout = QtWidgets.QVBoxLayout() - - scrollarea = QtWidgets.QScrollArea() - scrollarea.setWidgetResizable(True) - outer = QtWidgets.QVBoxLayout() - outer.addWidget(scrollarea) - widget = QtWidgets.QWidget() - widget.setLayout(layout) - scrollarea.setWidget(widget) - self.setLayout(outer) - self.resize(scrollarea.size()) + make_scrollable(self, layout) select_analysis_box = QtWidgets.QGroupBox("Select analysis") select_analysis_layout = QtWidgets.QFormLayout(select_analysis_box) diff --git a/NanoVNASaver/Windows/CalibrationSettings.py b/NanoVNASaver/Windows/CalibrationSettings.py index 190510f..bcde4ab 100644 --- a/NanoVNASaver/Windows/CalibrationSettings.py +++ b/NanoVNASaver/Windows/CalibrationSettings.py @@ -24,6 +24,7 @@ from PyQt5 import QtWidgets, QtCore from NanoVNASaver.Calibration import Calibration from NanoVNASaver.Settings.Sweep import SweepMode +from NanoVNASaver.Windows.Defaults import make_scrollable logger = logging.getLogger(__name__) @@ -60,15 +61,7 @@ class CalibrationWindow(QtWidgets.QWidget): top_layout.addLayout(left_layout) top_layout.addLayout(right_layout) - scrollarea = QtWidgets.QScrollArea() - scrollarea.setWidgetResizable(True) - outer = QtWidgets.QVBoxLayout() - outer.addWidget(scrollarea) - widget = QtWidgets.QWidget() - widget.setLayout(top_layout) - scrollarea.setWidget(widget) - self.setLayout(outer) - self.resize(scrollarea.size()) + make_scrollable(self, top_layout) calibration_status_group = QtWidgets.QGroupBox("Active calibration") calibration_status_layout = QtWidgets.QFormLayout() diff --git a/NanoVNASaver/Windows/Defaults.py b/NanoVNASaver/Windows/Defaults.py new file mode 100644 index 0000000..169a43f --- /dev/null +++ b/NanoVNASaver/Windows/Defaults.py @@ -0,0 +1,36 @@ +# NanoVNASaver +# +# A python program to view and export Touchstone data from a NanoVNA +# Copyright (C) 2019, 2020 Rune B. Broberg +# 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 +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +import logging +from typing import Tuple + +from PyQt5 import QtWidgets, QtCore + +logger = logging.getLogger(__name__) + + +def make_scrollable(window: QtWidgets.QWidget, layout: QtWidgets.QLayout) -> None: + area = QtWidgets.QScrollArea() + area.setWidgetResizable(True) + outer = QtWidgets.QVBoxLayout() + outer.addWidget(area) + widget = QtWidgets.QWidget() + widget.setLayout(layout) + area.setWidget(widget) + window.setLayout(outer) + window.resize(area.size()) diff --git a/NanoVNASaver/Windows/DeviceSettings.py b/NanoVNASaver/Windows/DeviceSettings.py index 16ce5db..cd20df6 100644 --- a/NanoVNASaver/Windows/DeviceSettings.py +++ b/NanoVNASaver/Windows/DeviceSettings.py @@ -20,6 +20,7 @@ import logging from PyQt5 import QtWidgets, QtCore +from NanoVNASaver.Windows.Defaults import make_scrollable from NanoVNASaver.Windows.Screenshot import ScreenshotWindow logger = logging.getLogger(__name__) @@ -46,16 +47,7 @@ class DeviceSettingsWindow(QtWidgets.QWidget): right_layout = QtWidgets.QVBoxLayout() top_layout.addLayout(left_layout) top_layout.addLayout(right_layout) - - scrollarea = QtWidgets.QScrollArea() - scrollarea.setWidgetResizable(True) - outer = QtWidgets.QVBoxLayout() - outer.addWidget(scrollarea) - widget = QtWidgets.QWidget() - widget.setLayout(top_layout) - scrollarea.setWidget(widget) - self.setLayout(outer) - self.resize(scrollarea.size()) + make_scrollable(self, top_layout) status_box = QtWidgets.QGroupBox("Status") status_layout = QtWidgets.QFormLayout(status_box) diff --git a/NanoVNASaver/Windows/DisplaySettings.py b/NanoVNASaver/Windows/DisplaySettings.py index 1f145f5..36c1daf 100644 --- a/NanoVNASaver/Windows/DisplaySettings.py +++ b/NanoVNASaver/Windows/DisplaySettings.py @@ -25,6 +25,7 @@ from NanoVNASaver import Defaults from NanoVNASaver.Charts.Chart import ( Chart, ChartColors) from NanoVNASaver.Windows.Bands import BandsWindow +from NanoVNASaver.Windows.Defaults import make_scrollable from NanoVNASaver.Windows.MarkerSettings import MarkerSettingsWindow from NanoVNASaver.Marker.Widget import Marker @@ -44,16 +45,7 @@ class DisplaySettingsWindow(QtWidgets.QWidget): QtWidgets.QShortcut(QtCore.Qt.Key_Escape, self, self.hide) layout = QtWidgets.QHBoxLayout() - - scrollarea = QtWidgets.QScrollArea() - scrollarea.setWidgetResizable(True) - outer = QtWidgets.QVBoxLayout() - outer.addWidget(scrollarea) - widget = QtWidgets.QWidget() - widget.setLayout(layout) - scrollarea.setWidget(widget) - self.setLayout(outer) - self.resize(scrollarea.size()) + make_scrollable(self, layout) left_layout = QtWidgets.QVBoxLayout() layout.addLayout(left_layout) diff --git a/NanoVNASaver/Windows/Files.py b/NanoVNASaver/Windows/Files.py index a03c2b2..8586796 100644 --- a/NanoVNASaver/Windows/Files.py +++ b/NanoVNASaver/Windows/Files.py @@ -21,6 +21,7 @@ import logging from PyQt5 import QtWidgets, QtCore from NanoVNASaver.Touchstone import Touchstone from NanoVNASaver.RFTools import Datapoint +from NanoVNASaver.Windows.Defaults import make_scrollable logger = logging.getLogger(__name__) @@ -34,17 +35,9 @@ class FilesWindow(QtWidgets.QWidget): self.setWindowIcon(self.app.icon) self.setMinimumWidth(200) QtWidgets.QShortcut(QtCore.Qt.Key_Escape, self, self.hide) - file_window_layout = QtWidgets.QVBoxLayout() - scrollarea = QtWidgets.QScrollArea() - scrollarea.setWidgetResizable(True) - outer = QtWidgets.QVBoxLayout() - outer.addWidget(scrollarea) - widget = QtWidgets.QWidget() - widget.setLayout(file_window_layout) - scrollarea.setWidget(widget) - self.setLayout(outer) - self.resize(scrollarea.size()) + file_window_layout = QtWidgets.QVBoxLayout() + make_scrollable(self, file_window_layout) load_file_control_box = QtWidgets.QGroupBox("Import file") load_file_control_box.setMaximumWidth(300) diff --git a/NanoVNASaver/Windows/SweepSettings.py b/NanoVNASaver/Windows/SweepSettings.py index 47e4cf2..699a408 100644 --- a/NanoVNASaver/Windows/SweepSettings.py +++ b/NanoVNASaver/Windows/SweepSettings.py @@ -24,6 +24,7 @@ from NanoVNASaver.Formatting import ( format_frequency_short, format_frequency_sweep, ) from NanoVNASaver.Settings.Sweep import SweepMode +from NanoVNASaver.Windows.Defaults import make_scrollable logger = logging.getLogger(__name__) @@ -40,16 +41,7 @@ class SweepSettingsWindow(QtWidgets.QWidget): QtWidgets.QShortcut(QtCore.Qt.Key_Escape, self, self.hide) layout = QtWidgets.QVBoxLayout() - - scrollarea = QtWidgets.QScrollArea() - scrollarea.setWidgetResizable(True) - outer = QtWidgets.QVBoxLayout() - outer.addWidget(scrollarea) - widget = QtWidgets.QWidget() - widget.setLayout(layout) - scrollarea.setWidget(widget) - self.setLayout(outer) - self.resize(scrollarea.size()) + make_scrollable(self, layout) layout.addWidget(self.title_box()) layout.addWidget(self.settings_box()) diff --git a/NanoVNASaver/Windows/TDR.py b/NanoVNASaver/Windows/TDR.py index 082b686..84bd052 100644 --- a/NanoVNASaver/Windows/TDR.py +++ b/NanoVNASaver/Windows/TDR.py @@ -26,6 +26,8 @@ from scipy.constants import speed_of_light from PyQt5 import QtWidgets, QtCore +from NanoVNASaver.Windows.Defaults import make_scrollable + logger = logging.getLogger(__name__) CABLE_PARAMETERS = ( @@ -84,16 +86,7 @@ class TDRWindow(QtWidgets.QWidget): QtWidgets.QShortcut(QtCore.Qt.Key_Escape, self, self.hide) layout = QtWidgets.QFormLayout() - - scrollarea = QtWidgets.QScrollArea() - scrollarea.setWidgetResizable(True) - outer = QtWidgets.QVBoxLayout() - outer.addWidget(scrollarea) - widget = QtWidgets.QWidget() - widget.setLayout(layout) - scrollarea.setWidget(widget) - self.setLayout(outer) - self.resize(scrollarea.size()) + make_scrollable(self, layout) self.tdr_velocity_dropdown = QtWidgets.QComboBox() for cable_name, velocity in CABLE_PARAMETERS: