Added new connection styles
This commit is contained in:
@@ -4,7 +4,7 @@ from pathlib import Path
|
||||
|
||||
from PySide6.QtCore import Qt, Slot
|
||||
from PySide6.QtGui import QCloseEvent
|
||||
from PySide6.QtWidgets import QFileDialog, QMainWindow, QMenu, QMessageBox
|
||||
from PySide6.QtWidgets import QButtonGroup, QFileDialog, QMainWindow, QMenu, QMessageBox
|
||||
|
||||
from bedit.core.model import Component, Port
|
||||
from bedit.core.serializer import JsonDocumentSerializer
|
||||
@@ -93,8 +93,31 @@ class MainWindow(QMainWindow):
|
||||
self.ui.graphView.selectionAvailabilityChanged.connect(
|
||||
lambda _available: self._update_edit_actions()
|
||||
)
|
||||
self.mode_button_group = QButtonGroup(self)
|
||||
self.mode_button_group.setExclusive(True)
|
||||
self.mode_button_group.addButton(self.ui.pointerToolButton)
|
||||
self.mode_button_group.addButton(self.ui.connectToolButton)
|
||||
self.routing_button_group = QButtonGroup(self)
|
||||
self.routing_button_group.setExclusive(True)
|
||||
for button in (
|
||||
self.ui.directRoutingButton,
|
||||
self.ui.angledRoutingButton,
|
||||
self.ui.splineRoutingButton,
|
||||
):
|
||||
self.routing_button_group.addButton(button)
|
||||
self.ui.navigateUpButton.clicked.connect(self.navigate_up)
|
||||
self.ui.navigateDownButton.clicked.connect(self.navigate_down)
|
||||
self.ui.pointerToolButton.clicked.connect(lambda: self.set_graph_tool("pointer"))
|
||||
self.ui.connectToolButton.clicked.connect(lambda: self.set_graph_tool("connect"))
|
||||
self.ui.directRoutingButton.clicked.connect(
|
||||
lambda: self.set_connection_routing("direct")
|
||||
)
|
||||
self.ui.angledRoutingButton.clicked.connect(
|
||||
lambda: self.set_connection_routing("angled")
|
||||
)
|
||||
self.ui.splineRoutingButton.clicked.connect(
|
||||
lambda: self.set_connection_routing("spline")
|
||||
)
|
||||
self.ui.applyJsonButton.clicked.connect(self.apply_json)
|
||||
self.document_controller.activeGraphChanged.connect(self._active_graph_changed)
|
||||
|
||||
@@ -173,7 +196,7 @@ class MainWindow(QMainWindow):
|
||||
self.ui.workspaceModeLabel.setText("")
|
||||
self.ui.workspaceStack.setCurrentWidget(self.ui.emptyPage)
|
||||
self.ui.applyJsonButton.setVisible(False)
|
||||
self.ui.pointerToolButton.setVisible(False)
|
||||
self._set_graph_controls_visible(False)
|
||||
self._update_edit_actions()
|
||||
return
|
||||
self.ui.graphBreadcrumbLabel.setText(" › ".join(self.document_controller.breadcrumb()))
|
||||
@@ -184,7 +207,7 @@ class MainWindow(QMainWindow):
|
||||
self.ui.workspaceModeLabel.setText("Graph" if is_graph else "Text")
|
||||
self.ui.workspaceStack.setCurrentWidget(self.ui.graphPage if is_graph else self.ui.jsonPage)
|
||||
self.ui.applyJsonButton.setVisible(not is_graph)
|
||||
self.ui.pointerToolButton.setVisible(is_graph)
|
||||
self._set_graph_controls_visible(is_graph)
|
||||
if is_graph:
|
||||
self.set_graph_tool("pointer")
|
||||
else:
|
||||
@@ -202,15 +225,43 @@ class MainWindow(QMainWindow):
|
||||
)
|
||||
self.ui.actionSelectAll.setEnabled(is_graph)
|
||||
self.ui.actionPaste.setEnabled(is_graph)
|
||||
self.ui.navigateDownButton.setEnabled(
|
||||
is_graph and self.ui.graphView.has_single_selected_component()
|
||||
)
|
||||
|
||||
@Slot()
|
||||
def navigate_up(self) -> None:
|
||||
if self._resolve_source_edits():
|
||||
self.document_controller.navigate_up()
|
||||
|
||||
@Slot()
|
||||
def navigate_down(self) -> None:
|
||||
if self._resolve_source_edits():
|
||||
self.ui.graphView.open_selected_component()
|
||||
|
||||
def _set_graph_controls_visible(self, visible: bool) -> None:
|
||||
for widget in (
|
||||
self.ui.pointerToolButton,
|
||||
self.ui.connectToolButton,
|
||||
self.ui.routingLabel,
|
||||
self.ui.directRoutingButton,
|
||||
self.ui.angledRoutingButton,
|
||||
self.ui.splineRoutingButton,
|
||||
):
|
||||
widget.setVisible(visible)
|
||||
|
||||
def set_graph_tool(self, mode: str) -> None:
|
||||
self.ui.graphView.set_tool_mode("pointer")
|
||||
self.ui.pointerToolButton.setChecked(True)
|
||||
self.ui.graphView.set_tool_mode(mode)
|
||||
(self.ui.pointerToolButton if mode == "pointer" else self.ui.connectToolButton).setChecked(True)
|
||||
|
||||
def set_connection_routing(self, routing: str) -> None:
|
||||
self.ui.graphView.set_connection_routing(routing)
|
||||
buttons = {
|
||||
"direct": self.ui.directRoutingButton,
|
||||
"angled": self.ui.angledRoutingButton,
|
||||
"spline": self.ui.splineRoutingButton,
|
||||
}
|
||||
buttons[routing].setChecked(True)
|
||||
|
||||
def _load_source_json(self) -> None:
|
||||
component = self.document_controller.active_component
|
||||
|
||||
Reference in New Issue
Block a user