Replaced the old VS templates with ones that offer more flexiblity. Started replacing the Content Project for the samples with our custom project type. Inlcuded a basic not yet working AssimpImporter.
89 lines
3.3 KiB
C#
89 lines
3.3 KiB
C#
/* ****************************************************************************
|
|
*
|
|
* Copyright (c) Microsoft Corporation.
|
|
*
|
|
* This source code is subject to terms and conditions of the Apache License, Version 2.0. A
|
|
* copy of the license can be found in the License.html file at the root of this distribution. If
|
|
* you cannot locate the Apache License, Version 2.0, please send an email to
|
|
* vspython@microsoft.com. By using this source code in any fashion, you are agreeing to be bound
|
|
* by the terms of the Apache License, Version 2.0.
|
|
*
|
|
* You must not remove this notice, or any other, from this software.
|
|
*
|
|
* ***************************************************************************/
|
|
|
|
|
|
using Microsoft.VisualStudio;
|
|
using Microsoft.VisualStudio.Shell.Interop;
|
|
using Microsoft.VisualStudio.Text;
|
|
using Microsoft.VisualStudio.Text.Editor;
|
|
using Microsoft.VisualStudio.Project;
|
|
using Microsoft.VisualStudio.Project.Automation;
|
|
|
|
namespace Microsoft.VisualStudio {
|
|
static class VsExtensions {
|
|
public static string GetFilePath(this ITextView textView) {
|
|
return textView.TextBuffer.GetFilePath();
|
|
}
|
|
#if FALSE
|
|
public static ITrackingSpan CreateTrackingSpan(this IIntellisenseSession session, ITextBuffer buffer) {
|
|
var triggerPoint = session.GetTriggerPoint(buffer);
|
|
var position = session.GetTriggerPoint(buffer).GetPosition(session.TextView.TextSnapshot);
|
|
|
|
var snapshot = buffer.CurrentSnapshot;
|
|
if (position == snapshot.Length) {
|
|
return snapshot.CreateTrackingSpan(position, 0, SpanTrackingMode.EdgeInclusive);
|
|
} else {
|
|
return snapshot.CreateTrackingSpan(position, 1, SpanTrackingMode.EdgeInclusive);
|
|
}
|
|
}
|
|
#endif
|
|
public static EnvDTE.Project GetProject(this IVsHierarchy hierarchy) {
|
|
object project;
|
|
|
|
ErrorHandler.ThrowOnFailure(
|
|
hierarchy.GetProperty(
|
|
VSConstants.VSITEMID_ROOT,
|
|
(int)__VSHPROPID.VSHPROPID_ExtObject,
|
|
out project
|
|
)
|
|
);
|
|
|
|
return (project as EnvDTE.Project);
|
|
}
|
|
|
|
public static CommonProjectNode GetCommonProject(this EnvDTE.Project project) {
|
|
OAProject oaProj = project as OAProject;
|
|
if (oaProj != null) {
|
|
var common = oaProj.Project as CommonProjectNode;
|
|
if (common != null) {
|
|
return common;
|
|
}
|
|
}
|
|
return null;
|
|
}
|
|
|
|
public static string GetRootCanonicalName(this IVsHierarchy heirarchy) {
|
|
string path;
|
|
ErrorHandler.ThrowOnFailure(heirarchy.GetCanonicalName(VSConstants.VSITEMID_ROOT, out path));
|
|
return path;
|
|
}
|
|
|
|
public static T[] Append<T>(this T[] list, T item) {
|
|
T[] res = new T[list.Length + 1];
|
|
list.CopyTo(res, 0);
|
|
res[res.Length - 1] = item;
|
|
return res;
|
|
}
|
|
|
|
public static string GetFilePath(this ITextBuffer textBuffer) {
|
|
ITextDocument textDocument;
|
|
if (textBuffer.Properties.TryGetProperty<ITextDocument>(typeof(ITextDocument), out textDocument)) {
|
|
return textDocument.FilePath;
|
|
} else {
|
|
return null;
|
|
}
|
|
}
|
|
}
|
|
}
|