src/bedit/
├── __main__.py
├── core/ # Pure Python, no PySide
│ ├── model.py
│ ├── port_types.py
│ ├── serializer.py
│ └── libraries.py
└── gui/ # All Qt-dependent code
├── app.py
├── main_window.py
├── preferences.py
├── controllers/
├── dialogs/
├── graphics/
├── models/
└── generated/ # Designer/resource output only
Notable improvements:
Domain models, serialization, port types, and library parsing are now Qt-free.
Qt signals and undo infrastructure are explicitly isolated under gui/controllers.
Library parsing is separated from the Qt repository and tree models.
All generated Python is contained in gui/generated.
Designer build tasks now write to the generated directory.
The application entry point and package metadata use the new paths.
README now documents the structure and dependency rules.
Removed the old mixed document, library, and workspace packages.
495 lines
18 KiB
XML
495 lines
18 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<ui version="4.0">
|
|
<class>MainWindow</class>
|
|
<widget class="QMainWindow" name="MainWindow">
|
|
<property name="geometry">
|
|
<rect>
|
|
<x>0</x>
|
|
<y>0</y>
|
|
<width>1000</width>
|
|
<height>700</height>
|
|
</rect>
|
|
</property>
|
|
<property name="windowTitle">
|
|
<string>BEdit</string>
|
|
</property>
|
|
<widget class="QWidget" name="centralwidget">
|
|
<layout class="QHBoxLayout" name="workspaceLayout">
|
|
<property name="spacing">
|
|
<number>0</number>
|
|
</property>
|
|
<property name="leftMargin">
|
|
<number>0</number>
|
|
</property>
|
|
<property name="topMargin">
|
|
<number>0</number>
|
|
</property>
|
|
<property name="rightMargin">
|
|
<number>0</number>
|
|
</property>
|
|
<property name="bottomMargin">
|
|
<number>0</number>
|
|
</property>
|
|
<item>
|
|
<widget class="QSplitter" name="workspaceSplitter">
|
|
<property name="sizePolicy">
|
|
<sizepolicy hsizetype="Expanding" vsizetype="Preferred">
|
|
<horstretch>0</horstretch>
|
|
<verstretch>0</verstretch>
|
|
</sizepolicy>
|
|
</property>
|
|
<property name="orientation">
|
|
<enum>Qt::Orientation::Horizontal</enum>
|
|
</property>
|
|
<property name="childrenCollapsible">
|
|
<bool>false</bool>
|
|
</property>
|
|
<widget class="QMainWindow" name="leftDockHost">
|
|
<property name="minimumSize">
|
|
<size>
|
|
<width>220</width>
|
|
<height>0</height>
|
|
</size>
|
|
</property>
|
|
<widget class="QDockWidget" name="panel_libraries">
|
|
<property name="minimumSize">
|
|
<size>
|
|
<width>220</width>
|
|
<height>91</height>
|
|
</size>
|
|
</property>
|
|
<property name="windowTitle">
|
|
<string>Libraries</string>
|
|
</property>
|
|
<attribute name="dockWidgetArea">
|
|
<number>1</number>
|
|
</attribute>
|
|
<widget class="QWidget" name="dockWidgetContents">
|
|
<layout class="QVBoxLayout" name="librariesLayout">
|
|
<property name="spacing">
|
|
<number>0</number>
|
|
</property>
|
|
<property name="leftMargin">
|
|
<number>0</number>
|
|
</property>
|
|
<property name="topMargin">
|
|
<number>0</number>
|
|
</property>
|
|
<property name="rightMargin">
|
|
<number>0</number>
|
|
</property>
|
|
<property name="bottomMargin">
|
|
<number>0</number>
|
|
</property>
|
|
<item>
|
|
<widget class="QTreeView" name="treeView">
|
|
<property name="alternatingRowColors">
|
|
<bool>true</bool>
|
|
</property>
|
|
<property name="uniformRowHeights">
|
|
<bool>true</bool>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
</layout>
|
|
</widget>
|
|
</widget>
|
|
<widget class="QDockWidget" name="panel_document">
|
|
<property name="minimumSize">
|
|
<size><width>220</width><height>91</height></size>
|
|
</property>
|
|
<property name="windowTitle"><string>Document</string></property>
|
|
<attribute name="dockWidgetArea"><number>1</number></attribute>
|
|
<widget class="QWidget" name="documentDockContents">
|
|
<layout class="QVBoxLayout" name="documentPanelLayout">
|
|
<property name="spacing"><number>0</number></property>
|
|
<property name="leftMargin"><number>0</number></property>
|
|
<property name="topMargin"><number>0</number></property>
|
|
<property name="rightMargin"><number>0</number></property>
|
|
<property name="bottomMargin"><number>0</number></property>
|
|
<item>
|
|
<widget class="QTreeView" name="documentTreeView">
|
|
<property name="alternatingRowColors"><bool>true</bool></property>
|
|
<property name="uniformRowHeights"><bool>true</bool></property>
|
|
</widget>
|
|
</item>
|
|
</layout>
|
|
</widget>
|
|
</widget>
|
|
</widget>
|
|
<widget class="QWidget" name="workspace">
|
|
<property name="sizePolicy">
|
|
<sizepolicy hsizetype="Expanding" vsizetype="Preferred">
|
|
<horstretch>1</horstretch>
|
|
<verstretch>0</verstretch>
|
|
</sizepolicy>
|
|
</property>
|
|
<layout class="QVBoxLayout" name="workspaceEditorLayout">
|
|
<property name="spacing"><number>0</number></property>
|
|
<property name="leftMargin"><number>0</number></property>
|
|
<property name="topMargin"><number>0</number></property>
|
|
<property name="rightMargin"><number>0</number></property>
|
|
<property name="bottomMargin"><number>0</number></property>
|
|
<item>
|
|
<widget class="QFrame" name="workspaceHeader">
|
|
<property name="minimumSize"><size><width>0</width><height>34</height></size></property>
|
|
<property name="maximumSize"><size><width>16777215</width><height>34</height></size></property>
|
|
<property name="frameShape"><enum>QFrame::Shape::StyledPanel</enum></property>
|
|
<layout class="QHBoxLayout" name="workspaceHeaderLayout">
|
|
<property name="leftMargin"><number>6</number></property>
|
|
<property name="topMargin"><number>2</number></property>
|
|
<property name="rightMargin"><number>6</number></property>
|
|
<property name="bottomMargin"><number>2</number></property>
|
|
<item><widget class="QToolButton" name="navigateUpButton"><property name="text"><string>Up</string></property><property name="toolTip"><string>Open the containing graph</string></property></widget></item>
|
|
<item><widget class="QLabel" name="graphBreadcrumbLabel"><property name="text"><string>Untitled</string></property></widget></item>
|
|
<item><widget class="QLabel" name="workspaceModeLabel"><property name="text"><string>Graph</string></property></widget></item>
|
|
<item><spacer name="workspaceHeaderSpacer"><property name="orientation"><enum>Qt::Orientation::Horizontal</enum></property><property name="sizeHint" stdset="0"><size><width>40</width><height>20</height></size></property></spacer></item>
|
|
<item><widget class="QPushButton" name="applyJsonButton"><property name="text"><string>Apply JSON</string></property><property name="visible"><bool>false</bool></property></widget></item>
|
|
<item><widget class="QToolButton" name="pointerToolButton"><property name="text"><string>Pointer</string></property><property name="checkable"><bool>true</bool></property><property name="checked"><bool>true</bool></property><property name="autoExclusive"><bool>true</bool></property></widget></item>
|
|
<item><widget class="QToolButton" name="inputToolButton"><property name="text"><string>Input</string></property><property name="toolTip"><string>Add an interface input</string></property><property name="checkable"><bool>true</bool></property><property name="autoExclusive"><bool>true</bool></property></widget></item>
|
|
<item><widget class="QToolButton" name="outputToolButton"><property name="text"><string>Output</string></property><property name="toolTip"><string>Add an interface output</string></property><property name="checkable"><bool>true</bool></property><property name="autoExclusive"><bool>true</bool></property></widget></item>
|
|
</layout>
|
|
</widget>
|
|
</item>
|
|
<item>
|
|
<widget class="QStackedWidget" name="workspaceStack">
|
|
<property name="currentIndex"><number>0</number></property>
|
|
<widget class="QWidget" name="graphPage">
|
|
<layout class="QVBoxLayout" name="graphPageLayout">
|
|
<property name="leftMargin"><number>0</number></property><property name="topMargin"><number>0</number></property><property name="rightMargin"><number>0</number></property><property name="bottomMargin"><number>0</number></property>
|
|
<item><widget class="GraphWorkspaceView" name="graphView"/></item>
|
|
</layout>
|
|
</widget>
|
|
<widget class="QWidget" name="jsonPage">
|
|
<layout class="QVBoxLayout" name="jsonPageLayout">
|
|
<property name="leftMargin"><number>0</number></property><property name="topMargin"><number>0</number></property><property name="rightMargin"><number>0</number></property><property name="bottomMargin"><number>0</number></property>
|
|
<item><widget class="QPlainTextEdit" name="jsonEditor"><property name="lineWrapMode"><enum>QPlainTextEdit::LineWrapMode::NoWrap</enum></property><property name="placeholderText"><string>Component JSON</string></property></widget></item>
|
|
</layout>
|
|
</widget>
|
|
<widget class="QWidget" name="emptyPage">
|
|
<layout class="QVBoxLayout" name="emptyPageLayout">
|
|
<item>
|
|
<widget class="QLabel" name="emptyWorkspaceLabel">
|
|
<property name="text"><string>No document open</string></property>
|
|
<property name="alignment"><set>Qt::AlignmentFlag::AlignCenter</set></property>
|
|
</widget>
|
|
</item>
|
|
</layout>
|
|
</widget>
|
|
</widget>
|
|
</item>
|
|
</layout>
|
|
</widget>
|
|
</widget>
|
|
</item>
|
|
</layout>
|
|
</widget>
|
|
<widget class="QMenuBar" name="menubar">
|
|
<property name="geometry">
|
|
<rect>
|
|
<x>0</x>
|
|
<y>0</y>
|
|
<width>1000</width>
|
|
<height>24</height>
|
|
</rect>
|
|
</property>
|
|
<widget class="QMenu" name="menuFile">
|
|
<property name="title">
|
|
<string>&File</string>
|
|
</property>
|
|
<addaction name="actionNew"/>
|
|
<addaction name="actionOpen"/>
|
|
<addaction name="separator"/>
|
|
<addaction name="actionSave"/>
|
|
<addaction name="actionSaveAs"/>
|
|
<addaction name="separator"/>
|
|
<addaction name="actionClose"/>
|
|
<addaction name="actionExit"/>
|
|
</widget>
|
|
<widget class="QMenu" name="menuEdit">
|
|
<property name="title">
|
|
<string>&Edit</string>
|
|
</property>
|
|
<addaction name="actionUndo"/>
|
|
<addaction name="actionRedo"/>
|
|
<addaction name="separator"/>
|
|
<addaction name="actionCopy"/>
|
|
<addaction name="actionCut"/>
|
|
<addaction name="actionPaste"/>
|
|
<addaction name="actionDelete"/>
|
|
<addaction name="actionSelectAll"/>
|
|
<addaction name="separator"/>
|
|
<addaction name="actionSettings"/>
|
|
</widget>
|
|
<widget class="QMenu" name="menuView">
|
|
<property name="title">
|
|
<string>&View</string>
|
|
</property>
|
|
<widget class="QMenu" name="menuPanels">
|
|
<property name="title">
|
|
<string>&Panels</string>
|
|
</property>
|
|
</widget>
|
|
<widget class="QMenu" name="menuToolbars">
|
|
<property name="title">
|
|
<string>&Toolbars</string>
|
|
</property>
|
|
</widget>
|
|
<addaction name="menuPanels"/>
|
|
<addaction name="menuToolbars"/>
|
|
</widget>
|
|
<widget class="QMenu" name="menuHelp">
|
|
<property name="title">
|
|
<string>&Help</string>
|
|
</property>
|
|
<addaction name="actionAbout"/>
|
|
<addaction name="actionAboutQt"/>
|
|
</widget>
|
|
<addaction name="menuFile"/>
|
|
<addaction name="menuEdit"/>
|
|
<addaction name="menuView"/>
|
|
<addaction name="menuHelp"/>
|
|
</widget>
|
|
<widget class="QToolBar" name="fileToolbar">
|
|
<property name="sizePolicy">
|
|
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
|
|
<horstretch>0</horstretch>
|
|
<verstretch>0</verstretch>
|
|
</sizepolicy>
|
|
</property>
|
|
<property name="minimumSize">
|
|
<size>
|
|
<width>0</width>
|
|
<height>40</height>
|
|
</size>
|
|
</property>
|
|
<property name="maximumSize">
|
|
<size>
|
|
<width>16777215</width>
|
|
<height>40</height>
|
|
</size>
|
|
</property>
|
|
<property name="windowTitle">
|
|
<string>File</string>
|
|
</property>
|
|
<property name="iconSize">
|
|
<size>
|
|
<width>24</width>
|
|
<height>24</height>
|
|
</size>
|
|
</property>
|
|
<attribute name="toolBarArea">
|
|
<enum>TopToolBarArea</enum>
|
|
</attribute>
|
|
<attribute name="toolBarBreak">
|
|
<bool>false</bool>
|
|
</attribute>
|
|
<addaction name="actionNew"/>
|
|
<addaction name="actionOpen"/>
|
|
<addaction name="actionSave"/>
|
|
<addaction name="actionSaveAs"/>
|
|
</widget>
|
|
<widget class="QToolBar" name="editToolbar">
|
|
<property name="windowTitle">
|
|
<string>Edit</string>
|
|
</property>
|
|
<attribute name="toolBarArea">
|
|
<enum>TopToolBarArea</enum>
|
|
</attribute>
|
|
<attribute name="toolBarBreak">
|
|
<bool>false</bool>
|
|
</attribute>
|
|
<addaction name="actionUndo"/>
|
|
<addaction name="actionRedo"/>
|
|
<addaction name="actionCopy"/>
|
|
<addaction name="actionCut"/>
|
|
<addaction name="actionPaste"/>
|
|
</widget>
|
|
<widget class="QToolBar" name="transformToolbar">
|
|
<property name="windowTitle"><string>Transform</string></property>
|
|
<attribute name="toolBarArea"><enum>TopToolBarArea</enum></attribute>
|
|
<attribute name="toolBarBreak"><bool>false</bool></attribute>
|
|
<addaction name="actionRotateClockwise"/>
|
|
</widget>
|
|
<action name="actionNew">
|
|
<property name="icon">
|
|
<iconset resource="../resources/resources.qrc">
|
|
<normaloff>:/icons/icons/document-new.png</normaloff>:/icons/icons/document-new.png</iconset>
|
|
</property>
|
|
<property name="text">
|
|
<string>&New</string>
|
|
</property>
|
|
<property name="statusTip">
|
|
<string>Create a new document</string>
|
|
</property>
|
|
<property name="shortcut">
|
|
<string>Ctrl+N</string>
|
|
</property>
|
|
</action>
|
|
<action name="actionRotateClockwise">
|
|
<property name="icon">
|
|
<iconset resource="../resources/resources.qrc">
|
|
<normaloff>:/icons/icons/transform-rotate.png</normaloff>:/icons/icons/transform-rotate.png</iconset>
|
|
</property>
|
|
<property name="text"><string>Rotate Clockwise</string></property>
|
|
<property name="toolTip"><string>Rotate selected blocks clockwise by 90 degrees</string></property>
|
|
<property name="shortcut"><string>Ctrl+R</string></property>
|
|
</action>
|
|
<action name="actionOpen">
|
|
<property name="icon">
|
|
<iconset resource="../resources/resources.qrc">
|
|
<normaloff>:/icons/icons/document-open.png</normaloff>:/icons/icons/document-open.png</iconset>
|
|
</property>
|
|
<property name="text">
|
|
<string>&Open…</string>
|
|
</property>
|
|
<property name="statusTip">
|
|
<string>Open a document</string>
|
|
</property>
|
|
<property name="shortcut">
|
|
<string>Ctrl+O</string>
|
|
</property>
|
|
</action>
|
|
<action name="actionSave">
|
|
<property name="icon">
|
|
<iconset resource="../resources/resources.qrc">
|
|
<normaloff>:/icons/icons/document-save.png</normaloff>:/icons/icons/document-save.png</iconset>
|
|
</property>
|
|
<property name="text">
|
|
<string>&Save</string>
|
|
</property>
|
|
<property name="statusTip">
|
|
<string>Save the current document</string>
|
|
</property>
|
|
<property name="shortcut">
|
|
<string>Ctrl+S</string>
|
|
</property>
|
|
</action>
|
|
<action name="actionSaveAs">
|
|
<property name="icon">
|
|
<iconset resource="../resources/resources.qrc">
|
|
<normaloff>:/icons/icons/document-save-as.png</normaloff>:/icons/icons/document-save-as.png</iconset>
|
|
</property>
|
|
<property name="text">
|
|
<string>Save &As…</string>
|
|
</property>
|
|
<property name="shortcut">
|
|
<string>Ctrl+Shift+S</string>
|
|
</property>
|
|
</action>
|
|
<action name="actionExit">
|
|
<property name="text">
|
|
<string>E&xit</string>
|
|
</property>
|
|
<property name="shortcut">
|
|
<string>Ctrl+Q</string>
|
|
</property>
|
|
</action>
|
|
<action name="actionClose">
|
|
<property name="text"><string>&Close Document</string></property>
|
|
<property name="shortcut"><string>Ctrl+W</string></property>
|
|
</action>
|
|
<action name="actionUndo">
|
|
<property name="icon">
|
|
<iconset resource="../resources/resources.qrc">
|
|
<normaloff>:/icons/icons/edit-undo.png</normaloff>:/icons/icons/edit-undo.png</iconset>
|
|
</property>
|
|
<property name="text">
|
|
<string>&Undo</string>
|
|
</property>
|
|
<property name="shortcut">
|
|
<string>Ctrl+Z</string>
|
|
</property>
|
|
</action>
|
|
<action name="actionRedo">
|
|
<property name="icon">
|
|
<iconset resource="../resources/resources.qrc">
|
|
<normaloff>:/icons/icons/edit-redo.png</normaloff>:/icons/icons/edit-redo.png</iconset>
|
|
</property>
|
|
<property name="text">
|
|
<string>&Redo</string>
|
|
</property>
|
|
<property name="shortcut">
|
|
<string>Ctrl+Y</string>
|
|
</property>
|
|
</action>
|
|
<action name="actionCut">
|
|
<property name="icon">
|
|
<iconset resource="../resources/resources.qrc">
|
|
<normaloff>:/icons/icons/edit-cut.png</normaloff>:/icons/icons/edit-cut.png</iconset>
|
|
</property>
|
|
<property name="text">
|
|
<string>Cu&t</string>
|
|
</property>
|
|
<property name="shortcut">
|
|
<string>Ctrl+X</string>
|
|
</property>
|
|
</action>
|
|
<action name="actionCopy">
|
|
<property name="icon">
|
|
<iconset resource="../resources/resources.qrc">
|
|
<normaloff>:/icons/icons/edit-copy.png</normaloff>:/icons/icons/edit-copy.png</iconset>
|
|
</property>
|
|
<property name="text">
|
|
<string>&Copy</string>
|
|
</property>
|
|
<property name="shortcut">
|
|
<string>Ctrl+C</string>
|
|
</property>
|
|
</action>
|
|
<action name="actionPaste">
|
|
<property name="icon">
|
|
<iconset resource="../resources/resources.qrc">
|
|
<normaloff>:/icons/icons/edit-paste.png</normaloff>:/icons/icons/edit-paste.png</iconset>
|
|
</property>
|
|
<property name="text">
|
|
<string>&Paste</string>
|
|
</property>
|
|
<property name="shortcut">
|
|
<string>Ctrl+V</string>
|
|
</property>
|
|
</action>
|
|
<action name="actionSelectAll">
|
|
<property name="text">
|
|
<string>Select &All</string>
|
|
</property>
|
|
<property name="shortcut">
|
|
<string>Ctrl+A</string>
|
|
</property>
|
|
</action>
|
|
<action name="actionDelete">
|
|
<property name="text"><string>&Delete</string></property>
|
|
<property name="shortcut"><string>Del</string></property>
|
|
</action>
|
|
<action name="actionAbout">
|
|
<property name="text">
|
|
<string>&About BEdit</string>
|
|
</property>
|
|
</action>
|
|
<action name="actionSettings">
|
|
<property name="text">
|
|
<string>&Settings…</string>
|
|
</property>
|
|
<property name="statusTip">
|
|
<string>Configure BEdit</string>
|
|
</property>
|
|
</action>
|
|
<action name="actionAboutQt">
|
|
<property name="text">
|
|
<string>About &Qt</string>
|
|
</property>
|
|
</action>
|
|
</widget>
|
|
<customwidgets>
|
|
<customwidget>
|
|
<class>GraphWorkspaceView</class>
|
|
<extends>QGraphicsView</extends>
|
|
<header>bedit.gui.graphics.workspace</header>
|
|
</customwidget>
|
|
</customwidgets>
|
|
<resources>
|
|
<include location="../resources/resources.qrc"/>
|
|
</resources>
|
|
<connections/>
|
|
</ui>
|