// Copyright (c) Wojciech Figat. All rights reserved. #pragma once #if USE_VISUAL_STUDIO_DTE #include "Engine/Core/Enums.h" #include "Editor/Scripting/CodeEditor.h" /// /// Microsoft Visual Studio version types /// DECLARE_ENUM_8(VisualStudioVersion, VS2008, VS2010, VS2012, VS2013, VS2015, VS2017, VS2019, VS2022); /// /// Implementation of code editor utility that is using Microsoft Visual Studio. /// class VisualStudioEditor : public CodeEditor { private: VisualStudioVersion _version; CodeEditorTypes _type; String _execPath; String _CLSID; String _solutionPath; public: /// /// Initializes a new instance of the class. /// /// VS version /// Executable file path /// CLSID of VS VisualStudioEditor(VisualStudioVersion version, const String& execPath, const String& CLSID); public: /// /// Gets version of Visual Studio. /// FORCE_INLINE VisualStudioVersion GetVersion() const { return _version; } /// /// Tries to find installed Visual Studio instances and dds them to the result list. /// /// The output editors. static void FindEditors(Array* output); public: // [CodeEditor] CodeEditorTypes GetType() const override; String GetName() const override; void OpenFile(const String& path, int32 line) override; void OpenSolution() override; void OnFileAdded(const String& path) override; bool UseAsyncForOpen() const override; }; #endif