Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
#ifndef ADDFXCONTEXTMENU_H
Toshihiro Shimizu 890ddd
#define ADDFXCONTEXTMENU_H
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
#include "tfilepath.h"
Toshihiro Shimizu 890ddd
#include <qobject></qobject>
Toshihiro Shimizu 890ddd
#include <qpointf></qpointf>
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
class QMenu;
Toshihiro Shimizu 890ddd
class QActionGroup;
Toshihiro Shimizu 890ddd
class TIStream;
Toshihiro Shimizu 890ddd
class QAction;
Toshihiro Shimizu 890ddd
class TXsheetHandle;
Toshihiro Shimizu 890ddd
class TFxHandle;
Toshihiro Shimizu 890ddd
class FxSelection;
Toshihiro Shimizu 890ddd
class TColumnHandle;
Toshihiro Shimizu 890ddd
class TFrameHandle;
Toshihiro Shimizu 890ddd
class TApplication;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
class PluginInformation;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
//! Create Insert - Add - Replace menus for the context menu of a FxSchematicScene and its items!
Toshihiro Shimizu 890ddd
//! This method is used to create and keep updated the three menus.
Toshihiro Shimizu 890ddd
//! Each menus contains all toonz special effect and effect presets.
Toshihiro Shimizu 890ddd
class AddFxContextMenu : public QObject
Toshihiro Shimizu 890ddd
{
Toshihiro Shimizu 890ddd
	Q_OBJECT
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	QMenu *m_insertMenu, *m_addMenu, *m_replaceMenu;
Toshihiro Shimizu 890ddd
	TFilePath m_fxListPath, m_presetPath;
Toshihiro Shimizu 890ddd
	QActionGroup *m_insertActionGroup, *m_addActionGroup, *m_replaceActionGroup;
Toshihiro Shimizu 890ddd
	TApplication *m_app;
Toshihiro Shimizu 890ddd
	FxSelection *m_selection;
Toshihiro Shimizu 890ddd
	// in order to add fx at the cursor position
Toshihiro Shimizu 890ddd
	QPointF m_currentCursorScenePos;
Toshihiro Shimizu 890ddd
	// for reproduce the last added fx
Toshihiro Shimizu 890ddd
	QAction *m_againCommand;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
public:
Toshihiro Shimizu 890ddd
	AddFxContextMenu();
Toshihiro Shimizu 890ddd
	~AddFxContextMenu();
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	QMenu *getInsertMenu() { return m_insertMenu; }
Toshihiro Shimizu 890ddd
	QMenu *getAddMenu() { return m_addMenu; }
Toshihiro Shimizu 890ddd
	QMenu *getReplaceMenu() { return m_replaceMenu; }
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	void setApplication(TApplication *app);
Toshihiro Shimizu 890ddd
	void setSelection(FxSelection *selection) { m_selection = selection; }
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	void setCurrentCursorScenePos(const QPointF &scenePos) { m_currentCursorScenePos = scenePos; }
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	enum Commands {
Toshihiro Shimizu 890ddd
		Insert = 0x1,
Toshihiro Shimizu 890ddd
		Add = 0x2,
Toshihiro Shimizu 890ddd
		Replace = 0x4
Toshihiro Shimizu 890ddd
	};
Toshihiro Shimizu 890ddd
	QAction *getAgainCommand(int command);
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
private:
Toshihiro Shimizu 890ddd
	void fillMenus();
Toshihiro Shimizu 890ddd
	void loadFxs();
Toshihiro Shimizu 890ddd
	void loadFxGroup(TIStream *is);
Toshihiro Shimizu 890ddd
	void loadFx(TIStream *is, QMenu *insertFxGroup, QMenu *addFxGroup, QMenu *replaceFxGroup);
Shinya Kitaoka 3bfa54
	bool loadPreset(const std::string &name, QMenu *insertFxGroup, QMenu *addFxGroup, QMenu *replaceFxGroup);
Toshihiro Shimizu 890ddd
	void loadMacro();
Toshihiro Shimizu 890ddd
	void loadFxPluginGroup();
Toshihiro Shimizu 890ddd
	void loadFxPlugins(QMenu *insertFxGroup, QMenu *addFxGroup, QMenu *replaceFxGroup);
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
private slots:
Toshihiro Shimizu 890ddd
	void onInsertFx(QAction *);
Toshihiro Shimizu 890ddd
	void onAddFx(QAction *);
Toshihiro Shimizu 890ddd
	void onReplaceFx(QAction *);
Toshihiro Shimizu 890ddd
	void onFxPresetHandled();
Toshihiro Shimizu 890ddd
	void onAgainCommand();
Toshihiro Shimizu 890ddd
public slots:
Toshihiro Shimizu 890ddd
	void result(PluginInformation *);
Toshihiro Shimizu 890ddd
	void fixup();
Toshihiro Shimizu 890ddd
};
Toshihiro Shimizu 890ddd
Shinya Kitaoka 3bfa54
#endif // ADDFXCONTEXTMENU_H