| | 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)
|
| |
|