2016-05-17 03:04:11 +12:00
|
|
|
#pragma once
|
2016-03-19 06:57:51 +13:00
|
|
|
|
|
|
|
#ifndef SCHEMATICGROUPEDITOR_H
|
|
|
|
#define SCHEMATICGROUPEDITOR_H
|
|
|
|
|
|
|
|
#include "tcommon.h"
|
2016-03-27 13:30:32 +13:00
|
|
|
#include <QGraphicsItem>
|
2016-03-19 06:57:51 +13:00
|
|
|
#include "tgeometry.h"
|
|
|
|
|
|
|
|
#undef DVAPI
|
|
|
|
#undef DVVAR
|
|
|
|
#ifdef TOONZQT_EXPORTS
|
|
|
|
#define DVAPI DV_EXPORT_API
|
|
|
|
#define DVVAR DV_EXPORT_VAR
|
|
|
|
#else
|
|
|
|
#define DVAPI DV_IMPORT_API
|
|
|
|
#define DVVAR DV_IMPORT_VAR
|
|
|
|
#endif
|
|
|
|
|
2016-06-15 18:43:10 +12:00
|
|
|
// forward declaration
|
2016-03-19 06:57:51 +13:00
|
|
|
class QGraphicsScene;
|
|
|
|
class SchematicNode;
|
|
|
|
class FxSchematicNode;
|
|
|
|
class SchematicScene;
|
|
|
|
class TFx;
|
|
|
|
class TMacroFx;
|
|
|
|
class SchematicName;
|
|
|
|
|
|
|
|
//=====================================================
|
|
|
|
//
|
2016-06-15 18:43:10 +12:00
|
|
|
// SchematicGroupEditor
|
2016-03-19 06:57:51 +13:00
|
|
|
//
|
|
|
|
//=====================================================
|
|
|
|
|
2016-06-15 18:43:10 +12:00
|
|
|
class DVAPI SchematicWindowEditor : public QObject, public QGraphicsItem {
|
|
|
|
Q_OBJECT
|
2016-03-19 06:57:51 +13:00
|
|
|
|
2016-06-15 18:43:10 +12:00
|
|
|
QPointF m_lastPos;
|
2016-03-19 06:57:51 +13:00
|
|
|
|
|
|
|
protected:
|
2016-06-15 18:43:10 +12:00
|
|
|
QList<SchematicNode *> m_groupedNode;
|
|
|
|
QString m_groupName;
|
|
|
|
SchematicScene *m_scene;
|
|
|
|
SchematicName *m_nameItem;
|
|
|
|
bool m_isMacroEditor;
|
|
|
|
Qt::MouseButton m_button;
|
2016-03-19 06:57:51 +13:00
|
|
|
|
|
|
|
public:
|
2016-06-15 18:43:10 +12:00
|
|
|
SchematicWindowEditor(const QList<SchematicNode *> &groupedNode,
|
|
|
|
SchematicScene *scene);
|
|
|
|
~SchematicWindowEditor();
|
|
|
|
|
2016-06-19 20:06:29 +12:00
|
|
|
QRectF boundingRect() const override;
|
2016-06-15 18:43:10 +12:00
|
|
|
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option,
|
2016-06-19 20:06:29 +12:00
|
|
|
QWidget *widget = 0) override;
|
2016-06-15 18:43:10 +12:00
|
|
|
virtual QRectF boundingSceneRect() const = 0;
|
|
|
|
virtual void setGroupedNodeZValue(int zValue) = 0;
|
|
|
|
bool contains(SchematicNode *node) const {
|
|
|
|
return m_groupedNode.contains(node);
|
|
|
|
}
|
|
|
|
void resizeNodes(bool maximizeNodes);
|
2016-03-19 06:57:51 +13:00
|
|
|
|
|
|
|
protected:
|
2016-06-19 20:06:29 +12:00
|
|
|
void mousePressEvent(QGraphicsSceneMouseEvent *e) override;
|
|
|
|
void mouseMoveEvent(QGraphicsSceneMouseEvent *e) override;
|
|
|
|
void mouseReleaseEvent(QGraphicsSceneMouseEvent *e) override;
|
|
|
|
void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *e) override;
|
|
|
|
void contextMenuEvent(QGraphicsSceneContextMenuEvent *e) override;
|
2016-03-19 06:57:51 +13:00
|
|
|
|
|
|
|
protected slots:
|
2016-06-15 18:43:10 +12:00
|
|
|
virtual void closeEditor() = 0;
|
|
|
|
virtual void onNameChanged() = 0;
|
2016-03-19 06:57:51 +13:00
|
|
|
|
|
|
|
private:
|
2016-06-15 18:43:10 +12:00
|
|
|
//! retrieve the group name and the group Id
|
|
|
|
virtual void initializeEditor() = 0;
|
|
|
|
virtual void doResizeNodes(bool maximizeNodes) = 0;
|
2016-03-19 06:57:51 +13:00
|
|
|
};
|
|
|
|
|
|
|
|
//=====================================================
|
|
|
|
//
|
2016-06-15 18:43:10 +12:00
|
|
|
// FxSchematicGroupEditor
|
2016-03-19 06:57:51 +13:00
|
|
|
//
|
|
|
|
//=====================================================
|
|
|
|
|
2016-06-29 18:17:12 +12:00
|
|
|
class DVAPI FxSchematicGroupEditor final : public SchematicWindowEditor {
|
2016-06-15 18:43:10 +12:00
|
|
|
Q_OBJECT
|
2016-03-19 06:57:51 +13:00
|
|
|
|
2016-06-15 18:43:10 +12:00
|
|
|
int m_groupId;
|
2016-03-19 06:57:51 +13:00
|
|
|
|
|
|
|
public:
|
2016-06-15 18:43:10 +12:00
|
|
|
FxSchematicGroupEditor(int groupId, const QList<SchematicNode *> &groupedNode,
|
|
|
|
SchematicScene *scene);
|
|
|
|
~FxSchematicGroupEditor();
|
2016-03-19 06:57:51 +13:00
|
|
|
|
2016-06-19 20:06:29 +12:00
|
|
|
QRectF boundingSceneRect() const override;
|
|
|
|
void setGroupedNodeZValue(int zValue) override;
|
2016-03-19 06:57:51 +13:00
|
|
|
|
|
|
|
protected slots:
|
2016-06-19 20:06:29 +12:00
|
|
|
void closeEditor() override;
|
|
|
|
void onNameChanged() override;
|
2016-03-19 06:57:51 +13:00
|
|
|
|
|
|
|
private:
|
2016-06-19 20:06:29 +12:00
|
|
|
void initializeEditor() override;
|
|
|
|
void doResizeNodes(bool maximizeNodes) override;
|
2016-03-19 06:57:51 +13:00
|
|
|
};
|
|
|
|
|
|
|
|
//=====================================================
|
|
|
|
//
|
2016-06-15 18:43:10 +12:00
|
|
|
// FxSchematicMacroEditor
|
2016-03-19 06:57:51 +13:00
|
|
|
//
|
|
|
|
//=====================================================
|
|
|
|
|
2016-06-29 18:17:12 +12:00
|
|
|
class DVAPI FxSchematicMacroEditor final : public SchematicWindowEditor {
|
2016-06-15 18:43:10 +12:00
|
|
|
Q_OBJECT
|
2016-03-19 06:57:51 +13:00
|
|
|
|
2016-06-15 18:43:10 +12:00
|
|
|
TMacroFx *m_macro;
|
2016-03-19 06:57:51 +13:00
|
|
|
|
|
|
|
public:
|
2016-06-15 18:43:10 +12:00
|
|
|
FxSchematicMacroEditor(TMacroFx *macro,
|
|
|
|
const QList<SchematicNode *> &groupedNode,
|
|
|
|
SchematicScene *scene);
|
|
|
|
~FxSchematicMacroEditor();
|
2016-03-19 06:57:51 +13:00
|
|
|
|
2016-06-19 20:06:29 +12:00
|
|
|
QRectF boundingSceneRect() const override;
|
|
|
|
void setGroupedNodeZValue(int zValue) override;
|
2016-03-19 06:57:51 +13:00
|
|
|
|
|
|
|
protected:
|
2016-06-19 20:06:29 +12:00
|
|
|
void mouseMoveEvent(QGraphicsSceneMouseEvent *e) override;
|
2016-03-19 06:57:51 +13:00
|
|
|
|
|
|
|
protected slots:
|
2016-06-19 20:06:29 +12:00
|
|
|
void closeEditor() override;
|
|
|
|
void onNameChanged() override;
|
2016-03-19 06:57:51 +13:00
|
|
|
|
|
|
|
private:
|
2016-06-19 20:06:29 +12:00
|
|
|
void initializeEditor() override;
|
|
|
|
void doResizeNodes(bool maximizeNodes) override;
|
2016-03-19 06:57:51 +13:00
|
|
|
};
|
|
|
|
|
|
|
|
//=====================================================
|
|
|
|
//
|
2016-06-15 18:43:10 +12:00
|
|
|
// StageSchematicGroupEditor
|
2016-03-19 06:57:51 +13:00
|
|
|
//
|
|
|
|
//=====================================================
|
|
|
|
|
2016-06-29 18:17:12 +12:00
|
|
|
class DVAPI StageSchematicGroupEditor final : public SchematicWindowEditor {
|
2016-06-15 18:43:10 +12:00
|
|
|
Q_OBJECT
|
2016-03-19 06:57:51 +13:00
|
|
|
|
2016-06-15 18:43:10 +12:00
|
|
|
int m_groupId;
|
2016-03-19 06:57:51 +13:00
|
|
|
|
|
|
|
public:
|
2016-06-15 18:43:10 +12:00
|
|
|
StageSchematicGroupEditor(int groupId,
|
|
|
|
const QList<SchematicNode *> &groupedNode,
|
|
|
|
SchematicScene *scene);
|
|
|
|
~StageSchematicGroupEditor();
|
2016-03-19 06:57:51 +13:00
|
|
|
|
2016-06-19 20:06:29 +12:00
|
|
|
QRectF boundingSceneRect() const override;
|
|
|
|
void setGroupedNodeZValue(int zValue) override;
|
2016-03-19 06:57:51 +13:00
|
|
|
|
|
|
|
protected slots:
|
2016-06-19 20:06:29 +12:00
|
|
|
void closeEditor() override;
|
|
|
|
void onNameChanged() override;
|
2016-03-19 06:57:51 +13:00
|
|
|
|
|
|
|
private:
|
2016-06-19 20:06:29 +12:00
|
|
|
void initializeEditor() override;
|
|
|
|
void doResizeNodes(bool maximizeNodes) override;
|
2016-03-19 06:57:51 +13:00
|
|
|
};
|
|
|
|
|
|
|
|
#endif
|