tahoma2d/toonz/sources/include/toonzqt/schematicgroupeditor.h

170 lines
4.2 KiB
C
Raw Normal View History

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-15 18:43:10 +12:00
class DVAPI FxSchematicGroupEditor : public SchematicWindowEditor {
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-15 18:43:10 +12:00
class DVAPI FxSchematicMacroEditor : public SchematicWindowEditor {
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-15 18:43:10 +12:00
class DVAPI StageSchematicGroupEditor : public SchematicWindowEditor {
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