|
Shinya Kitaoka |
810553 |
#pragma once
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
#ifndef STAGESCHEMATICNODE_H
|
|
Toshihiro Shimizu |
890ddd |
#define STAGESCHEMATICNODE_H
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
#include "schematicnode.h"
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
// forward declarations
|
|
Toshihiro Shimizu |
890ddd |
class StageSchematicScene;
|
|
Toshihiro Shimizu |
890ddd |
class StageSchematicNode;
|
|
Toshihiro Shimizu |
890ddd |
class StageSchematicColumnNode;
|
|
Toshihiro Shimizu |
890ddd |
class StageSchematicNodeDock;
|
|
Toshihiro Shimizu |
890ddd |
class TStageObject;
|
|
Toshihiro Shimizu |
890ddd |
class QPixmap;
|
|
Toshihiro Shimizu |
890ddd |
class QRegExpValidator;
|
|
Toshihiro Shimizu |
890ddd |
class TStageObjectId;
|
|
Toshihiro Shimizu |
890ddd |
class TStageObjectSpline;
|
|
Toshihiro Shimizu |
890ddd |
class StageSchematicSplineDock;
|
|
Toshihiro Shimizu |
890ddd |
class StageSchematicColumnNode;
|
|
Toshihiro Shimizu |
890ddd |
class StageSchematicPegbarNode;
|
|
Toshihiro Shimizu |
890ddd |
class StageSchematicSplineNode;
|
|
Toshihiro Shimizu |
890ddd |
class StageSchematicCameraNode;
|
|
Toshihiro Shimizu |
890ddd |
class StageSchematicTableNode;
|
|
Toshihiro Shimizu |
890ddd |
class StageSchematicGroupNode;
|
|
Toshihiro Shimizu |
890ddd |
class QTimer;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
enum eStageSchematicPortType {
|
|
Shinya Kitaoka |
120a6e |
eStageSplinePort = 100,
|
|
Shinya Kitaoka |
120a6e |
eStageParentPort = 101,
|
|
Shinya Kitaoka |
120a6e |
eStageChildPort = 102,
|
|
Shinya Kitaoka |
120a6e |
eStageSplineGroupPort = 103,
|
|
Shinya Kitaoka |
120a6e |
eStageParentGroupPort = 104,
|
|
Shinya Kitaoka |
120a6e |
eStageChildGroupPort = 105
|
|
Toshihiro Shimizu |
890ddd |
};
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//========================================================
|
|
Toshihiro Shimizu |
890ddd |
//
|
|
Shinya Kitaoka |
120a6e |
// ColumnPainter
|
|
Toshihiro Shimizu |
890ddd |
//
|
|
Toshihiro Shimizu |
890ddd |
//========================================================
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
d1f6c4 |
class ColumnPainter final : public QObject, public QGraphicsItem {
|
|
Shinya Kitaoka |
120a6e |
Q_OBJECT
|
|
Shinya Kitaoka |
120a6e |
Q_INTERFACES(QGraphicsItem)
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
StageSchematicColumnNode *m_parent;
|
|
Shinya Kitaoka |
120a6e |
double m_width, m_height;
|
|
Shinya Kitaoka |
120a6e |
QString m_name;
|
|
Shinya Kitaoka |
120a6e |
int m_type;
|
|
shun-iwasawa |
045b61 |
bool m_isReference = false;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
public:
|
|
Shinya Kitaoka |
120a6e |
ColumnPainter(StageSchematicColumnNode *parent, double width, double height,
|
|
Shinya Kitaoka |
120a6e |
const QString &name);
|
|
Shinya Kitaoka |
120a6e |
~ColumnPainter();
|
|
Shinya Kitaoka |
473e70 |
QRectF boundingRect() const override;
|
|
Shinya Kitaoka |
120a6e |
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option,
|
|
Shinya Kitaoka |
473e70 |
QWidget *widget = 0) override;
|
|
Shinya Kitaoka |
120a6e |
void setName(const QString &name) { m_name = name; }
|
|
shun-iwasawa |
045b61 |
void setIsReference(bool ref = true) { m_isReference = ref; }
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
QLinearGradient getGradientByLevelType(int type);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
protected:
|
|
Shinya Kitaoka |
473e70 |
void contextMenuEvent(QGraphicsSceneContextMenuEvent *cme) override;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
public slots:
|
|
Shinya Kitaoka |
120a6e |
void onIconGenerated();
|
|
Toshihiro Shimizu |
890ddd |
};
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//========================================================
|
|
Toshihiro Shimizu |
890ddd |
//
|
|
Shinya Kitaoka |
120a6e |
// GroupPainter
|
|
Toshihiro Shimizu |
890ddd |
//
|
|
Toshihiro Shimizu |
890ddd |
//========================================================
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
d1f6c4 |
class GroupPainter final : public QObject, public QGraphicsItem {
|
|
Shinya Kitaoka |
120a6e |
Q_OBJECT
|
|
Shinya Kitaoka |
120a6e |
Q_INTERFACES(QGraphicsItem)
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
StageSchematicGroupNode *m_parent;
|
|
Shinya Kitaoka |
120a6e |
double m_width, m_height;
|
|
Shinya Kitaoka |
120a6e |
QString m_name;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
public:
|
|
Shinya Kitaoka |
120a6e |
GroupPainter(StageSchematicGroupNode *parent, double width, double height,
|
|
Shinya Kitaoka |
120a6e |
const QString &name);
|
|
Shinya Kitaoka |
120a6e |
~GroupPainter();
|
|
Shinya Kitaoka |
473e70 |
QRectF boundingRect() const override;
|
|
Shinya Kitaoka |
120a6e |
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option,
|
|
Shinya Kitaoka |
473e70 |
QWidget *widget = 0) override;
|
|
Shinya Kitaoka |
120a6e |
void setName(const QString &name) { m_name = name; }
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
protected:
|
|
Shinya Kitaoka |
473e70 |
void contextMenuEvent(QGraphicsSceneContextMenuEvent *cme) override;
|
|
Toshihiro Shimizu |
890ddd |
};
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//========================================================
|
|
Toshihiro Shimizu |
890ddd |
//
|
|
Shinya Kitaoka |
120a6e |
// PegbarPainter
|
|
Toshihiro Shimizu |
890ddd |
//
|
|
Toshihiro Shimizu |
890ddd |
//========================================================
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
d1f6c4 |
class PegbarPainter final : public QObject, public QGraphicsItem {
|
|
Shinya Kitaoka |
120a6e |
Q_OBJECT
|
|
Shinya Kitaoka |
120a6e |
Q_INTERFACES(QGraphicsItem)
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
StageSchematicPegbarNode *m_parent;
|
|
Shinya Kitaoka |
120a6e |
double m_width, m_height;
|
|
Shinya Kitaoka |
120a6e |
QString m_name;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
public:
|
|
Shinya Kitaoka |
120a6e |
PegbarPainter(StageSchematicPegbarNode *parent, double width, double height,
|
|
Shinya Kitaoka |
120a6e |
const QString &name);
|
|
Shinya Kitaoka |
120a6e |
~PegbarPainter();
|
|
Shinya Kitaoka |
473e70 |
QRectF boundingRect() const override;
|
|
Shinya Kitaoka |
120a6e |
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option,
|
|
Shinya Kitaoka |
473e70 |
QWidget *widget = 0) override;
|
|
Shinya Kitaoka |
120a6e |
void setName(const QString &name) { m_name = name; }
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
protected:
|
|
Shinya Kitaoka |
473e70 |
void contextMenuEvent(QGraphicsSceneContextMenuEvent *cme) override;
|
|
Toshihiro Shimizu |
890ddd |
};
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//========================================================
|
|
Toshihiro Shimizu |
890ddd |
//
|
|
Shinya Kitaoka |
120a6e |
// CameraPainter
|
|
Toshihiro Shimizu |
890ddd |
//
|
|
Toshihiro Shimizu |
890ddd |
//========================================================
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
d1f6c4 |
class CameraPainter final : public QObject, public QGraphicsItem {
|
|
Shinya Kitaoka |
120a6e |
Q_OBJECT
|
|
Shinya Kitaoka |
120a6e |
Q_INTERFACES(QGraphicsItem)
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
StageSchematicCameraNode *m_parent;
|
|
Shinya Kitaoka |
120a6e |
double m_width, m_height;
|
|
Shinya Kitaoka |
120a6e |
QString m_name;
|
|
Shinya Kitaoka |
120a6e |
bool m_isActive;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
public:
|
|
Shinya Kitaoka |
120a6e |
CameraPainter(StageSchematicCameraNode *parent, double width, double height,
|
|
Shinya Kitaoka |
120a6e |
const QString &name);
|
|
Shinya Kitaoka |
120a6e |
~CameraPainter();
|
|
Shinya Kitaoka |
473e70 |
QRectF boundingRect() const override;
|
|
Shinya Kitaoka |
120a6e |
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option,
|
|
Shinya Kitaoka |
473e70 |
QWidget *widget = 0) override;
|
|
Shinya Kitaoka |
120a6e |
void setName(const QString &name) { m_name = name; }
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
protected:
|
|
Shinya Kitaoka |
473e70 |
void contextMenuEvent(QGraphicsSceneContextMenuEvent *cme) override;
|
|
Toshihiro Shimizu |
890ddd |
};
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//========================================================
|
|
Toshihiro Shimizu |
890ddd |
//
|
|
Shinya Kitaoka |
120a6e |
// TablePainter
|
|
Toshihiro Shimizu |
890ddd |
//
|
|
Toshihiro Shimizu |
890ddd |
//========================================================
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
d1f6c4 |
class TablePainter final : public QObject, public QGraphicsItem {
|
|
Shinya Kitaoka |
120a6e |
Q_OBJECT
|
|
Shinya Kitaoka |
120a6e |
Q_INTERFACES(QGraphicsItem)
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
StageSchematicTableNode *m_parent;
|
|
Shinya Kitaoka |
120a6e |
double m_width, m_height;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
public:
|
|
Shinya Kitaoka |
120a6e |
TablePainter(StageSchematicTableNode *parent, double width, double height);
|
|
Shinya Kitaoka |
120a6e |
~TablePainter();
|
|
Shinya Kitaoka |
473e70 |
QRectF boundingRect() const override;
|
|
Shinya Kitaoka |
120a6e |
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option,
|
|
Shinya Kitaoka |
473e70 |
QWidget *widget = 0) override;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
protected:
|
|
Shinya Kitaoka |
473e70 |
void contextMenuEvent(QGraphicsSceneContextMenuEvent *cme) override;
|
|
Toshihiro Shimizu |
890ddd |
};
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//========================================================
|
|
Toshihiro Shimizu |
890ddd |
//
|
|
Shinya Kitaoka |
120a6e |
// SplinePainter
|
|
Toshihiro Shimizu |
890ddd |
//
|
|
Toshihiro Shimizu |
890ddd |
//========================================================
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
d1f6c4 |
class SplinePainter final : public QObject, public QGraphicsItem {
|
|
Shinya Kitaoka |
120a6e |
Q_OBJECT
|
|
Shinya Kitaoka |
120a6e |
Q_INTERFACES(QGraphicsItem)
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
StageSchematicSplineNode *m_parent;
|
|
Shinya Kitaoka |
120a6e |
double m_width, m_height;
|
|
Shinya Kitaoka |
120a6e |
QString m_name;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
public:
|
|
Shinya Kitaoka |
120a6e |
SplinePainter(StageSchematicSplineNode *parent, double width, double height,
|
|
Shinya Kitaoka |
120a6e |
const QString &name);
|
|
Shinya Kitaoka |
120a6e |
~SplinePainter();
|
|
Shinya Kitaoka |
473e70 |
QRectF boundingRect() const override;
|
|
Shinya Kitaoka |
120a6e |
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option,
|
|
Shinya Kitaoka |
473e70 |
QWidget *widget = 0) override;
|
|
Shinya Kitaoka |
120a6e |
void setName(const QString &name) { m_name = name; }
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
protected:
|
|
Shinya Kitaoka |
473e70 |
void contextMenuEvent(QGraphicsSceneContextMenuEvent *cme) override;
|
|
Toshihiro Shimizu |
890ddd |
};
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//========================================================
|
|
Toshihiro Shimizu |
890ddd |
//
|
|
Shinya Kitaoka |
120a6e |
// StageSchematicNodePort
|
|
Toshihiro Shimizu |
890ddd |
//
|
|
Toshihiro Shimizu |
890ddd |
//========================================================
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
d1f6c4 |
class StageSchematicNodePort final : public SchematicPort {
|
|
Shinya Kitaoka |
120a6e |
QString m_handle;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
public:
|
|
Shinya Kitaoka |
120a6e |
StageSchematicNodePort(StageSchematicNodeDock *parent, int type);
|
|
Shinya Kitaoka |
120a6e |
~StageSchematicNodePort();
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
473e70 |
QRectF boundingRect() const override;
|
|
Shinya Kitaoka |
120a6e |
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option,
|
|
Shinya Kitaoka |
473e70 |
QWidget *widget = 0) override;
|
|
Shinya Kitaoka |
120a6e |
void setHandle(const QString &value) { m_handle = value; }
|
|
Shinya Kitaoka |
120a6e |
QString getHandle() { return m_handle; }
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
473e70 |
bool linkTo(SchematicPort *port, bool checkOnly = false) override;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
private:
|
|
Shinya Kitaoka |
473e70 |
SchematicPort *searchPort(const QPointF &scenePos) override;
|
|
shun-iwasawa |
21e838 |
void hideSnappedLinks(SchematicPort *linkingPort) override;
|
|
shun-iwasawa |
21e838 |
void showSnappedLinks(SchematicPort *linkingPort) override;
|
|
Toshihiro Shimizu |
890ddd |
};
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//========================================================
|
|
Toshihiro Shimizu |
890ddd |
//
|
|
Shinya Kitaoka |
120a6e |
// StageSchematicSplinePort
|
|
Toshihiro Shimizu |
890ddd |
//
|
|
Toshihiro Shimizu |
890ddd |
//========================================================
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
d1f6c4 |
class StageSchematicSplinePort final : public SchematicPort {
|
|
Shinya Kitaoka |
120a6e |
StageSchematicSplineDock *m_parent;
|
|
Shinya Kitaoka |
120a6e |
QPixmap m_squarePixmap, m_rhombPixmap;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
public:
|
|
Shinya Kitaoka |
120a6e |
StageSchematicSplinePort(StageSchematicSplineDock *parent, int type);
|
|
Shinya Kitaoka |
120a6e |
~StageSchematicSplinePort();
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
473e70 |
QRectF boundingRect() const override;
|
|
Shinya Kitaoka |
120a6e |
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option,
|
|
Shinya Kitaoka |
473e70 |
QWidget *widget = 0) override;
|
|
Shinya Kitaoka |
473e70 |
bool linkTo(SchematicPort *port, bool checkOnly = false) override;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
private:
|
|
Shinya Kitaoka |
473e70 |
SchematicPort *searchPort(const QPointF &scenePos) override;
|
|
shun-iwasawa |
21e838 |
void hideSnappedLinks(SchematicPort *) override;
|
|
shun-iwasawa |
21e838 |
void showSnappedLinks(SchematicPort *) override;
|
|
Toshihiro Shimizu |
890ddd |
};
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//========================================================
|
|
Toshihiro Shimizu |
890ddd |
//
|
|
Shinya Kitaoka |
120a6e |
// SplineAimChanger
|
|
Toshihiro Shimizu |
890ddd |
//
|
|
Toshihiro Shimizu |
890ddd |
//========================================================
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
d1f6c4 |
class SplineAimChanger final : public SchematicHandleSpinBox {
|
|
Shinya Kitaoka |
120a6e |
bool m_aim;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
public:
|
|
Shinya Kitaoka |
120a6e |
SplineAimChanger(QGraphicsItem *parent);
|
|
Shinya Kitaoka |
120a6e |
~SplineAimChanger();
|
|
Shinya Kitaoka |
120a6e |
void setAim(bool aim) { m_aim = aim; }
|
|
Shinya Kitaoka |
120a6e |
bool getAim() { return m_aim; }
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
protected:
|
|
Shinya Kitaoka |
473e70 |
void mouseMoveEvent(QGraphicsSceneMouseEvent *me) override;
|
|
Shinya Kitaoka |
473e70 |
void mousePressEvent(QGraphicsSceneMouseEvent *me) override;
|
|
Shinya Kitaoka |
473e70 |
void mouseReleaseEvent(QGraphicsSceneMouseEvent *me) override;
|
|
Toshihiro Shimizu |
890ddd |
};
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//========================================================
|
|
Toshihiro Shimizu |
890ddd |
//
|
|
Shinya Kitaoka |
120a6e |
// StageSchematicNodeDock
|
|
Toshihiro Shimizu |
890ddd |
//
|
|
Toshihiro Shimizu |
890ddd |
//========================================================
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
d1f6c4 |
class StageSchematicNodeDock final : public QObject, public QGraphicsItem {
|
|
Shinya Kitaoka |
120a6e |
Q_OBJECT
|
|
Toshihiro Shimizu |
890ddd |
#ifndef MACOSX
|
|
Shinya Kitaoka |
120a6e |
Q_INTERFACES(QGraphicsItem)
|
|
Toshihiro Shimizu |
890ddd |
#endif
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
StageSchematicNode *m_parent;
|
|
Shinya Kitaoka |
120a6e |
StageSchematicNodePort *m_port;
|
|
Shinya Kitaoka |
120a6e |
SchematicHandleSpinBox *m_handleSpinBox;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
bool m_isParentPort;
|
|
Shinya Kitaoka |
120a6e |
QTimer *m_timer;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
public:
|
|
Shinya Kitaoka |
120a6e |
StageSchematicNodeDock(StageSchematicNode *parent, bool isParentPort,
|
|
Shinya Kitaoka |
120a6e |
eStageSchematicPortType type);
|
|
Shinya Kitaoka |
120a6e |
~StageSchematicNodeDock();
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
473e70 |
QRectF boundingRect() const override;
|
|
Shinya Kitaoka |
120a6e |
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option,
|
|
Shinya Kitaoka |
473e70 |
QWidget *widget = 0) override;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
StageSchematicNodePort *getPort() { return m_port; }
|
|
Shinya Kitaoka |
120a6e |
StageSchematicNode *getNode() { return m_parent; }
|
|
Shinya Kitaoka |
120a6e |
bool isParentPort() { return m_isParentPort; }
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
protected:
|
|
Shinya Kitaoka |
473e70 |
void hoverEnterEvent(QGraphicsSceneHoverEvent *he) override;
|
|
Shinya Kitaoka |
473e70 |
void hoverLeaveEvent(QGraphicsSceneHoverEvent *he) override;
|
|
Shinya Kitaoka |
473e70 |
void hoverMoveEvent(QGraphicsSceneHoverEvent *he) override;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
private:
|
|
Shinya Kitaoka |
120a6e |
// void updateHandle(bool increase);
|
|
Shinya Kitaoka |
120a6e |
// void moveZValueLinks(int value);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
signals:
|
|
Shinya Kitaoka |
120a6e |
void sceneChanged();
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
protected slots:
|
|
Shinya Kitaoka |
120a6e |
void onPortClicked();
|
|
Shinya Kitaoka |
120a6e |
void onPortReleased(const QPointF &);
|
|
Shinya Kitaoka |
120a6e |
void onTimeOut();
|
|
Shinya Kitaoka |
120a6e |
void onModifyHandle(int);
|
|
Toshihiro Shimizu |
890ddd |
};
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//========================================================
|
|
Toshihiro Shimizu |
890ddd |
//
|
|
Shinya Kitaoka |
120a6e |
// StageSchematicSplineDock
|
|
Toshihiro Shimizu |
890ddd |
//
|
|
Toshihiro Shimizu |
890ddd |
//========================================================
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
d1f6c4 |
class StageSchematicSplineDock final : public QObject, public QGraphicsItem {
|
|
Shinya Kitaoka |
120a6e |
Q_OBJECT
|
|
Toshihiro Shimizu |
890ddd |
#ifndef MACOSX
|
|
Shinya Kitaoka |
120a6e |
Q_INTERFACES(QGraphicsItem)
|
|
Toshihiro Shimizu |
890ddd |
#endif
|
|
Shinya Kitaoka |
120a6e |
SchematicNode *m_parent;
|
|
Shinya Kitaoka |
120a6e |
StageSchematicSplinePort *m_port;
|
|
Shinya Kitaoka |
120a6e |
bool m_isParentPort;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
public:
|
|
Shinya Kitaoka |
120a6e |
StageSchematicSplineDock(SchematicNode *parent, bool isParentPort,
|
|
Shinya Kitaoka |
120a6e |
eStageSchematicPortType type);
|
|
Shinya Kitaoka |
120a6e |
~StageSchematicSplineDock();
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
473e70 |
QRectF boundingRect() const override;
|
|
Shinya Kitaoka |
120a6e |
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option,
|
|
Shinya Kitaoka |
473e70 |
QWidget *widget = 0) override;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
StageSchematicSplinePort *getPort() { return m_port; }
|
|
Shinya Kitaoka |
120a6e |
SchematicNode *getNode() { return m_parent; }
|
|
Shinya Kitaoka |
120a6e |
bool isParentPort() { return m_isParentPort; }
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
signals:
|
|
Shinya Kitaoka |
120a6e |
void sceneChanged();
|
|
Toshihiro Shimizu |
890ddd |
};
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//========================================================
|
|
Toshihiro Shimizu |
890ddd |
//
|
|
Shinya Kitaoka |
120a6e |
// class StageSchematicNode
|
|
Toshihiro Shimizu |
890ddd |
//
|
|
Toshihiro Shimizu |
890ddd |
//========================================================
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
class StageSchematicNode : public SchematicNode {
|
|
Shinya Kitaoka |
120a6e |
Q_OBJECT
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
protected:
|
|
Shinya Kitaoka |
120a6e |
TStageObject *m_stageObject;
|
|
Shinya Kitaoka |
120a6e |
StageSchematicNodeDock *m_parentDock;
|
|
Shinya Kitaoka |
120a6e |
QList<stageschematicnodedock *=""> m_childDocks;</stageschematicnodedock>
|
|
Shinya Kitaoka |
120a6e |
StageSchematicSplineDock *m_splineDock;
|
|
Shinya Kitaoka |
120a6e |
SchematicToggle *m_pathToggle, *m_cpToggle;
|
|
Shinya Kitaoka |
120a6e |
bool m_isGroup;
|
|
Shinya Kitaoka |
120a6e |
QString m_name;
|
|
Shinya Kitaoka |
120a6e |
SchematicName *m_nameItem;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
public:
|
|
Shinya Kitaoka |
120a6e |
StageSchematicNode(StageSchematicScene *scene, TStageObject *obj, int width,
|
|
Shinya Kitaoka |
120a6e |
int height, bool isGroup = false);
|
|
Shinya Kitaoka |
120a6e |
~StageSchematicNode();
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
void setWidth(const qreal &width) { m_width = width; }
|
|
Shinya Kitaoka |
120a6e |
void setHeight(const qreal &height) { m_height = height; }
|
|
Shinya Kitaoka |
473e70 |
void setSchematicNodePos(const QPointF &pos) const override;
|
|
Shinya Kitaoka |
120a6e |
bool isNameEditing() { return m_nameItem->isVisible(); }
|
|
Shinya Kitaoka |
473e70 |
void onClicked() override;
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
int getChildCount() { return m_childDocks.size(); }
|
|
Shinya Kitaoka |
120a6e |
StageSchematicNodePort *getChildPort(int i) {
|
|
Shinya Kitaoka |
120a6e |
return m_childDocks[i]->getPort();
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
StageSchematicNodePort *getParentPort() { return m_parentDock->getPort(); }
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
TStageObject *getStageObject() { return m_stageObject; }
|
|
Shinya Kitaoka |
120a6e |
StageSchematicNodePort *makeChildPort(const QString &label);
|
|
Shinya Kitaoka |
120a6e |
StageSchematicNodePort *makeParentPort(const QString &label);
|
|
Shinya Kitaoka |
120a6e |
virtual void updateChildDockPositions(); // TODO: commento! doxygen
|
|
Shinya Kitaoka |
473e70 |
void setPosition(const QPointF &newPos) override;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
signals:
|
|
Shinya Kitaoka |
120a6e |
void currentObjectChanged(const TStageObjectId &id, bool isSpline);
|
|
Shinya Kitaoka |
120a6e |
void currentColumnChanged(int index);
|
|
Shinya Kitaoka |
120a6e |
void editObject();
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
protected slots:
|
|
Shinya Kitaoka |
120a6e |
void onHandleReleased();
|
|
Toshihiro Shimizu |
890ddd |
};
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//========================================================
|
|
Toshihiro Shimizu |
890ddd |
//
|
|
Shinya Kitaoka |
120a6e |
// class StageSchematicPegbarNode
|
|
Toshihiro Shimizu |
890ddd |
//
|
|
Toshihiro Shimizu |
890ddd |
//========================================================
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
d1f6c4 |
class StageSchematicPegbarNode final : public StageSchematicNode {
|
|
Shinya Kitaoka |
120a6e |
Q_OBJECT
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
PegbarPainter *m_pegbarPainter;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
public:
|
|
Shinya Kitaoka |
120a6e |
StageSchematicPegbarNode(StageSchematicScene *scene, TStageObject *pegbar);
|
|
Shinya Kitaoka |
120a6e |
~StageSchematicPegbarNode();
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
473e70 |
QRectF boundingRect() const override;
|
|
Shinya Kitaoka |
120a6e |
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option,
|
|
Shinya Kitaoka |
473e70 |
QWidget *widget = 0) override;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
protected:
|
|
Shinya Kitaoka |
473e70 |
void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *me) override;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
protected slots:
|
|
Shinya Kitaoka |
120a6e |
void onNameChanged();
|
|
Toshihiro Shimizu |
890ddd |
};
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//========================================================
|
|
Toshihiro Shimizu |
890ddd |
//
|
|
Shinya Kitaoka |
120a6e |
// class SchematicTableNode
|
|
Toshihiro Shimizu |
890ddd |
//
|
|
Toshihiro Shimizu |
890ddd |
//========================================================
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
d1f6c4 |
class StageSchematicTableNode final : public StageSchematicNode {
|
|
Shinya Kitaoka |
120a6e |
TablePainter *m_tablePainter;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
public:
|
|
Shinya Kitaoka |
120a6e |
StageSchematicTableNode(StageSchematicScene *scene, TStageObject *pegbar);
|
|
Shinya Kitaoka |
120a6e |
~StageSchematicTableNode();
|
|
shun_iwasawa |
22eaa4 |
|
|
Shinya Kitaoka |
473e70 |
QRectF boundingRect() const override;
|
|
Shinya Kitaoka |
120a6e |
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option,
|
|
Shinya Kitaoka |
473e70 |
QWidget *widget = 0) override;
|
|
Toshihiro Shimizu |
890ddd |
};
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//========================================================
|
|
Toshihiro Shimizu |
890ddd |
//
|
|
Shinya Kitaoka |
120a6e |
// class SchematicColumnNode
|
|
Toshihiro Shimizu |
890ddd |
//
|
|
Toshihiro Shimizu |
890ddd |
//========================================================
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
d1f6c4 |
class StageSchematicColumnNode final : public StageSchematicNode {
|
|
Shinya Kitaoka |
120a6e |
Q_OBJECT
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
SchematicThumbnailToggle *m_resizeItem;
|
|
Shinya Kitaoka |
120a6e |
SchematicToggle *m_renderToggle, *m_cameraStandToggle;
|
|
Shinya Kitaoka |
120a6e |
ColumnPainter *m_columnPainter;
|
|
Shinya Kitaoka |
120a6e |
bool m_isOpened;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
public:
|
|
Shinya Kitaoka |
120a6e |
StageSchematicColumnNode(StageSchematicScene *scene, TStageObject *pegbar);
|
|
Shinya Kitaoka |
120a6e |
~StageSchematicColumnNode();
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
473e70 |
QRectF boundingRect() const override;
|
|
Shinya Kitaoka |
120a6e |
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option,
|
|
Shinya Kitaoka |
473e70 |
QWidget *widget = 0) override;
|
|
Shinya Kitaoka |
120a6e |
QPixmap getPixmap();
|
|
Shinya Kitaoka |
120a6e |
bool isOpened() { return m_isOpened; }
|
|
Shinya Kitaoka |
120a6e |
void resize(bool maximized);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
void getLevelTypeAndName(int &, QString &);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
private:
|
|
Shinya Kitaoka |
120a6e |
void updatePortsPosition();
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
protected:
|
|
Shinya Kitaoka |
473e70 |
void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *me) override;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
protected slots:
|
|
Shinya Kitaoka |
120a6e |
void onNameChanged();
|
|
Shinya Kitaoka |
120a6e |
void onChangedSize(bool expand);
|
|
Shinya Kitaoka |
120a6e |
void onRenderToggleClicked(bool isActive);
|
|
Shinya Kitaoka |
120a6e |
void onCameraStandToggleClicked(int state);
|
|
Toshihiro Shimizu |
890ddd |
};
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//========================================================
|
|
Toshihiro Shimizu |
890ddd |
//
|
|
Shinya Kitaoka |
120a6e |
// class SchematicCameraNode
|
|
Toshihiro Shimizu |
890ddd |
//
|
|
Toshihiro Shimizu |
890ddd |
//========================================================
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
d1f6c4 |
class StageSchematicCameraNode final : public StageSchematicNode {
|
|
Shinya Kitaoka |
120a6e |
Q_OBJECT
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
CameraPainter *m_cameraPainter;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
public:
|
|
Shinya Kitaoka |
120a6e |
StageSchematicCameraNode(StageSchematicScene *scene, TStageObject *pegbar);
|
|
Shinya Kitaoka |
120a6e |
~StageSchematicCameraNode();
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
473e70 |
QRectF boundingRect() const override;
|
|
Shinya Kitaoka |
120a6e |
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option,
|
|
Shinya Kitaoka |
473e70 |
QWidget *widget = 0) override;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
protected:
|
|
Shinya Kitaoka |
473e70 |
void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *me) override;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
protected slots:
|
|
Shinya Kitaoka |
120a6e |
void onNameChanged();
|
|
Toshihiro Shimizu |
890ddd |
};
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//========================================================
|
|
Toshihiro Shimizu |
890ddd |
//
|
|
Shinya Kitaoka |
120a6e |
// class StageSchematicSplineNode
|
|
Toshihiro Shimizu |
890ddd |
//
|
|
Toshihiro Shimizu |
890ddd |
//========================================================
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
d1f6c4 |
class StageSchematicSplineNode final : public SchematicNode {
|
|
Shinya Kitaoka |
120a6e |
Q_OBJECT
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
TStageObjectSpline *m_spline;
|
|
Shinya Kitaoka |
120a6e |
QString m_splineName;
|
|
Shinya Kitaoka |
120a6e |
SchematicName *m_nameItem;
|
|
Shinya Kitaoka |
120a6e |
SchematicThumbnailToggle *m_resizeItem;
|
|
Shinya Kitaoka |
120a6e |
StageSchematicSplineDock *m_dock;
|
|
Shinya Kitaoka |
120a6e |
SplinePainter *m_splinePainter;
|
|
Shinya Kitaoka |
120a6e |
bool m_isOpened;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
public:
|
|
Shinya Kitaoka |
120a6e |
StageSchematicSplineNode(StageSchematicScene *scene,
|
|
Shinya Kitaoka |
120a6e |
TStageObjectSpline *spline);
|
|
Shinya Kitaoka |
120a6e |
~StageSchematicSplineNode();
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
473e70 |
QRectF boundingRect() const override;
|
|
Shinya Kitaoka |
120a6e |
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option,
|
|
Shinya Kitaoka |
473e70 |
QWidget *widget = 0) override;
|
|
Shinya Kitaoka |
473e70 |
void onClicked() override;
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
473e70 |
void setSchematicNodePos(const QPointF &pos) const override;
|
|
Shinya Kitaoka |
120a6e |
TStageObjectSpline *getSpline() { return m_spline; }
|
|
Shinya Kitaoka |
120a6e |
bool isNameEditing() { return m_nameItem->isVisible(); }
|
|
Shinya Kitaoka |
120a6e |
bool isOpened() { return m_isOpened; }
|
|
Shinya Kitaoka |
120a6e |
QPixmap getPixmap();
|
|
Shinya Kitaoka |
120a6e |
StageSchematicSplinePort *getParentPort() { return m_dock->getPort(); }
|
|
Shinya Kitaoka |
473e70 |
void setPosition(const QPointF &newPos) override { setPos(newPos); }
|
|
Shinya Kitaoka |
120a6e |
void resize(bool maximized);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
protected:
|
|
Shinya Kitaoka |
473e70 |
void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *me) override;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
signals:
|
|
Shinya Kitaoka |
120a6e |
void currentObjectChanged(const TStageObjectId &id, bool isSpline);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
protected slots:
|
|
Shinya Kitaoka |
120a6e |
void onNameChanged();
|
|
Shinya Kitaoka |
120a6e |
void onChangedSize(bool expanded);
|
|
Toshihiro Shimizu |
890ddd |
};
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//========================================================
|
|
Toshihiro Shimizu |
890ddd |
//
|
|
Shinya Kitaoka |
120a6e |
// class StageSchematicSplineNode
|
|
Toshihiro Shimizu |
890ddd |
//
|
|
Toshihiro Shimizu |
890ddd |
//========================================================
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
d1f6c4 |
class StageSchematicGroupNode final : public StageSchematicNode {
|
|
Shinya Kitaoka |
120a6e |
Q_OBJECT
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
GroupPainter *m_painter;
|
|
Shinya Kitaoka |
120a6e |
QList<tstageobject *=""> m_groupedObj;</tstageobject>
|
|
Shinya Kitaoka |
120a6e |
TStageObject *m_root;
|
|
Shinya Kitaoka |
120a6e |
bool m_isOpened;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
public:
|
|
Shinya Kitaoka |
120a6e |
StageSchematicGroupNode(StageSchematicScene *scene, TStageObject *root,
|
|
Shinya Kitaoka |
120a6e |
const QList<tstageobject *=""> groupedObj);</tstageobject>
|
|
Shinya Kitaoka |
120a6e |
~StageSchematicGroupNode();
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
473e70 |
QRectF boundingRect() const override;
|
|
Shinya Kitaoka |
120a6e |
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option,
|
|
Shinya Kitaoka |
473e70 |
QWidget *widget = 0) override;
|
|
Shinya Kitaoka |
120a6e |
QList<tstageobject *=""> getGroupedObjects() { return m_groupedObj; }</tstageobject>
|
|
Shinya Kitaoka |
120a6e |
int getGroupId();
|
|
Shinya Kitaoka |
120a6e |
TStageObject *getRoot() { return m_root; }
|
|
Shinya Kitaoka |
120a6e |
void updateObjsDagPosition(const TPointD &pos) const;
|
|
Shinya Kitaoka |
120a6e |
bool isOpened() { return m_isOpened; }
|
|
Shinya Kitaoka |
120a6e |
void updatePortsPosition();
|
|
Shinya Kitaoka |
120a6e |
void resize(bool maximized);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
protected:
|
|
Shinya Kitaoka |
473e70 |
void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *me) override;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
protected slots:
|
|
Shinya Kitaoka |
120a6e |
void onNameChanged();
|
|
Shinya Kitaoka |
120a6e |
void onChangedSize(bool expanded);
|
|
Toshihiro Shimizu |
890ddd |
};
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
#endif // STAGESCHEMATICNODE_H
|