#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