// Copyright (c) 2012-2020 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_7(VisualStudioVersion, VS2008, VS2010, VS2012, VS2013, VS2015, VS2017, VS2019);
///
/// 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
///
/// VS version
FORCE_INLINE VisualStudioVersion GetVersion() const
{
return _version;
}
public:
///
/// Try to find installed Visual Studio instances. Adds 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