изменено: CMakeLists.txt

новый файл:    cmake/Info.plist.in
	новый файл:    default.nix
	новый файл:    desktop.nix
	новый файл:    packaging/linux/idef0-editor.desktop
	новый файл:    packaging/linux/idef0.xml
	новый файл:    packaging/windows/idef0-file-association.reg.in
	изменено:      src/MainWindow.cpp
	изменено:      src/MainWindow.h
	изменено:      src/items/ArrowItem.cpp
	изменено:      src/items/ArrowItem.h
	изменено:      src/items/BlockItem.cpp
	изменено:      src/items/BlockItem.h
	изменено:      src/items/DiagramScene.cpp
	изменено:      src/items/DiagramScene.h
	новый файл:    src/plugins/Manual.md
	новый файл:    src/plugins/PluginApi.h
	новый файл:    src/plugins/PluginManager.cpp
	новый файл:    src/plugins/PluginManager.h
	новый файл:    src/plugins/color/ColorsPlugin.cpp
	новый файл:    src/plugins/color/ColorsPlugin.h
	новый файл:    src/plugins/color/translations/colors_en.ts
	новый файл:    src/plugins/color/translations/colors_fr.ts
	новый файл:    src/plugins/color/translations/colors_ru.ts
	новый файл:    translations/README.txt
	новый файл:    translations/idef0_en.ts
	новый файл:    translations/idef0_fr.ts
	новый файл:    translations/idef0_ru.ts
This commit is contained in:
Gregory Bednov 2026-02-25 23:25:45 +03:00
commit 630c952382
28 changed files with 2720 additions and 90 deletions

View file

@ -23,12 +23,16 @@ public:
QRectF contentRect() const { return m_contentRect; }
QString currentNodeLabel() const;
QString currentDiagramTitle() const;
int currentBlockId() const { return m_currentBlockId; }
bool goDownIntoSelected();
bool goDownIntoBlock(BlockItem* b);
bool goUp();
void propagateLabelFrom(ArrowItem* root);
QVariantMap exportToVariant();
bool importFromVariant(const QVariantMap& map);
bool startCallMechanism(BlockItem* origin, BlockItem* refBlock, const QString& label);
bool hasCallMechanism(const BlockItem* origin) const;
void updateCallMechanismLabels();
signals:
void changed();
void metaChanged(const QVariantMap& meta);
@ -48,7 +52,7 @@ private:
std::optional<QPointF> localPos;
std::optional<QPointF> scenePos;
};
struct Block { int id; QString title; QPointF pos; bool hasDecomp = false; QString number; std::optional<qreal> price; };
struct Block { int id; QString title; QPointF pos; bool hasDecomp = false; QString number; std::optional<qreal> price; std::optional<QString> color; };
struct Junction { int id; QPointF pos; };
struct Arrow {
Endpoint from;
@ -64,6 +68,9 @@ private:
bool isInterfaceStub = false;
bool labelLocked = false;
Endpoint interfaceEdge;
std::optional<QString> color;
bool callMechanism = false;
int callRefId = -1;
};
QVector<Block> blocks;
QVector<Junction> junctions;
@ -113,6 +120,8 @@ private:
QString currentPathKey() const;
QString childKeyFor(int blockId) const;
QString assignNumber(BlockItem* b);
void connectBlockSignals(BlockItem* b);
void purgeBrokenCallMechanisms();
enum class Edge { None, Left, Right, Top, Bottom };
Edge hitTestEdge(const QPointF& scenePos, QPointF* outScenePoint = nullptr) const;