| from PyQt6.QtWidgets import (
|
| QWidget, QVBoxLayout, QLabel, QLineEdit, QDateEdit,
|
| QPushButton, QGroupBox, QFormLayout, QDoubleSpinBox
|
| )
|
| from PyQt6.QtCore import QDate, pyqtSignal
|
|
|
| class ControlPanel(QWidget):
|
|
|
|
|
| start_signal = pyqtSignal(str, object, float)
|
| stop_signal = pyqtSignal()
|
|
|
| def __init__(self, parent=None):
|
| super().__init__(parent)
|
| self.init_ui()
|
|
|
| def init_ui(self):
|
| layout = QVBoxLayout()
|
|
|
|
|
| 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)
|
|
|
|
|
| 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)
|
|
|