1 // Copyright 2001-2018 Crytek GmbH / Crytek Group. All rights reserved.
5 #include <Serialization/QPropertyTree/QPropertyTree.h>
7 #include "Serialization.h"
8 #include "DisplayParametersPanel.h"
10 #include <QViewport.h>
11 #include <CryAnimation/ICryAnimation.h>
12 #include "CharacterDocument.h"
14 namespace CharacterTool
17 DisplayParametersPanel::DisplayParametersPanel(QWidget
* parent
, CharacterDocument
* document
, Serialization::SContextLink
* context
)
19 , m_displayOptions(document
->GetDisplayOptions())
20 , m_document(document
)
21 , m_changingDisplayOptions(false)
23 EXPECTED(connect(document
, &CharacterDocument::SignalDisplayOptionsChanged
, this, &DisplayParametersPanel::OnDisplayOptionsUpdated
));
24 EXPECTED(connect(document
, &CharacterDocument::SignalCharacterLoaded
, this, &DisplayParametersPanel::OnDisplayOptionsUpdated
));
26 QBoxLayout
* layout
= new QBoxLayout(QBoxLayout::TopToBottom
, this);
28 layout
->setSpacing(0);
30 m_propertyTree
= new QPropertyTree(this);
31 PropertyTreeStyle
treeStyle(QPropertyTree::defaultTreeStyle());
32 treeStyle
.propertySplitter
= false;
33 treeStyle
.groupRectangle
= false;
34 m_propertyTree
->setTreeStyle(treeStyle
);
35 m_propertyTree
->setSizeHint(QSize(220, 100));
36 m_propertyTree
->setExpandLevels(0);
37 m_propertyTree
->setSliderUpdateDelay(5);
38 m_propertyTree
->setAutoRevert(false);
39 m_propertyTree
->setArchiveContext(context
);
40 m_propertyTree
->setValueColumnWidth(0.6f
);
41 m_propertyTree
->attach(Serialization::SStruct(*m_displayOptions
));
42 EXPECTED(connect(m_propertyTree
, &QPropertyTree::signalChanged
, this, &DisplayParametersPanel::OnPropertyTreeChanged
));
43 EXPECTED(connect(m_propertyTree
, &QPropertyTree::signalContinuousChange
, this, &DisplayParametersPanel::OnPropertyTreeChanged
));
44 layout
->addWidget(m_propertyTree
, 1);
47 DisplayParametersPanel::~DisplayParametersPanel()
52 void DisplayParametersPanel::Serialize(Serialization::IArchive
& ar
)
54 ar(*m_propertyTree
, "propertyTree");
57 void DisplayParametersPanel::OnDisplayOptionsUpdated()
59 if (m_changingDisplayOptions
)
62 m_propertyTree
->revertNoninterrupting();
65 void DisplayParametersPanel::OnPropertyTreeChanged()
67 m_changingDisplayOptions
= true;
69 m_document
->DisplayOptionsChanged();
70 m_changingDisplayOptions
= false;