/* **************************************************************************** * * 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.Diagnostics.CodeAnalysis; using System.Runtime.InteropServices; using Microsoft.VisualStudio.Shell.Interop; namespace Microsoft.VisualStudio.Project { #region structures [StructLayoutAttribute(LayoutKind.Sequential)] public struct _DROPFILES { public Int32 pFiles; public Int32 X; public Int32 Y; public Int32 fNC; public Int32 fWide; } #endregion #region enums /// /// Defines the currect state of a property page. /// [Flags] public enum PropPageStatus { Dirty = 0x1, Validate = 0x2, Clean = 0x4 } /// /// Defines the status of the command being queried /// [Flags] [SuppressMessage("Microsoft.Naming", "CA1714:FlagsEnumsShouldHavePluralNames")] [SuppressMessage("Microsoft.Design", "CA1008:EnumsShouldHaveZeroValue")] public enum QueryStatusResult { /// /// The command is not supported. /// [SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", MessageId = "NOTSUPPORTED")] NOTSUPPORTED = 0, /// /// The command is supported /// [SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", MessageId = "SUPPORTED")] SUPPORTED = 1, /// /// The command is enabled /// [SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", MessageId = "ENABLED")] ENABLED = 2, /// /// The command is toggled on /// [SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", MessageId = "LATCHED")] LATCHED = 4, /// /// The command is toggled off (the opposite of LATCHED). /// [SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", MessageId = "NINCHED")] NINCHED = 8, /// /// The command is invisible. /// [SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", MessageId = "INVISIBLE")] INVISIBLE = 16 } /// /// Defines the type of item to be added to the hierarchy. /// public enum HierarchyAddType { AddNewItem, AddExistingItem } /// /// Defines the component from which a command was issued. /// public enum CommandOrigin { [SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", MessageId = "Ui")] UiHierarchy, OleCommandTarget } /// /// Defines the current status of the build process. /// public enum MSBuildResult { /// /// The build is currently suspended. /// Suspended, /// /// The build has been restarted. /// Resumed, /// /// The build failed. /// Failed, /// /// The build was successful. /// Successful, } /// /// Defines the type of action to be taken in showing the window frame. /// public enum WindowFrameShowAction { DoNotShow, Show, ShowNoActivate, Hide, } /// /// Defines drop types /// public enum DropDataType { None, Shell, VsStg, VsRef } /// /// Used by the hierarchy node to decide which element to redraw. /// [Flags] [SuppressMessage("Microsoft.Naming", "CA1714:FlagsEnumsShouldHavePluralNames")] public enum UIHierarchyElement { None = 0, /// /// This will be translated to VSHPROPID_IconIndex /// Icon = 1, /// /// This will be translated to VSHPROPID_StateIconIndex /// [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Scc")] SccState = 2, /// /// This will be translated to VSHPROPID_Caption /// Caption = 4, /// /// This will be translated to VSHPROPID_OverlayIconIndex /// OverlayIcon = 8 } /// /// Defines the global propeties used by the msbuild project. /// public enum GlobalProperty { /// /// Property specifying that we are building inside VS. /// BuildingInsideVisualStudio, /// /// The VS installation directory. This is the same as the $(DevEnvDir) macro. /// [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Env")] DevEnvDir, /// /// The name of the solution the project is created. This is the same as the $(SolutionName) macro. /// SolutionName, /// /// The file name of the solution. This is the same as $(SolutionFileName) macro. /// SolutionFileName, /// /// The full path of the solution. This is the same as the $(SolutionPath) macro. /// SolutionPath, /// /// The directory of the solution. This is the same as the $(SolutionDir) macro. /// SolutionDir, /// /// The extension of teh directory. This is the same as the $(SolutionExt) macro. /// SolutionExt, /// /// The fxcop installation directory. /// FxCopDir, /// /// The ResolvedNonMSBuildProjectOutputs msbuild property /// [SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", MessageId = "VSIDE")] VSIDEResolvedNonMSBuildProjectOutputs, /// /// The Configuartion property. /// Configuration, /// /// The platform property. /// Platform, /// /// The RunCodeAnalysisOnce property /// RunCodeAnalysisOnce, /// /// The VisualStudioStyleErrors property /// VisualStudioStyleErrors, } #endregion public class AfterProjectFileOpenedEventArgs : EventArgs { } public class BeforeProjectFileClosedEventArgs : EventArgs { #region fields private bool _removed; private IVsHierarchy _hierarchy; #endregion #region properties /// /// true if the project was removed from the solution before the solution was closed. false if the project was removed from the solution while the solution was being closed. /// [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] public bool Removed { get { return _removed; } } public IVsHierarchy Hierarchy { get { return _hierarchy; } } #endregion #region ctor public BeforeProjectFileClosedEventArgs(IVsHierarchy hierarchy, bool removed) { this._removed = removed; _hierarchy = hierarchy; } #endregion } /// /// Argument of the event raised when a project property is changed. /// [SuppressMessage("Microsoft.Naming", "CA1710:IdentifiersShouldHaveCorrectSuffix")] public class ProjectPropertyChangedArgs : EventArgs { private string propertyName; private string oldValue; private string newValue; public ProjectPropertyChangedArgs(string propertyName, string oldValue, string newValue) { this.propertyName = propertyName; this.oldValue = oldValue; this.newValue = newValue; } public string NewValue { get { return newValue; } } public string OldValue { get { return oldValue; } } public string PropertyName { get { return propertyName; } } } /// /// This class is used for the events raised by a HierarchyNode object. /// public class HierarchyNodeEventArgs : EventArgs { private HierarchyNode child; public HierarchyNodeEventArgs(HierarchyNode child) { this.child = child; } public HierarchyNode Child { get { return this.child; } } } /// /// Event args class for triggering file change event arguments. /// public class FileChangedOnDiskEventArgs : EventArgs { #region Private fields /// /// File name that was changed on disk. /// private string fileName; /// /// The item ide of the file that has changed. /// private uint itemID; /// /// The reason the file has changed on disk. /// private _VSFILECHANGEFLAGS fileChangeFlag; #endregion /// /// Constructs a new event args. /// /// File name that was changed on disk. /// The item id of the file that was changed on disk. public FileChangedOnDiskEventArgs(string fileName, uint id, _VSFILECHANGEFLAGS flag) { this.fileName = fileName; this.itemID = id; this.fileChangeFlag = flag; } /// /// Gets the file name that was changed on disk. /// /// The file that was changed on disk. public string FileName { get { return this.fileName; } } /// /// Gets item id of the file that has changed /// /// The file that was changed on disk. public uint ItemID { get { return this.itemID; } } /// /// The reason while the file has chnaged on disk. /// /// The reason while the file has chnaged on disk. public _VSFILECHANGEFLAGS FileChangeFlag { get { return this.fileChangeFlag; } } } }