anx.framework/Visual Studio/MPF11/Dev11/Src/CSharp/Automation/OAProjectConfigurationProperties.cs
Konstantin Koch 8287c54432 Included the Visual Studio extension and made the necessary changes to make it run.
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.
2015-04-08 14:50:03 +02:00

396 lines
11 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 System;
using System.Collections.Generic;
using Microsoft.VisualStudio;
using Microsoft.VisualStudio.OLE.Interop;
using Microsoft.VisualStudio.Shell.Interop;
using Microsoft.VisualStudio.Project;
using VSLangProj;
namespace Microsoft.VisualStudio.Project.Automation {
class OAProjectConfigurationProperties : ConnectionPointContainer, ProjectConfigurationProperties, IConnectionPointContainer, IEventSource<IPropertyNotifySink> {
private readonly ProjectNode _project;
private readonly List<IPropertyNotifySink> _sinks = new List<IPropertyNotifySink>();
private readonly HierarchyListener _hierarchyListener;
public OAProjectConfigurationProperties(ProjectNode node) {
_project = node;
AddEventSource<IPropertyNotifySink>(this);
_hierarchyListener = new HierarchyListener(_project, this);
}
#region ProjectConfigurationProperties Members
public bool AllowUnsafeBlocks {
get {
throw new NotImplementedException();
}
set {
throw new NotImplementedException();
}
}
public uint BaseAddress {
get {
throw new NotImplementedException();
}
set {
throw new NotImplementedException();
}
}
public bool CheckForOverflowUnderflow {
get {
throw new NotImplementedException();
}
set {
throw new NotImplementedException();
}
}
public string ConfigurationOverrideFile {
get {
throw new NotImplementedException();
}
set {
throw new NotImplementedException();
}
}
public bool DebugSymbols {
get {
throw new NotImplementedException();
}
set {
throw new NotImplementedException();
}
}
public string DefineConstants {
get {
throw new NotImplementedException();
}
set {
throw new NotImplementedException();
}
}
public bool DefineDebug {
get {
throw new NotImplementedException();
}
set {
throw new NotImplementedException();
}
}
public bool DefineTrace {
get {
throw new NotImplementedException();
}
set {
throw new NotImplementedException();
}
}
public string DocumentationFile {
get {
throw new NotImplementedException();
}
set {
throw new NotImplementedException();
}
}
public bool EnableASPDebugging {
get {
throw new NotImplementedException();
}
set {
throw new NotImplementedException();
}
}
public bool EnableASPXDebugging {
get {
throw new NotImplementedException();
}
set {
throw new NotImplementedException();
}
}
public bool EnableSQLServerDebugging {
get {
throw new NotImplementedException();
}
set {
throw new NotImplementedException();
}
}
public bool EnableUnmanagedDebugging {
get {
throw new NotImplementedException();
}
set {
throw new NotImplementedException();
}
}
public string ExtenderCATID {
get { throw new NotImplementedException(); }
}
public object ExtenderNames {
get { throw new NotImplementedException(); }
}
public uint FileAlignment {
get {
throw new NotImplementedException();
}
set {
throw new NotImplementedException();
}
}
public bool IncrementalBuild {
get {
return false;
}
set {
throw new NotImplementedException();
}
}
public string IntermediatePath {
get {
throw new NotImplementedException();
}
set {
throw new NotImplementedException();
}
}
public bool Optimize {
get {
throw new NotImplementedException();
}
set {
throw new NotImplementedException();
}
}
public string OutputPath {
get {
return _project.GetProjectProperty("OutputPath");
}
set {
UIThread.Instance.RunSync(() => {
_project.SetProjectProperty("OutputPath", value);
});
}
}
public bool RegisterForComInterop {
get {
throw new NotImplementedException();
}
set {
throw new NotImplementedException();
}
}
public bool RemoteDebugEnabled {
get {
throw new NotImplementedException();
}
set {
throw new NotImplementedException();
}
}
public string RemoteDebugMachine {
get {
throw new NotImplementedException();
}
set {
throw new NotImplementedException();
}
}
public bool RemoveIntegerChecks {
get {
throw new NotImplementedException();
}
set {
throw new NotImplementedException();
}
}
public prjStartAction StartAction {
get {
throw new NotImplementedException();
}
set {
throw new NotImplementedException();
}
}
public string StartArguments {
get {
throw new NotImplementedException();
}
set {
throw new NotImplementedException();
}
}
public string StartPage {
get {
throw new NotImplementedException();
}
set {
throw new NotImplementedException();
}
}
public string StartProgram {
get {
throw new NotImplementedException();
}
set {
throw new NotImplementedException();
}
}
public string StartURL {
get {
throw new NotImplementedException();
}
set {
throw new NotImplementedException();
}
}
public bool StartWithIE {
get {
throw new NotImplementedException();
}
set {
throw new NotImplementedException();
}
}
public string StartWorkingDirectory {
get {
throw new NotImplementedException();
}
set {
throw new NotImplementedException();
}
}
public bool TreatWarningsAsErrors {
get {
throw new NotImplementedException();
}
set {
throw new NotImplementedException();
}
}
public prjWarningLevel WarningLevel {
get {
throw new NotImplementedException();
}
set {
throw new NotImplementedException();
}
}
public string __id {
get { throw new NotImplementedException(); }
}
public object get_Extender(string ExtenderName) {
throw new NotImplementedException();
}
#endregion
#region IEventSource<IPropertyNotifySink> Members
public void OnSinkAdded(IPropertyNotifySink sink) {
_sinks.Add(sink);
}
public void OnSinkRemoved(IPropertyNotifySink sink) {
_sinks.Remove(sink);
}
#endregion
public class HierarchyListener : IVsHierarchyEvents {
private readonly IVsHierarchy _hierarchy;
private readonly uint _cookie;
private readonly OAProjectConfigurationProperties _props;
public HierarchyListener(IVsHierarchy hierarchy, OAProjectConfigurationProperties props) {
_hierarchy = hierarchy;
_props = props;
ErrorHandler.ThrowOnFailure(_hierarchy.AdviseHierarchyEvents(this, out _cookie));
}
~HierarchyListener() {
_hierarchy.UnadviseHierarchyEvents(_cookie);
}
#region IVsHierarchyEvents Members
public int OnInvalidateIcon(IntPtr hicon) {
return VSConstants.S_OK;
}
public int OnInvalidateItems(uint itemidParent) {
return VSConstants.S_OK;
}
public int OnItemAdded(uint itemidParent, uint itemidSiblingPrev, uint itemidAdded) {
return VSConstants.S_OK;
}
public int OnItemDeleted(uint itemid) {
return VSConstants.S_OK;
}
public int OnItemsAppended(uint itemidParent) {
return VSConstants.S_OK;
}
public int OnPropertyChanged(uint itemid, int propid, uint flags) {
foreach (var sink in _props._sinks) {
sink.OnChanged(propid);
}
return VSConstants.S_OK;
}
#endregion
}
}
}