Blob Blame Raw


#ifndef TOOLEHANDLE_H
#define TOOLEHANDLE_H

#include "tcommon.h"
#include "timage.h"
#include <QObject>
#include <QMap>
#include <QTime>

// forward declaration
class TTool;
class QAction;
class QString;

#undef DVAPI
#undef DVVAR
#ifdef TNZTOOLS_EXPORTS
#define DVAPI DV_EXPORT_API
#define DVVAR DV_EXPORT_VAR
#else
#define DVAPI DV_IMPORT_API
#define DVVAR DV_IMPORT_VAR
#endif

//=============================================================================
// ToolHandle
//-----------------------------------------------------------------------------

class DVAPI ToolHandle : public QObject
{
	Q_OBJECT

	TTool *m_tool;
	QString m_toolName;
	int m_toolTargetType;
	QString m_storedToolName;
	QTime m_storedToolTime;
	QString m_oldToolName;
	bool m_toolIsBusy;

public:
	ToolHandle();
	~ToolHandle();

	TTool *getTool() const;
	void setTool(TTool *tool);

	void setTool(QString name);
	void setTargetType(int targetType);

	// used to change tool for a short while (e.g. while keeping pressed a short-key)
	void storeTool();
	void restoreTool();

	// used to set a tool that is not listed in the toolbar (e.g. the ShiftTraceTool).
	void setPseudoTool(QString name);
	void unsetPseudoTool();
	void setToolBusy(bool value);
	bool isToolBusy() { return m_toolIsBusy; }

	/*! Notify tool parameters change (out of toolOption bar).*/
	void notifyToolChanged() { emit toolChanged(); }

	void notifyToolCursorTypeChanged() { emit toolCursorTypeChanged(); }
signals:
	void toolSwitched();
	void toolChanged();
	void toolEditingFinished();
	//used for changing the tool cursor when the options changed with short cut keys assigned for tool options.
	void toolCursorTypeChanged();

public slots:
	// void changeTool(QAction* action);
	void onImageChanged(TImage::Type type);
	void updateMatrix();
};

#endif //TOOLEHANDLE_H