Shinya Kitaoka 810553
#pragma once
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
#ifndef SCHEMATICGROUPEDITOR_H
Toshihiro Shimizu 890ddd
#define SCHEMATICGROUPEDITOR_H
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
#include "tcommon.h"
Campbell Barton d0e335
#include <qgraphicsitem></qgraphicsitem>
Toshihiro Shimizu 890ddd
#include "tgeometry.h"
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
#undef DVAPI
Toshihiro Shimizu 890ddd
#undef DVVAR
Toshihiro Shimizu 890ddd
#ifdef TOONZQT_EXPORTS
Toshihiro Shimizu 890ddd
#define DVAPI DV_EXPORT_API
Toshihiro Shimizu 890ddd
#define DVVAR DV_EXPORT_VAR
Toshihiro Shimizu 890ddd
#else
Toshihiro Shimizu 890ddd
#define DVAPI DV_IMPORT_API
Toshihiro Shimizu 890ddd
#define DVVAR DV_IMPORT_VAR
Toshihiro Shimizu 890ddd
#endif
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
// forward declaration
Toshihiro Shimizu 890ddd
class QGraphicsScene;
Toshihiro Shimizu 890ddd
class SchematicNode;
Toshihiro Shimizu 890ddd
class FxSchematicNode;
Toshihiro Shimizu 890ddd
class SchematicScene;
Toshihiro Shimizu 890ddd
class TFx;
Toshihiro Shimizu 890ddd
class TMacroFx;
Toshihiro Shimizu 890ddd
class SchematicName;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
//=====================================================
Toshihiro Shimizu 890ddd
//
Shinya Kitaoka 120a6e
// SchematicGroupEditor
Toshihiro Shimizu 890ddd
//
Toshihiro Shimizu 890ddd
//=====================================================
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
class DVAPI SchematicWindowEditor : public QObject, public QGraphicsItem {
Shinya Kitaoka 120a6e
  Q_OBJECT
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
  QPointF m_lastPos;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
protected:
Shinya Kitaoka 120a6e
  QList<schematicnode *=""> m_groupedNode;</schematicnode>
Shinya Kitaoka 120a6e
  QString m_groupName;
Shinya Kitaoka 120a6e
  SchematicScene *m_scene;
Shinya Kitaoka 120a6e
  SchematicName *m_nameItem;
Shinya Kitaoka 120a6e
  bool m_isMacroEditor;
Shinya Kitaoka 120a6e
  Qt::MouseButton m_button;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
public:
Shinya Kitaoka 120a6e
  SchematicWindowEditor(const QList<schematicnode *=""> &groupedNode,</schematicnode>
Shinya Kitaoka 120a6e
                        SchematicScene *scene);
Shinya Kitaoka 120a6e
  ~SchematicWindowEditor();
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
  virtual QRectF boundingSceneRect() const      = 0;
Shinya Kitaoka 120a6e
  virtual void setGroupedNodeZValue(int zValue) = 0;
Shinya Kitaoka 120a6e
  bool contains(SchematicNode *node) const {
Shinya Kitaoka 120a6e
    return m_groupedNode.contains(node);
Shinya Kitaoka 120a6e
  }
Shinya Kitaoka 120a6e
  void resizeNodes(bool maximizeNodes);
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
protected:
Shinya Kitaoka 473e70
  void mousePressEvent(QGraphicsSceneMouseEvent *e) override;
Shinya Kitaoka 473e70
  void mouseMoveEvent(QGraphicsSceneMouseEvent *e) override;
Shinya Kitaoka 473e70
  void mouseReleaseEvent(QGraphicsSceneMouseEvent *e) override;
Shinya Kitaoka 473e70
  void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *e) override;
Shinya Kitaoka 473e70
  void contextMenuEvent(QGraphicsSceneContextMenuEvent *e) override;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
protected slots:
Shinya Kitaoka 120a6e
  virtual void closeEditor()   = 0;
Shinya Kitaoka 120a6e
  virtual void onNameChanged() = 0;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
private:
Shinya Kitaoka 120a6e
  //! retrieve the group name and the group Id
Shinya Kitaoka 120a6e
  virtual void initializeEditor()                = 0;
Shinya Kitaoka 120a6e
  virtual void doResizeNodes(bool maximizeNodes) = 0;
Toshihiro Shimizu 890ddd
};
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
//=====================================================
Toshihiro Shimizu 890ddd
//
Shinya Kitaoka 120a6e
// FxSchematicGroupEditor
Toshihiro Shimizu 890ddd
//
Toshihiro Shimizu 890ddd
//=====================================================
Toshihiro Shimizu 890ddd
Shinya Kitaoka d1f6c4
class DVAPI FxSchematicGroupEditor final : public SchematicWindowEditor {
Shinya Kitaoka 120a6e
  Q_OBJECT
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
  int m_groupId;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
public:
Shinya Kitaoka 120a6e
  FxSchematicGroupEditor(int groupId, const QList<schematicnode *=""> &groupedNode,</schematicnode>
Shinya Kitaoka 120a6e
                         SchematicScene *scene);
Shinya Kitaoka 120a6e
  ~FxSchematicGroupEditor();
Toshihiro Shimizu 890ddd
Shinya Kitaoka 473e70
  QRectF boundingSceneRect() const override;
Shinya Kitaoka 473e70
  void setGroupedNodeZValue(int zValue) override;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
protected slots:
Shinya Kitaoka 473e70
  void closeEditor() override;
Shinya Kitaoka 473e70
  void onNameChanged() override;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
private:
Shinya Kitaoka 473e70
  void initializeEditor() override;
Shinya Kitaoka 473e70
  void doResizeNodes(bool maximizeNodes) override;
Toshihiro Shimizu 890ddd
};
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
//=====================================================
Toshihiro Shimizu 890ddd
//
Shinya Kitaoka 120a6e
// FxSchematicMacroEditor
Toshihiro Shimizu 890ddd
//
Toshihiro Shimizu 890ddd
//=====================================================
Toshihiro Shimizu 890ddd
Shinya Kitaoka d1f6c4
class DVAPI FxSchematicMacroEditor final : public SchematicWindowEditor {
Shinya Kitaoka 120a6e
  Q_OBJECT
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
  TMacroFx *m_macro;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
public:
Shinya Kitaoka 120a6e
  FxSchematicMacroEditor(TMacroFx *macro,
Shinya Kitaoka 120a6e
                         const QList<schematicnode *=""> &groupedNode,</schematicnode>
Shinya Kitaoka 120a6e
                         SchematicScene *scene);
Shinya Kitaoka 120a6e
  ~FxSchematicMacroEditor();
Toshihiro Shimizu 890ddd
Shinya Kitaoka 473e70
  QRectF boundingSceneRect() const override;
Shinya Kitaoka 473e70
  void setGroupedNodeZValue(int zValue) override;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
protected:
Shinya Kitaoka 473e70
  void mouseMoveEvent(QGraphicsSceneMouseEvent *e) override;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
protected slots:
Shinya Kitaoka 473e70
  void closeEditor() override;
Shinya Kitaoka 473e70
  void onNameChanged() override;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
private:
Shinya Kitaoka 473e70
  void initializeEditor() override;
Shinya Kitaoka 473e70
  void doResizeNodes(bool maximizeNodes) override;
Toshihiro Shimizu 890ddd
};
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
//=====================================================
Toshihiro Shimizu 890ddd
//
Shinya Kitaoka 120a6e
// StageSchematicGroupEditor
Toshihiro Shimizu 890ddd
//
Toshihiro Shimizu 890ddd
//=====================================================
Toshihiro Shimizu 890ddd
Shinya Kitaoka d1f6c4
class DVAPI StageSchematicGroupEditor final : public SchematicWindowEditor {
Shinya Kitaoka 120a6e
  Q_OBJECT
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
  int m_groupId;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
public:
Shinya Kitaoka 120a6e
  StageSchematicGroupEditor(int groupId,
Shinya Kitaoka 120a6e
                            const QList<schematicnode *=""> &groupedNode,</schematicnode>
Shinya Kitaoka 120a6e
                            SchematicScene *scene);
Shinya Kitaoka 120a6e
  ~StageSchematicGroupEditor();
Toshihiro Shimizu 890ddd
Shinya Kitaoka 473e70
  QRectF boundingSceneRect() const override;
Shinya Kitaoka 473e70
  void setGroupedNodeZValue(int zValue) override;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
protected slots:
Shinya Kitaoka 473e70
  void closeEditor() override;
Shinya Kitaoka 473e70
  void onNameChanged() override;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
private:
Shinya Kitaoka 473e70
  void initializeEditor() override;
Shinya Kitaoka 473e70
  void doResizeNodes(bool maximizeNodes) override;
Toshihiro Shimizu 890ddd
};
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
#endif