aboutsummaryrefslogtreecommitdiff
path: root/Src/external_dependencies/openmpt-trunk/mptrack/ModDocTemplate.h
diff options
context:
space:
mode:
Diffstat (limited to 'Src/external_dependencies/openmpt-trunk/mptrack/ModDocTemplate.h')
-rw-r--r--Src/external_dependencies/openmpt-trunk/mptrack/ModDocTemplate.h57
1 files changed, 57 insertions, 0 deletions
diff --git a/Src/external_dependencies/openmpt-trunk/mptrack/ModDocTemplate.h b/Src/external_dependencies/openmpt-trunk/mptrack/ModDocTemplate.h
new file mode 100644
index 00000000..53f7ae61
--- /dev/null
+++ b/Src/external_dependencies/openmpt-trunk/mptrack/ModDocTemplate.h
@@ -0,0 +1,57 @@
+/*
+ * ModDocTemplate.h
+ * ----------------
+ * Purpose: CDocTemplate and CModDocManager specializations for CModDoc.
+ * Notes : (currently none)
+ * Authors: OpenMPT Devs
+ * The OpenMPT source code is released under the BSD license. Read LICENSE for more details.
+ */
+
+
+#pragma once
+
+#include "openmpt/all/BuildSettings.hpp"
+
+#include <unordered_set>
+
+OPENMPT_NAMESPACE_BEGIN
+
+class CModDoc;
+namespace mpt { class PathString; }
+
+class CModDocTemplate: public CMultiDocTemplate
+{
+ std::unordered_set<CModDoc *> m_documents; // Allow faster lookup of open documents than MFC's linear search allows for
+
+public:
+ CModDocTemplate(UINT nIDResource, CRuntimeClass* pDocClass, CRuntimeClass* pFrameClass, CRuntimeClass* pViewClass):
+ CMultiDocTemplate(nIDResource, pDocClass, pFrameClass, pViewClass) {}
+
+ CDocument* OpenTemplateFile(const mpt::PathString &filename, bool isExampleTune = false);
+
+ CDocument* OpenDocumentFile(LPCTSTR lpszPathName, BOOL addToMru = TRUE, BOOL makeVisible = TRUE) override;
+
+ void AddDocument(CDocument *doc) override;
+ void RemoveDocument(CDocument *doc) override;
+ bool DocumentExists(const CModDoc *doc) const;
+
+ size_t size() const { return m_documents.size(); }
+ bool empty() const { return m_documents.empty(); }
+ auto begin() { return m_documents.begin(); }
+ auto begin() const { return m_documents.begin(); }
+ auto cbegin() const { return m_documents.cbegin(); }
+ auto end() { return m_documents.end(); }
+ auto end() const { return m_documents.end(); }
+ auto cend() const { return m_documents.cend(); }
+};
+
+
+class CModDocManager : public CDocManager
+{
+public:
+ CDocument *OpenDocumentFile(LPCTSTR lpszFileName, BOOL bAddToMRU = TRUE) override;
+ BOOL OnDDECommand(LPTSTR lpszCommand) override;
+};
+
+
+OPENMPT_NAMESPACE_END