Plasma Engine  2.0
Loading...
Searching...
No Matches
ManipulatorManager.h
1#pragma once
2
3#include <Foundation/Configuration/Singleton.h>
4#include <Foundation/Configuration/Startup.h>
5#include <GuiFoundation/GuiFoundationDLL.h>
6#include <GuiFoundation/PropertyGrid/PropertyBaseWidget.moc.h>
7#include <ToolsFoundation/Document/DocumentManager.h>
8
12
13struct PL_GUIFOUNDATION_DLL plManipulatorManagerEvent
14{
15 const plDocument* m_pDocument;
16 const plManipulatorAttribute* m_pManipulator;
17 const plHybridArray<plPropertySelection, 8>* m_pSelection;
18 bool m_bHideManipulators;
19};
20
21class PL_GUIFOUNDATION_DLL plManipulatorManager
22{
23 PL_DECLARE_SINGLETON(plManipulatorManager);
24
25public:
28
29 const plManipulatorAttribute* GetActiveManipulator(const plDocument* pDoc, const plHybridArray<plPropertySelection, 8>*& out_pSelection) const;
30
31 void SetActiveManipulator(
32 const plDocument* pDoc, const plManipulatorAttribute* pManipulator, const plHybridArray<plPropertySelection, 8>& selection);
33
34 void ClearActiveManipulator(const plDocument* pDoc);
35
37
38 void HideActiveManipulator(const plDocument* pDoc, bool bHide);
39 void ToggleHideActiveManipulator(const plDocument* pDoc);
40
41private:
42 struct Data
43 {
44 Data()
45 {
46 m_pAttribute = nullptr;
47 m_bHideManipulators = false;
48 }
49
50 const plManipulatorAttribute* m_pAttribute;
52 bool m_bHideManipulators;
53 };
54
55 void InternalSetActiveManipulator(
56 const plDocument* pDoc, const plManipulatorAttribute* pManipulator, const plHybridArray<plPropertySelection, 8>& selection, bool bUnhide);
57
58 void StructureEventHandler(const plDocumentObjectStructureEvent& e);
59 void SelectionEventHandler(const plSelectionManagerEvent& e);
60
61 void TransferToCurrentSelection(const plDocument* pDoc);
62
63 void PhantomTypeManagerEventHandler(const plPhantomRttiManagerEvent& e);
64 void DocumentManagerEventHandler(const plDocumentManager::Event& e);
65
66 plMap<const plDocument*, Data> m_ActiveManipulator;
67};
Definition Document.h:57
Definition Event.h:177
A hybrid array uses in-place storage to handle the first few elements without any allocation....
Definition HybridArray.h:12
Definition PropertyAttributes.h:597
Definition ManipulatorManager.h:22
Definition Map.h:408
Definition DocumentManager.h:65
Used by plDocumentObjectManager::m_StructureEvents.
Definition DocumentObjectManager.h:45
Definition ManipulatorManager.h:14
Definition PhantomRttiManager.h:10
Definition SelectionManager.h:10