wiRedPanda
Logic Circuit Simulator
Loading...
Searching...
No Matches
ICLoader.h
Go to the documentation of this file.
1// Copyright 2015 - 2026, GIBIS-UNIFESP and the wiRedPanda contributors
2// SPDX-License-Identifier: GPL-3.0-or-later
3
7
8#pragma once
9
10#include <QByteArray>
11#include <QCoreApplication>
12#include <QFileInfo>
13#include <QList>
14#include <QMap>
15#include <QString>
16#include <QVector>
17#include <QVersionNumber>
18
19#include "App/Element/IC.h"
20
21class GraphicElement;
22class QGraphicsItem;
23
37{
38 Q_DECLARE_TR_FUNCTIONS(ICLoader)
39
40public:
42 static void loadFile(IC &ic, const QString &fileName, const QString &contextDir = {});
43
45 static void loadFromBlob(IC &ic, const QByteArray &blob, const QString &contextDir);
46
48 static IC::PortMetadata buildPortMetadata(const QVector<GraphicElement *> &elements);
49
50private:
51 static void loadFileDirectly(IC &ic, const QFileInfo &fileInfo);
53 static void migrateFile(const QFileInfo &fileInfo, const QList<QGraphicsItem *> &items,
54 const QVersionNumber &version, const QMap<QString, QByteArray> &fileRegistry);
55 static void deserializeAndLoad(IC &ic, const QByteArray &bytes, const QString &contextDir);
56
61 static void processLoadedItems(IC &ic, QList<QGraphicsItem *> &items);
62 static void loadBoundaryElement(IC &ic, GraphicElement *elm, bool isInput);
63 static void loadBoundaryPorts(IC &ic, bool isInput, const QVector<QString> &labels);
64};
Integrated Circuit (IC) graphic element that encapsulates a sub-circuit file.
Abstract base class for all graphical circuit elements in wiRedPanda.
Loads an IC's sub-circuit (from file or embedded blob), migrates old-format files,...
Definition ICLoader.h:37
static IC::PortMetadata buildPortMetadata(const QVector< GraphicElement * > &elements)
Scans elements for Input/Output groups, sorts by Y/X position, and builds labels.
Definition ICLoader.cpp:468
static void loadFromBlob(IC &ic, const QByteArray &blob, const QString &contextDir)
Loads ic from in-memory blob bytes (full .panda file format).
Definition ICLoader.cpp:348
static void loadFile(IC &ic, const QString &fileName, const QString &contextDir={})
Loads ic's circuit from fileName and rebuilds the logic mapping.
Definition ICLoader.cpp:88
Graphic element representing an Integrated Circuit (sub-circuit) box.
Definition IC.h:31
Port count and label metadata extracted from Input/Output elements.
Definition IC.h:96