Добавить поддержку GAS 167 и УМП, улучшить обмен по CAN и последовательному порту
This commit is contained in:
@@ -403,24 +403,38 @@ class SerialTab(QWidget):
|
||||
button.setFixedHeight(30)
|
||||
button.setStyleSheet("QPushButton { padding: 3px 10px; }")
|
||||
|
||||
# Прокручиваемая область для кнопок макросов
|
||||
self.macros_scroll_area = QScrollArea()
|
||||
self.macros_scroll_area.setWidgetResizable(True)
|
||||
# Устанавливаем фиксированную высоту, чтобы вместить 3-4 строки макросов
|
||||
self.macros_scroll_area.setMinimumHeight(120) # Высота для 3-4 строк
|
||||
|
||||
self.macros_scroll_content = QWidget()
|
||||
self.macros_scroll_layout = QGridLayout()
|
||||
self.macros_scroll_content.setLayout(self.macros_scroll_layout)
|
||||
self.macros_scroll_area.setWidget(self.macros_scroll_content)
|
||||
self.macros_scroll_layout.setAlignment(Qt.AlignTop | Qt.AlignLeft)
|
||||
self.macros_scroll_layout.setContentsMargins(6, 6, 6, 6)
|
||||
self.macros_scroll_layout.setHorizontalSpacing(8)
|
||||
self.macros_scroll_layout.setVerticalSpacing(6)
|
||||
macros_layout.addWidget(self.macros_scroll_area)
|
||||
self.macros_splitter = QSplitter(Qt.Orientation.Horizontal)
|
||||
self.macros_splitter.setObjectName("macrosSplitter")
|
||||
self.macros_splitter.setChildrenCollapsible(False)
|
||||
self.macros_splitter.setHandleWidth(8)
|
||||
self.macros_splitter.setToolTip("Перетащите разделитель, чтобы изменить ширину панелей")
|
||||
self.macros_scroll_areas = []
|
||||
self.macros_scroll_layouts = []
|
||||
for side in ("Левая", "Правая"):
|
||||
area = QScrollArea()
|
||||
area.setAccessibleName(f"{side} панель макросов")
|
||||
area.setWidgetResizable(True)
|
||||
area.setMinimumSize(120, 120)
|
||||
content = QWidget()
|
||||
grid = QGridLayout(content)
|
||||
grid.setAlignment(Qt.AlignTop | Qt.AlignLeft)
|
||||
grid.setContentsMargins(6, 6, 6, 6)
|
||||
grid.setVerticalSpacing(6)
|
||||
area.setWidget(content)
|
||||
self.macros_splitter.addWidget(area)
|
||||
self.macros_scroll_areas.append(area)
|
||||
self.macros_scroll_layouts.append(grid)
|
||||
self.macros_splitter.setStretchFactor(0, 1)
|
||||
self.macros_splitter.setStretchFactor(1, 1)
|
||||
self.macros_splitter.setSizes([1, 1])
|
||||
# Keep the existing attributes available to terminal integrations.
|
||||
self.macros_scroll_area = self.macros_scroll_areas[0]
|
||||
self.macros_scroll_content = self.macros_scroll_area.widget()
|
||||
self.macros_scroll_layout = self.macros_scroll_layouts[0]
|
||||
macros_layout.addWidget(self.macros_splitter, 1)
|
||||
|
||||
macros_group.setLayout(macros_layout)
|
||||
layout.addWidget(macros_group)
|
||||
layout.addWidget(macros_group, 1)
|
||||
|
||||
# --- ВНЕ ГРУППЫ: Результаты чтения ---
|
||||
results_layout = QGridLayout()
|
||||
@@ -447,7 +461,6 @@ class SerialTab(QWidget):
|
||||
results_frame.setLayout(results_layout)
|
||||
layout.addWidget(results_frame)
|
||||
|
||||
layout.addStretch()
|
||||
self.setLayout(layout)
|
||||
|
||||
# После создания интерфейса создаем кнопки для загруженных макросов
|
||||
@@ -590,7 +603,7 @@ class SerialTab(QWidget):
|
||||
container_layout.addWidget(delete_btn)
|
||||
container.setLayout(container_layout)
|
||||
|
||||
self.macros_scroll_layout.addWidget(container, row, col, 1, 1) # span изменен на 1
|
||||
self.macros_scroll_layouts[col].addWidget(container, row, 0)
|
||||
self.macro_buttons.append(container)
|
||||
|
||||
|
||||
@@ -680,7 +693,7 @@ class SerialTab(QWidget):
|
||||
def _set_macro_controls(self, running):
|
||||
self.stop_macro_btn.setEnabled(running)
|
||||
for widget in (self.bus_write_btn, self.bus_read_btn, self.create_macro_btn,
|
||||
self.macros_scroll_area, self.raw_widget):
|
||||
self.macros_splitter, self.raw_widget):
|
||||
widget.setEnabled(not running)
|
||||
|
||||
def _next_macro_command(self, generation):
|
||||
@@ -748,10 +761,11 @@ class SerialTab(QWidget):
|
||||
def rebuild_macros_layout(self):
|
||||
"""Перестроить layout макросов"""
|
||||
# Очищаем layout
|
||||
for i in reversed(range(self.macros_scroll_layout.count())):
|
||||
item = self.macros_scroll_layout.itemAt(i)
|
||||
if item and item.widget():
|
||||
item.widget().setParent(None)
|
||||
for grid in self.macros_scroll_layouts:
|
||||
while grid.count():
|
||||
item = grid.takeAt(0)
|
||||
if item.widget():
|
||||
item.widget().deleteLater()
|
||||
|
||||
# Очищаем список кнопок
|
||||
self.macro_buttons.clear()
|
||||
|
||||
Reference in New Issue
Block a user