Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
#ifndef TOOLEHANDLE_H
Toshihiro Shimizu 890ddd
#define TOOLEHANDLE_H
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
#include "tcommon.h"
Toshihiro Shimizu 890ddd
#include "timage.h"
Toshihiro Shimizu 890ddd
#include <QObject>
Toshihiro Shimizu 890ddd
#include <QMap>
Toshihiro Shimizu 890ddd
#include <QTime>
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
// forward declaration
Toshihiro Shimizu 890ddd
class TTool;
Toshihiro Shimizu 890ddd
class QAction;
Toshihiro Shimizu 890ddd
class QString;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
#undef DVAPI
Toshihiro Shimizu 890ddd
#undef DVVAR
Toshihiro Shimizu 890ddd
#ifdef TNZTOOLS_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
//=============================================================================
Toshihiro Shimizu 890ddd
// ToolHandle
Toshihiro Shimizu 890ddd
//-----------------------------------------------------------------------------
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
class DVAPI ToolHandle : public QObject
Toshihiro Shimizu 890ddd
{
Toshihiro Shimizu 890ddd
	Q_OBJECT
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	TTool *m_tool;
Toshihiro Shimizu 890ddd
	QString m_toolName;
Toshihiro Shimizu 890ddd
	int m_toolTargetType;
Toshihiro Shimizu 890ddd
	QString m_storedToolName;
Toshihiro Shimizu 890ddd
	QTime m_storedToolTime;
Toshihiro Shimizu 890ddd
	QString m_oldToolName;
Toshihiro Shimizu 890ddd
	bool m_toolIsBusy;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
public:
Toshihiro Shimizu 890ddd
	ToolHandle();
Toshihiro Shimizu 890ddd
	~ToolHandle();
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	TTool *getTool() const;
Toshihiro Shimizu 890ddd
	void setTool(TTool *tool);
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	void setTool(QString name);
Toshihiro Shimizu 890ddd
	void setTargetType(int targetType);
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	// used to change tool for a short while (e.g. while keeping pressed a short-key)
Toshihiro Shimizu 890ddd
	void storeTool();
Toshihiro Shimizu 890ddd
	void restoreTool();
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	// used to set a tool that is not listed in the toolbar (e.g. the ShiftTraceTool).
Toshihiro Shimizu 890ddd
	void setPseudoTool(QString name);
Toshihiro Shimizu 890ddd
	void unsetPseudoTool();
Toshihiro Shimizu 890ddd
	void setToolBusy(bool value);
Toshihiro Shimizu 890ddd
	bool isToolBusy() { return m_toolIsBusy; }
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	/*! Notify tool parameters change (out of toolOption bar).*/
Toshihiro Shimizu 890ddd
	void notifyToolChanged() { emit toolChanged(); }
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	void notifyToolCursorTypeChanged() { emit toolCursorTypeChanged(); }
Toshihiro Shimizu 890ddd
signals:
Toshihiro Shimizu 890ddd
	void toolSwitched();
Toshihiro Shimizu 890ddd
	void toolChanged();
Toshihiro Shimizu 890ddd
	void toolEditingFinished();
Toshihiro Shimizu 890ddd
	//used for changing the tool cursor when the options changed with short cut keys assigned for tool options.
Toshihiro Shimizu 890ddd
	void toolCursorTypeChanged();
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
public slots:
Toshihiro Shimizu 890ddd
	// void changeTool(QAction* action);
Toshihiro Shimizu 890ddd
	void onImageChanged(TImage::Type type);
Toshihiro Shimizu 890ddd
	void updateMatrix();
Toshihiro Shimizu 890ddd
};
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
#endif //TOOLEHANDLE_H