1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
|
// Copyright 2015 - 2025, GIBIS-UNIFESP and the wiRedPanda contributors
// SPDX-License-Identifier: GPL-3.0-or-later
#pragma once
#include "elementmapping.h"
#include "graphicelement.h"
#include <QFileInfo>
#include <QFileSystemWatcher>
class IC : public GraphicElement
{
Q_OBJECT
friend class CodeGenerator;
public:
explicit IC(QGraphicsItem *parent = nullptr);
~IC() override;
IC(const IC &other) : IC(other.parentItem()) {}
static void copyFiles(const QFileInfo &srcPath, const QFileInfo &destPath);
const QVector<std::shared_ptr<LogicElement>> generateMap();
LogicElement *inputLogic(const int index);
LogicElement *outputLogic(const int index);
void load(QDataStream &stream, QMap<quint64, QNEPort *> &portMap, const QVersionNumber version) override;
void loadFile(const QString &fileName);
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) override;
void refresh() override;
void save(QDataStream &stream) const override;
protected:
void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event) override;
private:
static bool comparePorts(QNEPort *port1, QNEPort *port2);
static void sortPorts(QVector<QNEPort *> &map);
inline static QString destPath_;
inline static QString srcPath_;
inline static bool needToCopyFiles = false;
void copyFile();
void generatePixmap();
void loadInputElement(GraphicElement *elm);
void loadInputs();
void loadInputsLabels();
void loadOutputElement(GraphicElement *elm);
void loadOutputs();
void loadOutputsLabels();
ElementMapping *mapping = nullptr;
QFileSystemWatcher m_fileWatcher;
QString m_file;
QVector<GraphicElement *> m_icElements;
QVector<QNEPort *> m_icInputs;
QVector<QNEPort *> m_icOutputs;
QVector<QString> m_icInputLabels;
QVector<QString> m_icOutputLabels;
};
Q_DECLARE_METATYPE(IC)
|