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