diff options
Diffstat (limited to 'src/Authoring/Studio/Palettes/Inspector/Qt3DSDMMaterialInspectable.cpp')
-rw-r--r-- | src/Authoring/Studio/Palettes/Inspector/Qt3DSDMMaterialInspectable.cpp | 135 |
1 files changed, 0 insertions, 135 deletions
diff --git a/src/Authoring/Studio/Palettes/Inspector/Qt3DSDMMaterialInspectable.cpp b/src/Authoring/Studio/Palettes/Inspector/Qt3DSDMMaterialInspectable.cpp index 431bf430..3cfb74c3 100644 --- a/src/Authoring/Studio/Palettes/Inspector/Qt3DSDMMaterialInspectable.cpp +++ b/src/Authoring/Studio/Palettes/Inspector/Qt3DSDMMaterialInspectable.cpp @@ -32,7 +32,6 @@ #include "Qt3DSDMInspectorRow.h" #include "Core.h" #include "IDocumentEditor.h" -#include "GenericComboDropDown.h" #include "Qt3DSDMHandles.h" #include "Doc.h" #include "GenericFunctor.h" @@ -47,140 +46,6 @@ using namespace qt3dsdm; -struct SMaterialTypeDropDown : public CGenericComboDropDown -{ - struct SMaterialEntry - { - Q3DStudio::CString m_Name; - Q3DStudio::CString m_RelativePath; - bool operator<(const SMaterialEntry &inOther) const { return m_Name < inOther.m_Name; } - }; - Qt3DSDMInstanceHandle m_Instance; - Q3DStudio::CAutoMemPtr<CGenericEditCommitListener> m_CommitListener; - vector<SMaterialEntry> m_Materials; - CDoc &m_Doc; - TSignalConnectionPtr m_FileListPtr; - - SMaterialTypeDropDown(CDoc &inDoc, Qt3DSDMInstanceHandle inInstance) - : m_Instance(inInstance) - , m_Doc(inDoc) - { - using Q3DStudio::CString; - using Q3DStudio::CFilePath; - m_CommitListener = - CREATE_LISTENER(CGenericEditCommitListener, SMaterialTypeDropDown, OnDataCommit); - AddCommitListener(m_CommitListener); - m_FileListPtr = m_Doc.GetDirectoryWatchingSystem()->AddDirectory( - m_Doc.GetDocumentDirectory().toQString(), - std::bind(&SMaterialTypeDropDown::OnFilesChanged, this, std::placeholders::_1)); - } - - vector<SMaterialEntry>::iterator GetMaterialEntry(const Q3DStudio::CString &inRelativePath) - { - for (size_t idx = 0, end = m_Materials.size(); idx < end; ++idx) - if (m_Materials[idx].m_RelativePath == inRelativePath) - return m_Materials.begin() + idx; - return m_Materials.end(); - } - - vector<SMaterialEntry>::iterator - GetOrCreateMaterialEntry(const Q3DStudio::CString &inRelativePath) - { - vector<SMaterialEntry>::iterator retval = GetMaterialEntry(inRelativePath); - if (retval == m_Materials.end()) { - m_Materials.push_back(SMaterialEntry()); - m_Materials.back().m_RelativePath = inRelativePath; - return m_Materials.begin() + m_Materials.size() - 1; - } else - return retval; - } - - void OnFilesChanged(const Q3DStudio::TFileModificationList &inFileModificationList) - { - for (size_t idx = 0, end = inFileModificationList.size(); idx < end; ++idx) { - const Q3DStudio::SFileModificationRecord &theRecord = inFileModificationList[idx]; - Q3DStudio::CFilePath relativePath(Q3DStudio::CFilePath::GetRelativePathFromBase( - m_Doc.GetDocumentDirectory(), theRecord.m_File)); - Q3DStudio::CString extension = relativePath.GetExtension(); - if (extension.CompareNoCase("material")) { - switch (theRecord.m_ModificationType) { - case Q3DStudio::FileModificationType::Created: - case Q3DStudio::FileModificationType::Modified: { - SMaterialEntry &theEntry = - *GetOrCreateMaterialEntry(Q3DStudio::CString(relativePath)); - theEntry.m_Name = - m_Doc.GetDocumentReader().GetCustomMaterialName( - theRecord.m_File.toCString()); - } break; - case Q3DStudio::FileModificationType::Destroyed: { - vector<SMaterialEntry>::iterator theEntry = GetMaterialEntry(relativePath); - if (theEntry != m_Materials.end()) - m_Materials.erase(theEntry); - } break; - - default: // don't care. - break; - } - } - } - - std::sort(m_Materials.begin(), m_Materials.end()); - - RefreshAllItems(); - } - - void RefreshAllItems() - { - RemoveAllItems(); - AddItem("Standard Material"); - AddItem("Referenced Material"); - CClientDataModelBridge *theBridge = m_Doc.GetStudioSystem()->GetClientDataModelBridge(); - long selectIdx = 0; - EStudioObjectType theType = theBridge->GetObjectType(m_Instance); - - if (theType == OBJTYPE_REFERENCEDMATERIAL) - selectIdx = 1; - - Q3DStudio::CString sourcePath = theBridge->GetSourcePath(m_Instance); - - for (size_t matIdx = 0, end = m_Materials.size(); matIdx < end; ++matIdx) { - AddItem(m_Materials[matIdx].m_Name); - if (m_Materials[matIdx].m_RelativePath.Compare(sourcePath)) - selectIdx = (long)matIdx + 2; - } - - SelectItem(selectIdx, false); - } - - // Note that the this object is probably deleted when this happens or will be during its - // execution. - static void DoChangeObjectType(CDoc *inDoc, const Q3DStudio::CString &inNewType, - Qt3DSDMInstanceHandle instance) - { - using namespace Q3DStudio; - SCOPED_DOCUMENT_EDITOR(*inDoc, QObject::tr("Set Property"))->SetMaterialType(instance, - inNewType); - } - - void OnDataCommit() - { - using Q3DStudio::CString; - size_t item = this->GetSelectedItem(); - if (item >= 0) { - CString selectedType = this->GetItemText(this->GetSelectedItem()); - if (item > 1) { - size_t matIdx = item - 2; - if (matIdx < m_Materials.size()) - selectedType = m_Materials[matIdx].m_RelativePath; - } - // Fire a command to do this later because we will get screwed if we don't as we will be - // deleted during this process. - g_StudioApp.GetCore()->GetDispatch()->FireOnAsynchronousCommand( - std::bind(&DoChangeObjectType, &m_Doc, selectedType, m_Instance)); - } - } -}; - Qt3DSDMMaterialInspectorGroup::Qt3DSDMMaterialInspectorGroup( CStudioApp &inApp, const QString &inName, |