48 lines
1.3 KiB
Python
48 lines
1.3 KiB
Python
import sys, os
|
|
|
|
_root = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
|
|
_gui = os.path.dirname(os.path.abspath(__file__))
|
|
for _p in [_root, _gui]:
|
|
if _p not in sys.path:
|
|
sys.path.insert(0, _p)
|
|
|
|
from PyQt5.QtWidgets import (
|
|
QWidget, QScrollArea, QGridLayout, QVBoxLayout, QFrame,
|
|
)
|
|
from PyQt5.QtCore import Qt
|
|
|
|
from data_model import ReceiverManager
|
|
from plot_widget import SinglePlotWidget
|
|
|
|
|
|
class PlotTab(QWidget):
|
|
NUM_PLOTS = 8
|
|
|
|
def __init__(self, model: ReceiverManager):
|
|
super().__init__()
|
|
outer = QVBoxLayout(self)
|
|
outer.setContentsMargins(0, 0, 0, 0)
|
|
|
|
scroll = QScrollArea()
|
|
scroll.setWidgetResizable(True)
|
|
scroll.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
|
|
|
|
container = QWidget()
|
|
grid = QGridLayout(container)
|
|
grid.setContentsMargins(4, 4, 4, 4)
|
|
grid.setSpacing(6)
|
|
|
|
for i in range(self.NUM_PLOTS):
|
|
frame = QFrame()
|
|
frame.setFrameShape(QFrame.StyledPanel)
|
|
frame.setFrameShadow(QFrame.Raised)
|
|
fl = QVBoxLayout(frame)
|
|
fl.setContentsMargins(2, 2, 2, 2)
|
|
pw = SinglePlotWidget(model)
|
|
pw.setMinimumHeight(230)
|
|
fl.addWidget(pw)
|
|
grid.addWidget(frame, i // 2, i % 2)
|
|
|
|
scroll.setWidget(container)
|
|
outer.addWidget(scroll)
|