| #pragma once |
| |
| #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; |
| |
| |
| |
| |
| |
| class DVAPI TSelection { |
| public: |
| class View { |
| public: |
| virtual ~View(){}; |
| |
| virtual void onSelectionChanged() = 0; |
| virtual void enableCommands() {} |
| }; |
| |
| public: |
| TSelection(); |
| virtual ~TSelection(); |
| |
| |
| virtual void enableCommands() { |
| if (m_view) m_view->enableCommands(); |
| } |
| |
| |
| void enableCommand(CommandId cmdId, CommandHandlerInterface *handler); |
| |
| |
| 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 |