#pragma once #ifndef TSELECTIONHANDLE_H #define TSELECTIONHANDLE_H #include #include #include #include "toonzqt/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 // forward declaration class TSelection; class CommandHandlerInterface; //============================================================================= // TSelectionHandle //----------------------------------------------------------------------------- class DVAPI TSelectionHandle final : public QObject { Q_OBJECT std::vector m_selectionStack; std::vector m_enabledCommandIds; public: TSelectionHandle(); ~TSelectionHandle(); TSelection *getSelection() const; void setSelection(TSelection *selection); void pushSelection(); void popSelection(); // called by TSelection::enableCommand void enableCommand(std::string cmdId, CommandHandlerInterface *handler); void notifySelectionChanged(); static TSelectionHandle *getCurrent(); signals: void selectionSwitched(TSelection *oldSelection, TSelection *newSelection); void selectionChanged(TSelection *selection); }; #endif // TSELECTIONHANDLE_H