85 lines
1.8 KiB
C++
85 lines
1.8 KiB
C++
|
|
|
|
#ifndef TSELECTION_H
|
|
#define TSELECTION_H
|
|
|
|
#include "menubarcommand.h"
|
|
#include "tcommon.h"
|
|
|
|
#undef DVAPI
|
|
#undef DVVAR
|
|
#ifdef TOONZQT_EXPORTS
|
|
#define DVAPI DV_EXPORT_API
|
|
#define DVVAR DV_EXPORT_VAR
|
|
#else
|
|
#define DVAPI DV_IMPORT_API
|
|
#define DVVAR DV_IMPORT_VAR
|
|
#endif
|
|
|
|
class QMenu;
|
|
class QWidget;
|
|
|
|
//=============================================================================
|
|
// TSelection
|
|
//-----------------------------------------------------------------------------
|
|
|
|
class DVAPI TSelection
|
|
{
|
|
public:
|
|
class View
|
|
{
|
|
public:
|
|
virtual ~View(){};
|
|
|
|
virtual void onSelectionChanged() = 0;
|
|
virtual void enableCommands() {}
|
|
};
|
|
|
|
public:
|
|
TSelection();
|
|
virtual ~TSelection();
|
|
|
|
// override this to define selection related commands
|
|
virtual void enableCommands()
|
|
{
|
|
if (m_view)
|
|
m_view->enableCommands();
|
|
}
|
|
|
|
// call selection handler enableCommand()
|
|
void enableCommand(CommandId cmdId, CommandHandlerInterface *handler);
|
|
|
|
// overridden enableCommands() will call enableCommand()
|
|
template <class T>
|
|
inline void enableCommand(T *target, CommandId cmdId, void (T::*method)())
|
|
{
|
|
enableCommand(cmdId, new CommandHandlerHelper<T>(target, method));
|
|
}
|
|
|
|
template <class T, typename R>
|
|
inline void enableCommand(T *target, CommandId cmdId, void (T::*method)(R), R value)
|
|
{
|
|
enableCommand(cmdId, new CommandHandlerHelper2<T, R>(target, method, value));
|
|
}
|
|
|
|
void makeCurrent();
|
|
void makeNotCurrent();
|
|
static TSelection *getCurrent();
|
|
static void setCurrent(TSelection *selection);
|
|
|
|
virtual bool isEmpty() const = 0;
|
|
virtual void selectNone() = 0;
|
|
|
|
virtual bool addMenuActions(QMenu *menu) { return false; }
|
|
void addMenuAction(QMenu *menu, CommandId cmdId);
|
|
|
|
void setView(View *view) { m_view = view; }
|
|
View *getView() const { return m_view; }
|
|
|
|
void notifyView();
|
|
|
|
private:
|
|
View *m_view;
|
|
};
|
|
|
|
#endif //TSELECTION_H
|