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:
parent
c3b98d7fe8
commit
4ef667f562
@ -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
|
||||
|
||||
15
qa_smoke.py
15
qa_smoke.py
@ -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()
|
||||
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user