You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
77 lines
2.7 KiB
77 lines
2.7 KiB
# File: components/i2c/i2c_command_editor.py
|
|
|
|
from PyQt6.QtWidgets import (
|
|
QDialog,
|
|
QVBoxLayout,
|
|
QHBoxLayout,
|
|
QLineEdit,
|
|
QPushButton,
|
|
QFormLayout,
|
|
QComboBox,
|
|
QSpinBox,
|
|
)
|
|
from PyQt6.QtCore import Qt
|
|
|
|
|
|
class I2CCommandEditorDialog(QDialog):
|
|
def __init__(self, command=None):
|
|
super().__init__()
|
|
|
|
self.setWindowTitle("Modify I2C Command" if command else "Add I2C Command")
|
|
|
|
form_layout = QFormLayout()
|
|
form_layout.setLabelAlignment(Qt.AlignmentFlag.AlignRight)
|
|
form_layout.setFormAlignment(Qt.AlignmentFlag.AlignTop)
|
|
form_layout.setSpacing(10)
|
|
|
|
# === Input Fields ===
|
|
self.name_input = QLineEdit()
|
|
self.description_input = QLineEdit()
|
|
self.category_input = QLineEdit()
|
|
self.operation_input = QComboBox()
|
|
self.operation_input.addItems(["read", "write"])
|
|
self.register_input = QSpinBox()
|
|
self.register_input.setRange(0, 255)
|
|
self.hex_input = QLineEdit()
|
|
self.hex_input.setPlaceholderText("0x01,0x02")
|
|
|
|
if command:
|
|
self.name_input.setText(command.get("name", ""))
|
|
self.description_input.setText(command.get("description", ""))
|
|
self.category_input.setText(command.get("category", ""))
|
|
self.operation_input.setCurrentText(command.get("operation", "read"))
|
|
self.register_input.setValue(command.get("register", 0))
|
|
self.hex_input.setText(command.get("hex_string", ""))
|
|
|
|
form_layout.addRow("Name:", self.name_input)
|
|
form_layout.addRow("Description:", self.description_input)
|
|
form_layout.addRow("Category:", self.category_input)
|
|
form_layout.addRow("Operation:", self.operation_input)
|
|
form_layout.addRow("Register:", self.register_input)
|
|
form_layout.addRow("Hex:", self.hex_input)
|
|
|
|
button_layout = QHBoxLayout()
|
|
self.ok_button = QPushButton("OK")
|
|
self.cancel_button = QPushButton("Cancel")
|
|
self.ok_button.clicked.connect(self.accept)
|
|
self.cancel_button.clicked.connect(self.reject)
|
|
button_layout.addStretch()
|
|
button_layout.addWidget(self.ok_button)
|
|
button_layout.addWidget(self.cancel_button)
|
|
|
|
layout = QVBoxLayout(self)
|
|
layout.addLayout(form_layout)
|
|
layout.addLayout(button_layout)
|
|
|
|
self.setMinimumWidth(400)
|
|
|
|
def get_data(self):
|
|
return {
|
|
"name": self.name_input.text().strip(),
|
|
"description": self.description_input.text().strip(),
|
|
"category": self.category_input.text().strip(),
|
|
"operation": self.operation_input.currentText(),
|
|
"register": self.register_input.value(),
|
|
"hex_string": self.hex_input.text().strip(),
|
|
}
|