File size: 2,736 Bytes
c99df4c | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 | 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)
|