from PyQt6.QtWidgets import ( QWidget, QVBoxLayout, QLabel, QLineEdit, QDateEdit, QPushButton, QGroupBox, QFormLayout, QDoubleSpinBox ) from PyQt6.QtCore import QDate, pyqtSignal class ControlPanel(QWidget): # Signals to notify Main Window # Adjusted to include multiplier start_signal = pyqtSignal(str, object, float) # symbol, date, multiplier stop_signal = pyqtSignal() def __init__(self, parent=None): super().__init__(parent) self.init_ui() def init_ui(self): layout = QVBoxLayout() # Group: Settings group = QGroupBox("Settings") form = QFormLayout() self.symbol_input = QLineEdit("XAUUSD") self.date_input = QDateEdit() self.date_input.setDate(QDate.currentDate()) self.date_input.setCalendarPopup(True) self.multiplier_input = QDoubleSpinBox() self.multiplier_input.setRange(0.1, 100.0) self.multiplier_input.setDecimals(2) self.multiplier_input.setValue(2.0) self.multiplier_input.setSingleStep(0.5) form.addRow("Symbol:", self.symbol_input) form.addRow("Date:", self.date_input) form.addRow("Spread Multiplier (x):", self.multiplier_input) group.setLayout(form) layout.addWidget(group) # Buttons self.btn_start = QPushButton("Start Stream") self.btn_start.clicked.connect(self.on_start) self.btn_start.setStyleSheet("background-color: green; color: white; font-weight: bold;") self.btn_stop = QPushButton("Stop Stream") self.btn_stop.clicked.connect(self.on_stop) self.btn_stop.setStyleSheet("background-color: red; color: white; font-weight: bold;") self.btn_stop.setEnabled(False) layout.addWidget(self.btn_start) layout.addWidget(self.btn_stop) layout.addStretch() self.setLayout(layout) def on_start(self): symbol = self.symbol_input.text() date = self.date_input.date().toPyDate() multiplier = self.multiplier_input.value() self.start_signal.emit(symbol, date, multiplier) self.btn_start.setEnabled(False) self.btn_stop.setEnabled(True) self.symbol_input.setEnabled(False) self.date_input.setEnabled(False) self.multiplier_input.setEnabled(False) def on_stop(self): self.stop_signal.emit() self.btn_start.setEnabled(True) self.btn_stop.setEnabled(False) self.symbol_input.setEnabled(True) self.date_input.setEnabled(True) self.multiplier_input.setEnabled(True)