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
|
|
|
|
|
|
|
|
//forward declaration
|
|
|
|
class QGraphicsScene;
|
|
|
|
class SchematicNode;
|
|
|
|
class FxSchematicNode;
|
|
|
|
class SchematicScene;
|
|
|
|
class TFx;
|
|
|
|
class TMacroFx;
|
|
|
|
class SchematicName;
|
|
|
|
|
|
|
|
//=====================================================
|
|
|
|
//
|
|
|
|
//SchematicGroupEditor
|
|
|
|
//
|
|
|
|
//=====================================================
|
|
|
|
|
|
|
|
class DVAPI SchematicWindowEditor : public QObject, public QGraphicsItem
|
|
|
|
{
|
|
|
|
Q_OBJECT
|
|
|
|
|
|
|
|
QPointF m_lastPos;
|
|
|
|
|
|
|
|
protected:
|
|
|
|
QList<SchematicNode *> m_groupedNode;
|
|
|
|
QString m_groupName;
|
|
|
|
SchematicScene *m_scene;
|
|
|
|
SchematicName *m_nameItem;
|
|
|
|
bool m_isMacroEditor;
|
|
|
|
Qt::MouseButton m_button;
|
|
|
|
|
|
|
|
public:
|
|
|
|
SchematicWindowEditor(const QList<SchematicNode *> &groupedNode, SchematicScene *scene);
|
|
|
|
~SchematicWindowEditor();
|
|
|
|
|
|
|
|
QRectF boundingRect() const;
|
|
|
|
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0);
|
|
|
|
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);
|
|
|
|
|
|
|
|
protected:
|
|
|
|
void mousePressEvent(QGraphicsSceneMouseEvent *e);
|
|
|
|
virtual void mouseMoveEvent(QGraphicsSceneMouseEvent *e);
|
|
|
|
void mouseReleaseEvent(QGraphicsSceneMouseEvent *e);
|
|
|
|
void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *e);
|
|
|
|
void contextMenuEvent(QGraphicsSceneContextMenuEvent *e);
|
|
|
|
|
|
|
|
protected slots:
|
|
|
|
virtual void closeEditor() = 0;
|
|
|
|
virtual void onNameChanged() = 0;
|
|
|
|
|
|
|
|
private:
|
|
|
|
//! retrieve the group name and the group Id
|
|
|
|
virtual void initializeEditor() = 0;
|
|
|
|
virtual void doResizeNodes(bool maximizeNodes) = 0;
|
|
|
|
};
|
|
|
|
|
|
|
|
//=====================================================
|
|
|
|
//
|
|
|
|
//FxSchematicGroupEditor
|
|
|
|
//
|
|
|
|
//=====================================================
|
|
|
|
|
|
|
|
class DVAPI FxSchematicGroupEditor : public SchematicWindowEditor
|
|
|
|
{
|
|
|
|
|
|
|
|
Q_OBJECT
|
|
|
|
|
|
|
|
int m_groupId;
|
|
|
|
|
|
|
|
public:
|
|
|
|
FxSchematicGroupEditor(int groupId, const QList<SchematicNode *> &groupedNode, SchematicScene *scene);
|
|
|
|
~FxSchematicGroupEditor();
|
|
|
|
|
|
|
|
QRectF boundingSceneRect() const;
|
|
|
|
void setGroupedNodeZValue(int zValue);
|
|
|
|
|
|
|
|
protected slots:
|
|
|
|
void closeEditor();
|
|
|
|
void onNameChanged();
|
|
|
|
|
|
|
|
private:
|
|
|
|
void initializeEditor();
|
|
|
|
void doResizeNodes(bool maximizeNodes);
|
|
|
|
};
|
|
|
|
|
|
|
|
//=====================================================
|
|
|
|
//
|
|
|
|
//FxSchematicMacroEditor
|
|
|
|
//
|
|
|
|
//=====================================================
|
|
|
|
|
|
|
|
class DVAPI FxSchematicMacroEditor : public SchematicWindowEditor
|
|
|
|
{
|
|
|
|
Q_OBJECT
|
|
|
|
|
|
|
|
TMacroFx *m_macro;
|
|
|
|
|
|
|
|
public:
|
|
|
|
FxSchematicMacroEditor(TMacroFx *macro, const QList<SchematicNode *> &groupedNode, SchematicScene *scene);
|
|
|
|
~FxSchematicMacroEditor();
|
|
|
|
|
|
|
|
QRectF boundingSceneRect() const;
|
|
|
|
void setGroupedNodeZValue(int zValue);
|
|
|
|
|
|
|
|
protected:
|
|
|
|
void mouseMoveEvent(QGraphicsSceneMouseEvent *e);
|
|
|
|
|
|
|
|
protected slots:
|
|
|
|
void closeEditor();
|
|
|
|
void onNameChanged();
|
|
|
|
|
|
|
|
private:
|
|
|
|
void initializeEditor();
|
|
|
|
void doResizeNodes(bool maximizeNodes);
|
|
|
|
};
|
|
|
|
|
|
|
|
//=====================================================
|
|
|
|
//
|
|
|
|
//StageSchematicGroupEditor
|
|
|
|
//
|
|
|
|
//=====================================================
|
|
|
|
|
|
|
|
class DVAPI StageSchematicGroupEditor : public SchematicWindowEditor
|
|
|
|
{
|
|
|
|
|
|
|
|
Q_OBJECT
|
|
|
|
|
|
|
|
int m_groupId;
|
|
|
|
|
|
|
|
public:
|
|
|
|
StageSchematicGroupEditor(int groupId, const QList<SchematicNode *> &groupedNode, SchematicScene *scene);
|
|
|
|
~StageSchematicGroupEditor();
|
|
|
|
|
|
|
|
QRectF boundingSceneRect() const;
|
|
|
|
void setGroupedNodeZValue(int zValue);
|
|
|
|
|
|
|
|
protected slots:
|
|
|
|
void closeEditor();
|
|
|
|
void onNameChanged();
|
|
|
|
|
|
|
|
private:
|
|
|
|
void initializeEditor();
|
|
|
|
void doResizeNodes(bool maximizeNodes);
|
|
|
|
};
|
|
|
|
|
|
|
|
#endif
|