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