File indexing completed on 2024-04-06 12:11:32
0001 #ifndef Fireworks_Core_FWSelectionManager_h
0002 #define Fireworks_Core_FWSelectionManager_h
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022 #include "sigc++/signal.h"
0023 #include "sigc++/connection.h"
0024 #include <set>
0025 #include <vector>
0026
0027
0028 #include "Fireworks/Core/interface/FWModelId.h"
0029
0030
0031 class FWEventItem;
0032 class FWModelChangeManager;
0033
0034 class FWSelectionManager {
0035
0036 friend class FWEventItem;
0037
0038 public:
0039 FWSelectionManager(FWModelChangeManager* iCM);
0040
0041
0042
0043 const std::set<FWModelId>& selected() const;
0044
0045 const std::set<FWEventItem*>& selectedItems() const;
0046
0047
0048
0049 void clearSelection();
0050 void clearItemSelection();
0051 void clearModelSelectionLeaveItem();
0052
0053 sigc::signal<void(const FWSelectionManager&)> selectionChanged_;
0054 sigc::signal<void(const FWSelectionManager&)> itemSelectionChanged_;
0055
0056 FWSelectionManager(const FWSelectionManager&) = delete;
0057
0058 const FWSelectionManager& operator=(const FWSelectionManager&) = delete;
0059 private:
0060 void finishedAllSelections();
0061 void select(const FWModelId& iId);
0062 void unselect(const FWModelId& iId);
0063 void itemChanged(const FWEventItem*);
0064
0065 void selectItem(FWEventItem*);
0066 void unselectItem(FWEventItem*);
0067
0068
0069 FWModelChangeManager* m_changeManager;
0070 std::set<FWModelId> m_selection;
0071 std::set<FWModelId> m_newSelection;
0072 bool m_wasChanged;
0073 std::vector<std::pair<int, sigc::connection> > m_itemConnectionCount;
0074 std::set<FWEventItem*> m_itemSelection;
0075 };
0076
0077 #endif