Add Tools actions to main QToolBar separated from other actions

- Добавлен QToolBar (Панель инструментов) в главное окно.
- На панель инструментов вынесены все действия из меню Инструменты (Новая линия, Новый светодиод, Сгенерировать скрипт, Автоблоки, Против часовой, Кисть).
- Действия инструментов отделены от основных действий (Создать, Открыть, Сохранить, Отменить, Повторить) вертикальным разделителем (separator).
- Исправлен и обновлен тест test_main_window_has_classic_menu_bar в qa_smoke.py.
This commit is contained in:
Данил Ярош 2026-07-31 15:55:32 +03:00
parent c3b98d7fe8
commit 4ef667f562
2 changed files with 40 additions and 6 deletions

View File

@ -28,6 +28,7 @@ from PySide6.QtWidgets import (
QStackedWidget,
QTableWidget,
QTableWidgetItem,
QToolBar,
QToolButton,
QTreeWidget,
QTreeWidgetItem,
@ -586,6 +587,36 @@ class MainWindow(QMainWindow):
splitter.setSizes([SIDEBAR_DEFAULT_WIDTH, 1000])
self.setCentralWidget(splitter)
# Create main toolbar
toolbar = QToolBar("Панель инструментов", self)
toolbar.setObjectName("main_toolbar")
toolbar.setMovable(False)
toolbar.setIconSize(QSize(20, 20))
toolbar.setToolButtonStyle(Qt.ToolButtonIconOnly)
# Standard file & edit actions
toolbar.addAction(self.actions["new"])
toolbar.addAction(self.actions["open"])
toolbar.addAction(self.actions["save"])
toolbar.addSeparator()
toolbar.addAction(self.actions["undo"])
toolbar.addAction(self.actions["redo"])
# Vertical separator between standard actions and tools
toolbar.addSeparator()
# Tools menu actions
toolbar.addAction(self.actions["add_line"])
toolbar.addAction(self.actions["add_led"])
toolbar.addAction(self.actions["generate_script"])
toolbar.addSeparator()
toolbar.addAction(self.actions["auto_blocks"])
toolbar.addAction(self.actions["counterclockwise"])
toolbar.addSeparator()
toolbar.addAction(self.actions["brush"])
self.addToolBar(toolbar)
def _on_sidebar_content_splitter_moved(self, _pos: int, _index: int) -> None:
if self.sidebar_content_splitter is None or self._sidebar_collapsed:
return

View File

@ -1909,11 +1909,6 @@ def test_canvas_refresh_does_not_accumulate_connection_items() -> None:
assert len(canvas.items_by_id) == len(doc.points)
def test_main_window_has_classic_menu_bar() -> None:
if MainWindow is None or QApplication is None:
return
app = QApplication.instance() or QApplication([])
window = MainWindow()
def test_main_window_has_classic_menu_bar() -> None:
if MainWindow is None or QApplication is None:
return
@ -1923,7 +1918,15 @@ def test_main_window_has_classic_menu_bar() -> None:
menu_titles = [action.text() for action in window.menuBar().actions()]
assert menu_titles[:4] == ["Файл", "Правка", "Вид", "Инструменты"]
assert QToolBar is None or not window.findChildren(QToolBar)
if QToolBar is not None:
toolbars = window.findChildren(QToolBar)
assert len(toolbars) == 1
tb = toolbars[0]
actions = [action.text() for action in tb.actions() if not action.isSeparator()]
assert "Новая линия" in actions
assert "Новый светодиод" in actions
assert "Кисть" in actions
window.close()